前期准备
在三台服务器上部署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 表示集群正常。
2.检查集群节点版本
使用 _cat/nodes API 检查所有节点的版本,确保一致性:
curl -X GET "http://<node-ip>:9200/_cat/nodes?v&h=name,version"
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"
注意事项
- 在生产环境中,建议配置 专用主节点 和 专用数据节点,以提升集群稳定性。
- 可以根据需要调整
jvm.options和elasticsearch.yml中的资源配置。 - 确保防火墙和安全组设置允许节点间的通信,特别是集群发现和主节点通信的端口(默认9200和9300)