ES集群部署(一步一个脚印)

ES集群搭建

环境准备

本文已三个节点(服务器)为例,准备三台服务器
192.168.3.156
192.168.3.159
192.168.3.160

搭建过程

部署包下载

ES部署包下载

我下载的版本是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配置搭建集群

  1. 修改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

  1. 修改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

# elasticsearch   ES  

评论

公众号:mumuser

企鹅群:932154986

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×