Elasticsearch-8.7.1集群部署

124 阅读2分钟

单机部署

  • 解压文件
tar -zxvf elasticsearch-8.7.1-linux-x86_64.tar.gz
mv elasticsearch-8.7.1 /usr/local/share/
  • 创建用户组
groupadd elastic
  • 创建ES启动用户
    • es不能以root用户启动,单独新建一个普通用户
useradd elastic -g elastic -p elastic
  • 创建前置目录
# 数据存储目录
mkdir /var/lib/elasticsearch_data

# 日志存储目录
mkdir /var/log/elasticsearch_log

# PID目录 
mkdir /var/run/elasticsearch
  • 修改目录权限
chown -R elastic:elastic /usr/local/share/elasticsearch-8.7.1
chown -R elastic:elastic /var/lib/elasticsearch_data
chown -R elastic:elastic /var/log/elasticsearch_log
chown -R elastic:elastic /var/run/elasticsearch
  • 修改节点内存参数
echo -e "vm.max_map_count=655350 \nvm.overcommit_memory=1">>/etc/sysctl.conf 
sysctl -p
  • 修改节点limit参数
# echo -e "* soft nofile 65536 \n* hard nofile 65536 \n* soft nproc 65536 \n* hard nproc 65536 \n* hard memlock unlimited \n* soft memlock unlimited" >>/etc/security/limits.conf

  • 创建证书
    • 集群部署时,生成的证书压缩包ca.zip,需要分发到其他机器上,保证所有机器都是同一份证书
./bin/elasticsearch-certutil ca --pem --out ca.zip --days 36500 -s

# 解压
unzip ca.zip
  • 修改elasticsearch.yml配置文件
cluster.name: cluster-es
#配置各节点hostname
node.name: node-01 
path.data: /var/lib/elasticsearch_data
path.logs: /var/log/elasticsearch_log
#配置各节点IP
network.host: 0.0.0.0 
http.port: 9200
discovery.seed_hosts: ["es01", "es02","es03"]
cluster.initial_master_nodes: ["es01", "es02","es03"]
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.key: /home/elasticsearch-8.7.1/config/cert/ca/ca.key   #上一步骤生成的证书
xpack.security.transport.ssl.certificate: /home/elasticsearch-8.7.1/config/cert/ca/ca.crt
  • 节点启动
    • 测试单台机子上是否能够成功运行
# 后台运行
nohup /usr/local/share/elasticsearch-8.7.1/bin/elasticsearch >/var/log/elasticsearch_log/cluster-es.log 2>&1 &

curl -u "es用户名:es用户密码"  127.0.0.1:9200
  • 设置密码访问
    • 设置密码访问,需注意节点上es要保持启动状态
    • 集群部署时,只要其中一个节点进行该步骤即可
# 按照提示一步步生成即可,这里图方便将所有的密码都设置成一样
./bin/elasticsearch-setup-passwords interactive

ps:假如密码忘记,或者有人手欠将.security-7索引删除,可登录一个节点重置密码

# 重置密码需要指定账户 -u [用户名]
./bin/elasticsearch-reset-passwords -u elastic

服务化配置

  • 创建service文件
vim /etc/systemd/system/elasticsearch.service

service文件内容如下

[Unit]
Description=elasticsearch
After=network.target

[Service]
# data根目录
Environment="DATA_DIR=/var/lib/elasticsearch_data"
# log根目录
Environment="LOG_DIR=/var/log/elasticsearch_log"
# PID根目录
Environment="PID_DIR=/var/run/elasticsearch"
User=elastic
Group=elastic
ExecStart=/usr/local/share/elasticsearch-8.7.1/bin/elasticsearch -p ${PlD DlR)/elasticsearch.pid --quiet
ExecStop=/bin/kill -s TERM $MAINPID
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
  • 刷新elasticsearch.service配置信息
systemctl daemon-reload
  • 重启服务
systemctl restart elasticsearch.service
  • 查看节点运行状况
systemctl status elasticsearch.service
  • 设置开机自启动
systemctl enable elasticsearch.service

集群部署

参考【单机部署】【服务化配置】,我们已成功运行一个节点,在另外2台机器上重复上述安装步骤即可,以下再强调集群部署中的一些踩坑点

  • 证书需要确保每个节点均保持一直
  • 设置密码访问时,只要在其中一个节点进行即可