Elasticsearch7.5 安装

  • Post author:
  • Post category:其他


本来觉得安装ES应该是一个很轻松的事,但第一次安装ES7.5,还是遇到了一些问题,在这里记录一下,如果能帮助到一些人,也很不错了。



集群规划

因为家里有两台一样的旧电脑,放在那里没用,所有就想起来不如架一个虚拟机集群,有时间的时候练练技术,学学运维,所以两台机器都跑起来WMWareEXSI,所以这次手欠,规划了5个ES节点和一个独立的Kibana节点,因为我的那台thinkpad借给别人用去了,只好在Mac本上操作,这个效率有点差。

操作系统:CentOS Linux release 7.7.1908 (Core)

内核版本:Linux version 5.4.0-1.el7.elrepo.x86_64

机器名 IP 资格
es-node1 192.168.1.71 master
es-node2 192.168.1.72 master
es-node3 192.168.1.73 node
es-node4 192.168.1.74 node
es-node5 192.168.1.75 master
es-kibana 192.168.1.70 kibana

修改hosts文件:

192.168.1.70  es-kibana
192.168.1.71  es-node1
192.168.1.72  es-node2
192.168.1.73  es-node3
192.168.1.74  es-node4
192.168.1.75  es-node5

要说明的两点如下:

 1. Elasticsearch7 之后自带JAVA环境,不需要在CentOS里安装JAVA
 2. Elasticsearch7 之后默认安装了X-pack插件,且免费开放了基本的安全认证功能
 3. 在不同的主机上启动ES,并且绑定到固定IP,ES会认为是在生产环境上运行了

之后就是在官网下载RPM安装包:

安装包下载


下载之后拷到每台机器上执行

[root@es-node1 software]#rpm -ivh elasticsearch-7.5.0-x86_64.rpm



配置集群

主要有两个文件,第一个是

jvm.options

,第二个是

elasticsearch.yml

,rpm 方式安装的配置文件都在

/etc/elasticsearch/

目录下。

jvm.options

#主要修改内存大小,根据自己的配置来,最大到32G,超过32G会有32G现象,感兴趣可以去搜一下
-Xms4g
-Xmx4g

elasticsearch.yml,我就不全贴了,捡重要的写

#集群名称,每台机器上都要一样,才能组成一个集群
cluster.name: ES-Cluster
#节点名称,每台节点都不能一样,如果设置了机器名,也可以写${HOSTNAME},就不用每台都改一下了
node.name: es-node1
#该节点是否存储数据,生产环境主节点不建议存储数据
node.data: true
#是否有选举成为主节点的资格
node.master: true
#数据目录设置
path.data: /var/lib/elasticsearch
#日志目录设置
path.logs: /var/log/elasticsearch
#绑定网络,一定要写固定IP ,生产环境不可以用0.0.0.0,这样会绑定到所有网卡上,可能会出现安全问题
network.host: 192.168.1.71
#Http请求端口号
http.port: 9200
#群集自动发现种子节点,我就全写上了
discovery.seed_hosts: ["es-node1", "es-node2","es-node3","es-node4","es-node5"]
#这三个节点全启动了才会选举主节点
cluster.initial_master_nodes: ["es-node1", "es-node2","es-node5"]

五个节点全配置完成后就可以启动集群了,这里本来应该一帆风顺,我在写node.name的时候,写了个大写ES,

node.name: ES-node1

,结果集群怎么与组不成,后来发现

node.name

属性必须与

discovery.seed_hosts



cluster.initial_master_nodes

里面的保持一致才可以。

在所有机器上执行:

[root@es-node1 elasticsearch]#systemctl enable elasticsearch.service
[root@es-node1 elasticsearch]#systemctl start elasticsearch.service



安装Kibana

在es-kibana上安装kibana

[root@es-kibana software]#rpm -ivh kibana-7.5.0-x86_64.rpm 

修改配置文件,需要修改的不多

#绑定主机地址或主机名
server.host: "es-kibana"
#服务名
server.name: "es-kibana"
#ES集群地址
elasticsearch.hosts: ["http://es-node1:9200"]

启动 kibana:

[root@es-kibana kibana]#systemctl enable kibana.service
[root@es-kibana kibana]#systemctl start kibana.service

Kibana启动图

但点开stack monitoring,监控并未设置,开始设置时提示在生产环境需要配置安全选项。



启用X-pack安全



生成证书

因为我们使用的一个集群,还是生产模式,所以开启安全模块后,也要开启节点间通讯的安全配置,节点间的安全通讯需要数字证书,以下命令创建数据证书

[root@es-node1 elasticsearch]#bin/elasticsearch-certutil ca
[root@es-node1 elasticsearch]#bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

证书会生成在当前目录下,我们把证书文件拷贝到每个节点

/etc/ealsticsearch/

目录下。



修改配置文件

最后修改elasticsearch.yml,增加以下部分内容,重启所有节点

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /etc/elasticsearch/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /etc/elasticsearch/elastic-certificates.p12



设置密码

Elastic stack 有一组内置用户,帮助我们启动和运行系统,这些用户在设置账号密码之前不可被使用,设置密码有两种方式,我在配置过程中使用了第二种,每个用户的密码都使用了

123qwe

#第一种:自动生成,执行命令后会把自动生成的密码输出到控制台
[root@es-node1 elasticsearch]#bin/elasticsearch-setup-passwords auto
#第二种:交互式输入,自己随意输入每个用户的密码,
[root@es-node1 elasticsearch]#bin/elasticsearch-setup-passwords interactive



修改Kibana密码设置

修改Kibana配置文件

/etc/kibana/kibana.yml

elasticsearch.username: "elastic"
elasticsearch.password: "123qwe"

重新启动Kibana后需要输入用户名和密码就可以访问了。



启用集群监控

最后,我这再开启监控,在这里我们不再使用配置的方式,打开Kibana的开发工具页面输入以下命令:

# 设置开启收集监控信息
PUT _cluster/settings
{
  "persistent": {
    "xpack.monitoring.collection.enabled": true
  }
}

如下图所示:

Kibana开发工具页面

然后我们就可以看到以下各种监控信息了

ES集群监控信息

好了,后续就可以开始使用了,如果有从文件导入日志的需求请参考我的另一篇实记:


导入CDN日志到Elasticsearch

#快速用容器启动测试Elasticsearch7.5

Docker的安装我在这里就不讲了,记住这两条命令就OK了

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.5.0
docker run --link YOUR_ELASTICSEARCH_CONTAINER_NAME_OR_ID:elasticsearch -p 5601:5601 docker.elastic.co/kibana/kibana:7.5.0

9300是集群节点指点的tcp通讯端口,

9200是http协议的web客户端RESTful端口

discovery.type=single-node 表示使用单个节点,用来跳过ES启动引导检查

link 参数连接本地容器



版权声明:本文为jinhong618原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。