Elasticsearch集群部署

245 阅读3分钟

前期准备

在三台服务器上部署elasticsearch集群

1.从Elastic官网下载Elasticsearch的二进制包

2.解压下载压缩包

集群节点解压下载的 .tar.gz 文件:

 tar -zxf elasticsearch-8.12.2-linux-aarch64.tar.gz

配置文件设置

1.进入配置目录

修改配置文件,每个节点都需要配置

cd  elasticsearch-8.12.2/ config

2.修改配置文件 elasticsearch.yml 编辑 elasticsearch.yml 配置文件,设置集群相关的参数:

cluster.name: yangjiang-application
node.name: es-node-1
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["172.23.35.14", "172.23.35.65","172.23.35.147"]
cluster.initial_master_nodes: ["es-node-1", "es-node-2","es-node-3"]
xpack.security.enabled: false

配置说明:

  • cluster.name:集群名称,确保所有节点配置一致
  • node.name:节点名称,确保每个节点名称唯一
  • network.host:设置绑定的 IP 地址,0.0.0.0 允许所有接口
  • discovery.seed_hosts:配置集群节点 IP 地址,用于集群发现
  • cluster.initial_master_nodes:配置初始主节点,用于新集群的启动
  • xpack.security.enabled:禁用安全功能,适用于测试环境

3.修改 JVM 参数 根据服务器实际情况调整 jvm.options 文件

-Xms8g
-Xmx8g

4.添加 Hosts 解析记录 确保节点能够正确解析:

#在配置文件elasticsearch.yml中,我们设置了cluster.initial_master_nodes,这里设置的主节点需要能被解析,所以在hosts中添加解析记录
# 在各节点的 /etc/hosts 文件中添加解析记录
172.23.35.14 es-node-1
172.23.35.65 es-node-2
172.23.35.147 es-node-3

配置 Systemd 服务

1.编辑 systemd 配置文件 创建并编辑 Elasticsearch 的 systemd 服务文件:

vim /etc/systemd/system/elasticsearch.service 

2.配置文件内容如下

[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co
After=network.target
​
[Service]
# 使用elasticsearch用户和组运行
User=elastic
Group=elastic
​
# 设置环境变量
Environment=ES_HOME=/app/elasticsearch-8.12.2
Environment=ES_PATH_CONF=/app/elasticsearch-8.12.2/config
​
# 启动Elasticsearch命令
ExecStart=/app/elasticsearch-8.12.2/bin/elasticsearch
​
# 启动时需要等待Elasticsearch完全启动
TimeoutStartSec=75# 让Elasticsearch作为后台进程运行
StandardOutput=journal
StandardError=journal
Restart=always
​
# 限制内存资源,LimitNPROC线程数量尽量不要低于2048
LimitMEMLOCK=infinity
LimitNOFILE=65536
LimitNPROC=8192[Install]
WantedBy=multi-user.target

3.创建用户并授权

创建systemd配置文件中指定的用户,Elasticsearch 8.x不允许以root用户运行

useradd elastic
chown -R elastic:elastic /app/elasticsearch-8.12.2

4.启动 Elasticsearch 每台节点执行以下命令:

systemctl daemon-reload  # 重新加载 systemd 配置
systemctl start elasticsearch  # 启动 Elasticsearch
systemctl enable elasticsearch  # 设置 Elasticsearch 开机自启

验证集群

1.检查集群状态

curl -X GET "http://es-node-1:9200/_cluster/health?pretty"

返回结果中,status: green 表示集群正常。

image.png

2.检查集群节点版本

使用 _cat/nodes API 检查所有节点的版本,确保一致性:

curl -X GET "http://<node-ip>:9200/_cat/nodes?v&h=name,version"

image.png

3.创建索引

创建一个名为 test_index 的索引:

curl -X PUT "http://es-node-1:9200/test_index"

4.插入数据

插入一条测试文档:

curl -X POST "http://es-node-1:9200/test_index/_doc" -H 'Content-Type: application/json' -d'
{
  "title": "Test document",
  "content": "This is a test document."
}
'

5.检查索引状态

查看当前集群中的索引:

curl -X GET "http://es-node-1:9200/_cat/indices?v"

image.png

注意事项

  • 在生产环境中,建议配置 专用主节点专用数据节点,以提升集群稳定性。
  • 可以根据需要调整 jvm.optionselasticsearch.yml 中的资源配置。
  • 确保防火墙和安全组设置允许节点间的通信,特别是集群发现和主节点通信的端口(默认9200和9300)