1.主机信息
name | ip | port | serivce |
A | 10.1.60.114 | 9200,9300 | elasticsearch |
B | 10.1.60.115 | 9200,9300 | elasticsearch |
C | 10.1.60.118 | 9200,9300 | elasticsearch |
2.基础环境配置
每台主机都要执行一遍以下配置
jdk环境配置
elasticsearch使用的是7.17.10版本,需要配置jdk 11版本以上的环境
参考:jdk1.8环境配置_Apex Predator的博客-CSDN博客
优化主机,必须要优化,不优化的话elasticsearch集群不能正常启动
内核优化
vi /etc/security/limits.conf
* soft nofile 65537
* soft nproc 65537
* soft memlock unlimited #配置内存锁,配置集群必须添加,单节点不加
* hard nofile 65537
* hard nproc 65537
* hard memlock unlimited #配置内存锁,配置集群必须添加,单节点不加
vi /etc/security/limits.d/20-nproc.conf
* soft nproc 4096 #变更soft nproc项值为4096
vi /etc/sysctl.conf
vm.max_map_count = 262144 #用于设置每个进程能够拥有的最大内存映射区域数量,这个参数通常用于支持 Elasticsearch、Logstash 等应用程序,如果这些应用程序需要使用大量内存映射区域,就需要增加这个参数的值
net.core.somaxconn = 65535 #于设置系统中每个监听套接字的最大连接数。这个参数通常用于支持高并发的网络应用程序,例如 Web 服务器。增加这个参数的值可以提高系统的并发性能
net.ipv4.ip_forward = 1 #用于启用 IP 转发功能,允许系统作为路由器转发数据包。这个参数通常用于构建复杂的网络拓扑,例如 VPN 网络
执行以下命令使配置生效
sysctl -p
3.安装elasticsearch
每台主机都要执行一遍以下配置
在官网下载elasticsearch的安装包,本次搭建选择了7.17.10版本
下载连接:Past Releases of Elastic Stack Software | Elastic
新建目录,将安装包上传到主机中并解压更改名称
mkdir /opt/elasticsearch
cd /opt/elasticsearch
tar -zxvf elasticsearch-7.17.10-linux-x86_64.tar.gz
mv elasticsearch-7.17.10-linux-x86_64 elasticsearch
ls /opt/elasticsearch
编辑elasticsearch配置文件
vi /opt/elasticsearch/elasticsearch/config/elasticsearch.yml
cluster.name: es-cluster #集群名称
node.name: es01 #该节点名称
node.master: true #配置本节点具备master功能,若不需要则配置为flase,默认节点是具备此功能,配置文件里默认没有此项配置
node.data: true #配置本节点具备data功能,若不需要则配置为flase,默认节点是具备此功能,配置文件里默认没有此项配置
path.data: /opt/elasticsearch/elasticsearch/data #配置elasticsearch存储数据路径
path.logs: /opt/elasticsearch/elasticsearch/log #配置elasticsearch存储日志路径
bootstrap.memory_lock: true #配置内存锁
network.host: 10.1.60.115 #配置节点地址
http.port: 9200 #配置elasticsearch服务端口
discovery.seed_hosts: ["10.1.60.114", "10.1.60.115","10.1.60.118"] #配置集群所有节点地址
cluster.initial_master_nodes: ["es01", "es02","es03"] #配置集群所有节点名称
每台主机的配置文件node.name项不能相同,network.host根据自己的主机实际地址填写,其余的配置都一样
创建elasticsearch服务的用户,elasticsearch服务不能使用root启动,不然会报错
groupadd elasticsearch
useradd elasticsearch -g elasticsearch -p elasticsearch #-g指定用户组 -p指定密码
chown -R elasticsearch.elasticsearch /opt/elasticsearch/elasticsearch
切换用户启动es服务
su elasticsearch
/opt/elasticsearch/elasticsearch/bin/elasticsearch -d #-d为后台启动es服务
访问es服务看是否正常
看到以上输出即正常
当所有节点的elasticsearch服务都启动后在网页上访问以下地址查看集群
http://10.1.60.114:9200/_cluster/state/master_node,nodes?pretty
可以看到集群已经识别到了三个节点
也可以使用elasticsearch head应用查看集群
4.集群试验
通过kill关闭elasticsearch服务,模拟主节点宕机,查看集群是否重新选主,分片是否重新均衡分配
ps -ef |grep elasticsearch
kill 6388
通过elasticsearch head查看es集群状态
可以看到集群的状态变成了yellow,集群先是自动在从节点中选新的主节点,挂掉的主分片也在副本分片中重新选主,但是分片还没有重新均衡分配,在挂掉的主节点上的分片也还没重新分配到新的节点上
等一会之后,大概十多秒,重新刷新页面,所有索引分片重新均衡分配在存活的节点上,但是对于索引分片数量大于存活节点数量的,多余的分片就没办法分配,除非有新节点加入
重新启动被关闭的节点
su elasticsearch
/opt/elasticsearch/elasticsearch/bin/elasticsearch -d
通过elasticsearch head查看es集群状态
可以看到启动后,节点在es集群中的状态恢复了正常,但是分片还没有重新均衡分配