CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

时间:2024-04-10 14:07:38

Elasticsearch版本: 6.8.1

系统版本: CentOS 7.7.1908

 

出于安全设置的考虑, ES默认是不允许以root用户启动的. 所以要为ES添加一个用户. 首先以root用户登录

 

新建用户组elastic

groupadd elastic

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

新建用户elastic, 指定用户组为elastic, 并且设置不能登录nologin

useradd -g elastic elastic -s /sbin/nologin

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

将elasticsearch6.8.1安装包复制到/opt/目录下. 本次用的是VMware虚拟机, 通过共享文件夹的方式实现主机与客户机文件访问. 共享文件夹挂载目录为/mnt/hgfs/Share/

cd /mnt/hgfs/Share/

cp elasticsearch-6.8.1.tar.gz /opt/

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

进入/opt/目录, 解压安装包

cd /opt/

tar -xzf elasticsearch-6.8.1.tar.gz

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

更改elasticsearch-6.8.1目录及文件所属用户为elastic

chown -R elastic:elastic elasticsearch-6.8.1

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

进入elasticsearch-6.8.1/bin/目录, 以elastic用户启动elasticsearch. 但是刚才我们创建用户的时候设置该用户禁止登录, 所以就不能先将当前会话切换为elastic再运行启动脚本.

使用sudo -u [用户名] [命令]的方式以另一用户身份执行命令

cd elasticsearch-6.8.1/bin/

sudo -u elastic ./elasticsearch

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

如果要作为后台服务启动, 命令为:

sudo -u elastic ./elasticsearch -d

 

本地crul测试是否启动成功

curl 127.0.0.1:9200

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

配置外网访问

修改elasticsearch.yml配置文件, 位于/opt/elasticsearch-6.8.1/config/目录下. 编辑文件以elastic用户身份操作

cd /opt/elasticsearch-6.8.1/config/

sudo -u elastic vi elasticsearch.yml

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

以**释掉的两行释放, network.host改为0.0.0.0

http.port为默认访问端口, 如果不需要可以不修改

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

启动方法不变, 但这个时候启动会报错中断

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

修改以下两处地方:

1. 设置vm.max_map_count值, 以root用户执行(重启会失效)

sysctl -w vm.max_map_count=262144

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

永久的解决办法, 是在配置文件/etc/sysctl.conf中加一行

vi /etc/sysctl.conf

vm.max_map_count=262144

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

2. 编辑/etc/security/limits.conf, 以root用户操作

vi /etc/security/limits.conf

 

文件最后, 结尾注释前添加一行, 保存退出

elastic - nofile  65535

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

这时已经可以正常启动, curl 127.0.0.1:9200也可以正常访问, 说明启动成功

 

将9200端口添加防火墙, 允许通过

firewall-cmd --zone=public --add-port=9200/tcp --permanent

添加后重启一下防火墙

firewall-cmd --reload

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

查询端口是否已经保存

firewall-cmd --list-ports

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

浏览器地址栏访问下面URL, 已经可以正常访问

http://192.168.23.134:9200/?pretty

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

配置集群模式

以其中一台机器为例, 配置完成后再以同样方式安装或配置其他参与组建集群的机器.

 

编辑elasticsearch.yml

cd /opt/elasticsearch-6.8.1/config/

sudo -u elastic vi elasticsearch.yml

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

Cluster一栏, cluster.name为集群名称, 参与组建集群的ES名称相同即可, 才能加入同一集群中. 这里随便起个名就叫elasticsearch

 

node.name为该节点名称, 同一集群中的每个节点名称不能与其他节点相同. 这里以node-0, node-1, node-N…顺序排下去

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

Discovery一栏, discovery.zen.ping.unicast.hosts为集群中机器IP列表, 这里三台机器IP分别为: 192.168.23.134-136

discovery.zen.ping.unicast.hosts: ["192.168.23.134", "192.168.23.136", "192.168.23.135"]

 

discovery.zen.minimum_master_nodes为最少主节点数量. 这里只要1个Master节点即可, 所以填1

discovery.zen.minimum_master_nodes: 1

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

修改以上几项保存退出编辑

 

删除原有节点数据

如果是先在一台机器安装ES再进行复制实现集群(比如本次就是, 在虚拟机中配置完成后再进行复制组建集群), 并且安装完成后又进行过启动测试, es安装目录下data目录会存储旧的节点数据, 修改配置后启动加入集群时大概率会报错:

found existing node with the same id but is a different node instance

所以需要将该目录下的数据删除

 

cd /opt/elasticsearch-6.8.1/data/

rm -rf nodes/

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式

 

分别启动三个节点, 启动完成后访问其一个节点

http://192.168.23.134:9200/_cat/nodes?v

三个节点可以正常显示. 其中134节点为Master节点

CentOS 7安装ElasticSearch 6.8.1, 配置集群模式