ES集群搭建
环境准备
本文已三个节点(服务器)为例,准备三台服务器
192.168.3.156
192.168.3.159
192.168.3.160
搭建过程
部署包下载
我下载的版本是elasticsearch-7-17-18
上传解压
注意部署包需要修改配置,所以配置完成后通过SCP复制到其他环境。
[root@i-40B9FE39 opt]# tar -xvzf elasticsearch-7.17.18-linux-x86_64.tar.gz
创建用户并授权
ES不允许使用root用户启动,所以需要创建单独得用户(所有节点都需要执行)
useradd es
# 会提示输入密码,如果密码包含用户名,需要输入两次确认
passwd es
# 授权ES部署包给创建得用户
chown -R es.es /opt/elasticsearch-7.17.18/
chmod -R 777 /opt/elasticsearch-7.17.18/
修改服务器文件句柄配置
注意星号需要带上。
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
修改虚拟内存空间,默认太小
# 在配置文件中改配置 最后一行上加上,执行 sysctl -p(立即生效)
vim /etc/sysctl.conf
vm.max_map_count=262144
搭建集群
准备环境都处理好后,修改ES配置搭建集群
- 修改elasticsearch配置
vim /opt/elasticsearch-7.17.18/config/elasticsearch.yml
修改后得内容如下:
#集群名称
cluster.name: es-cluster
#节点名称, 每个节点的名称不能重复 ,三台机器保持不一样
node.name: node-1
#ip 地址,填入每个节点的ip,填写三台机器的ip
network.host: 192.168.3.156
#是不是有资格主节点
node.master: true
node.data: true
# 设置对外服务的http端口,默认为9200
http.port: 9200
# 设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9300
# head 插件需要这打开这两个配置
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
#ES7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
#ES7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["192.168.3.156:9300","192.168.3.159:9300","192.168.3.160:9300"]
#集群内同时启动的数据任务个数,默认是 2 个
cluster.routing.allocation.cluster_concurrent_rebalance: 16
#添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个
cluster.routing.allocation.node_concurrent_recoveries: 16
#初始化数据恢复时,并发恢复线程的个数,默认 4 个
cluster.routing.allocation.node_initial_primaries_recoveries: 16
- 修改jvm配置
vim /opt/elasticsearch-7.17.18/config/jvm.options
#这两个必须保持一致,否则会报错,生产环境中默认建议16-28G
-Xms24g
-Xmx24g
ES部署包修改完成后,可以通过SCP将部署包复制到各集群节点。注意复制完成后需要修改以下内容:
#节点名称, 每个节点的名称不能重复 ,三台机器保持不一样
node.name: node-1
#ip 地址,填入每个节点的ip,填写三台机器的ip
network.host: 192.168.3.156
复制完成后注意需要授权
创建服务
新增文件
vim /usr/lib/systemd/system/elasticsearch.service
#文件内容如下,注意User需要用刚创建得用户
[Unit]
Description=elasticsearch
After=network.target
[Service]
Type=forking
User=es
ExecStart=/opt/elasticsearch-7.17.18/bin/elasticsearch -d
PrivateTmp=true
# 指定此进程可以打开的最大文件数
LimitNOFILE=65535
# 指定此进程可以打开的最大进程数
LimitNPROC=65535
# 最大虚拟内存
LimitAS=infinity
# 最大文件大小
LimitFSIZE=infinity
# 超时设置 0-永不超时
TimeoutStopSec=0
# SIGTERM是停止java进程的信号
KillSignal=SIGTERM
# 信号只发送给给JVM
KillMode=process
# java进程不会被杀掉
SendSIGKILL=no
# 正常退出状态
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
# 设置开机启动
systemctl enable elasticsearch.service
# 启动服务
systemctl start elasticsearch
服务校验
#查看集群健康情况
http://192.168.3.156:9200/_cluster/health
#集群状态说明
#green:所有的主分片和副本分片都正常运行。
#yellow:所有的主分片都正常运行,但有部分副本分片运行不正常。
#red:主分片没能正常运行
#查看分片情况
http://192.168.3.156:9200/_cat/shards?v=true&pretty
#查看节点分布情况
http://192.168.3.156:9200/_cat/nodES?v=true&pretty
#查看索引列表
http://192.168.3.156:9200/_cat/indicES?v=true&pretty
参考资料
ES教程(全,推荐):http://t.csdnimg.cn/25vRE
ES常见命令:https://www.cnblogs.com/wangcuican/p/13896973.html(结合JSON在线:https://www.sojson.com/)
ES与MySQL的比较(熟记):https://www.cnblogs.com/hahaha111122222/p/12876227.html
ww.cnblogs.com/wangcuican/p/13896973.html(结合JSON在线:https://www.sojson.com/)
ES与MySQL的比较(熟记):https://www.cnblogs.com/hahaha111122222/p/12876227.html