Elasticsearch版本: 6.8.1
系统版本: CentOS 7.7.1908
出于安全设置的考虑, ES默认是不允许以root用户启动的. 所以要为ES添加一个用户. 首先以root用户登录
新建用户组elastic
groupadd elastic
新建用户elastic, 指定用户组为elastic, 并且设置不能登录nologin
useradd -g elastic elastic -s /sbin/nologin
将elasticsearch6.8.1安装包复制到/opt/目录下. 本次用的是VMware虚拟机, 通过共享文件夹的方式实现主机与客户机文件访问. 共享文件夹挂载目录为/mnt/hgfs/Share/
cd /mnt/hgfs/Share/
cp elasticsearch-6.8.1.tar.gz /opt/
进入/opt/目录, 解压安装包
cd /opt/
tar -xzf elasticsearch-6.8.1.tar.gz
更改elasticsearch-6.8.1目录及文件所属用户为elastic
chown -R elastic:elastic elasticsearch-6.8.1
进入elasticsearch-6.8.1/bin/目录, 以elastic用户启动elasticsearch. 但是刚才我们创建用户的时候设置该用户禁止登录, 所以就不能先将当前会话切换为elastic再运行启动脚本.
使用sudo -u [用户名] [命令]的方式以另一用户身份执行命令
cd elasticsearch-6.8.1/bin/
sudo -u elastic ./elasticsearch
如果要作为后台服务启动, 命令为:
sudo -u elastic ./elasticsearch -d
本地crul测试是否启动成功
curl 127.0.0.1:9200
配置外网访问
修改elasticsearch.yml配置文件, 位于/opt/elasticsearch-6.8.1/config/目录下. 编辑文件以elastic用户身份操作
cd /opt/elasticsearch-6.8.1/config/
sudo -u elastic vi elasticsearch.yml
以**释掉的两行释放, network.host改为0.0.0.0
http.port为默认访问端口, 如果不需要可以不修改
启动方法不变, 但这个时候启动会报错中断
修改以下两处地方:
1. 设置vm.max_map_count值, 以root用户执行(重启会失效)
sysctl -w vm.max_map_count=262144
永久的解决办法, 是在配置文件/etc/sysctl.conf中加一行
vi /etc/sysctl.conf
vm.max_map_count=262144
2. 编辑/etc/security/limits.conf, 以root用户操作
vi /etc/security/limits.conf
文件最后, 结尾注释前添加一行, 保存退出
elastic - nofile 65535
这时已经可以正常启动, curl 127.0.0.1:9200也可以正常访问, 说明启动成功
将9200端口添加防火墙, 允许通过
firewall-cmd --zone=public --add-port=9200/tcp --permanent
添加后重启一下防火墙
firewall-cmd --reload
查询端口是否已经保存
firewall-cmd --list-ports
浏览器地址栏访问下面URL, 已经可以正常访问
http://192.168.23.134:9200/?pretty
配置集群模式
以其中一台机器为例, 配置完成后再以同样方式安装或配置其他参与组建集群的机器.
编辑elasticsearch.yml
cd /opt/elasticsearch-6.8.1/config/
sudo -u elastic vi elasticsearch.yml
Cluster一栏, cluster.name为集群名称, 参与组建集群的ES名称相同即可, 才能加入同一集群中. 这里随便起个名就叫elasticsearch
node.name为该节点名称, 同一集群中的每个节点名称不能与其他节点相同. 这里以node-0, node-1, node-N…顺序排下去
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
修改以上几项保存退出编辑
删除原有节点数据
如果是先在一台机器安装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/
分别启动三个节点, 启动完成后访问其一个节点
http://192.168.23.134:9200/_cat/nodes?v
三个节点可以正常显示. 其中134节点为Master节点