续我的上篇博文:https://mp.csdn.net/postedit/89330809。即Head插件已经安装部署好;
和我的上上篇博文:https://mp.csdn.net/postedit/8932206。即ElasticSearch单节点已经安装部署好。
1、selinux和firewalld状态为disabled
2、各主机信息如下:
主机 | ip |
---|---|
server1(es节点1),内存至少2G | 172.25.83.1 |
server2(es节点2),内存至少2G | 172.25.83.2 |
server1(es节点3),内存至少2G | 172.25.83.3 |
配置server1:
上上篇博文已经配置好
只需编辑elasticsearch的主配置文件/etc/elasticsearch/elasticsearch.yml设置集群中master节点的初始列表,即可。
[root@server1 ~]# vim /etc/elasticsearch/elasticsearch.yml
72 discovery.zen.ping.unicast.hosts: ["server1", "server2", "server3"]
[root@server1 ~]# systemctl restart elasticsearch.service
配置server2和server3:配置方法同server1,只需将server1配置过程中关于server1的内容替换为server2和server3的即可。
1、下载ElasticSearch所需的软件包(elasticsearch-6.6.1.rpm),及其依赖的jdk包(jdk-8u181-linux-x64.rpm),并进行安装
[root@server1 ~]# scp elasticsearch-6.6.1.rpm jdk-8u181-linux-x64.rpm server2:
[root@server2 ~]# ls
elasticsearch-6.6.1.rpm jdk-8u181-linux-x64.rpm
[root@server2 ~]# rpm -ivh jdk-8u181-linux-x64.rpm
[root@server2 ~]# rpm -ivh elasticsearch-6.6.1.rpm
#server3端的安装同server2端
搭建集群,最好保证每个节点的环境相同。因为安装完elasticsearch软件之后,会自动生成elasticsearch用户。所以这里要保证每个节点(这里是server1,server2和server3)上的elasticsearch用户的uid和gid相同。如何不一致,则需要进行调整,使其一致
server1端
[root@server1 ~]# id elasticsearch
uid=997(elasticsearch) gid=995(elasticsearch) groups=995(elasticsearch)
server2端
[root@server2 ~]# id elasticsearch
uid=997(elasticsearch) gid=995(elasticsearch) groups=995(elasticsearch)
server3端
[root@server3 ~]# id elasticsearch
uid=997(elasticsearch) gid=995(elasticsearch) groups=995(elasticsearch)
2、编辑elasticsearch的主配置文件/etc/elasticsearch/elasticsearch.yml
配置server2
[root@server1 ~]# scp /etc/elasticsearch/elasticsearch.yml server2:/etc/elasticsearch/
[root@server2 ~]# vim /etc/elasticsearch/elasticsearch.yml #只需将其中关于server1的内容替换为server2的即可
23 node.name: server2
55 network.host: 172.25.83.2
配置server3
[root@server1 ~]# scp /etc/elasticsearch/elasticsearch.yml server3:/etc/elasticsearch/
[root@server3 ~]# vim /etc/elasticsearch/elasticsearch.yml #只需将其中关于server1的内容替换为server3的即可
23 node.name: server3
55 network.host: 172.25.83.3
3、编辑/etc/security/limits.conf和elasticsearch服务的启动脚本(/usr/lib/systemd/system/elasticsearch.service)
[root@server1 ~]# scp /etc/security/limits.conf server2:/etc/security/
[root@server1 ~]# scp /usr/lib/systemd/system/elasticsearch.service server2:/usr/lib/systemd/system/elasticsearch.service
#server3端同server2端
4、启动elasticsearch服务,并查看该服务对应的9200端口是否已经打开
[root@server2 ~]# systemctl start elasticsearch
[root@server2 ~]# netstat -antulpe | grep 9200
tcp6 0 0 172.25.83.2:9200 :::* LISTEN 997 25212 2543/java
#server3端同server2端
5、测试,确保ElasticSearch集群部署成功
测试一:访问web界面
刷新web界面
从上图我们可以看到之前是黄色的集群健康值,变成了绿色。因为现在有3个节点,满足副本数为1的要求,所以变成了绿色。
同时从上图我们可以看到server1是master节点(前面的标志不同于server2和server3,标志是“星星”)
测试二:查看集群中节点的健康状态(目前有三个节点),以及集群中的节点个数(目前有三个节点)
[root@server1 ~]# curl -XGET http://172.25.83.1:9200/_cat/health?v
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1555405577 09:06:17 my-es green 3 3 10 5 0 0 0 0 - 100.0%
[root@server1 ~]# curl -XGET http://172.25.83.1:9200/_cat/health
1555405579 09:06:19 my-es green 3 3 10 5 0 0 0 0 - 100.0%
[root@server1 ~]# curl -XGET http://172.25.83.1:9200/_cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.25.83.2 10 96 1 0.03 0.07 0.07 mdi - server2
172.25.83.1 15 96 0 0.00 0.01 0.05 mdi * server1
172.25.83.3 14 93 0 0.00 0.07 0.06 mdi - server3
[root@server1 ~]# curl -XGET http://172.25.83.1:9200/_cat/nodes
172.25.83.2 10 96 0 0.03 0.07 0.07 mdi - server2
172.25.83.1 15 96 1 0.00 0.01 0.05 mdi * server1
172.25.83.3 14 93 0 0.00 0.07 0.06 mdi - server3
下面我们测试当集群中的某个节点down掉之后,会不会实现master的自动迁移
[root@server1 ~]# systemctl stop elasticsearch.service
刷新web界面
将其中的地址改为http://172.25.83.2:9200或http://172.25.83.3:9200
从上图我们可以看到之前是绿色的集群健康值,变成了黄色。server1节点down掉之后,导致某些分片丢失,所以变成了黄色。
同时从上图我们可以看到server2是master节点(前面的标志不同于erver3,标志是“星星”)
此时重新启动server1节点,master节点也不会回切,即server2节点仍为master节点
[root@server1 ~]# systemctl start elasticsearch.service
刷新web界面
从上图我们可以看到之前是黄色的集群健康值,变成了绿色。server1节点又重新启动了,丢失的分片也找回来了,所以变成了绿色。
同时从上图我们可以看到server2是master节点(前面的标志不同于server1和erver3,标志是“星星”)
如果我们想让server1只做master节点,server2和server3只做存储节点,该怎么做呢?
配置server1
[root@server1 ~]# vim /etc/elasticsearch/elasticsearch.yml #在里面添加如下的内容
25 node.master: true
26 node.data: false
[root@server1 ~]# systemctl restart elasticsearch.service
配置server2
[root@server2 ~]# vim /etc/elasticsearch/elasticsearch.yml #在里面添加如下的内容
25 node.master: false
26 node.data: true
[root@server2 ~]# systemctl restart elasticsearch.service
配置server3
[root@server3 ~]# vim /etc/elasticsearch/elasticsearch.yml #在里面添加如下的内容
25 node.master: false
26 node.data: true
[root@server3 ~]# systemctl restart elasticsearch.service
刷新web界面
从上图中,我们可以看到,只有server2和server3端存储有数据,server1端没有存储数据。这表明配置成功。