本文档记录了在 3 节点集群上安装、配置和验证 Elasticsearch 的步骤。
集群详情
- 集群名称:
vodjk-search
- 节点:
vodjk-node-1
(192.168.140.157)vodjk-node-2
(192.168.140.158)vodjk-node-3
(192.168.140.159)
- Elasticsearch 版本: 8.16.1
- 系统配置: 每节点 4 核 CPU,8GB 内存
- 数据目录:
/data/elasticsearch/data
- 日志目录:
/data/elasticsearch/logs
安装步骤
1. 下载并解压 Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.16.1-linux-x86_64.tar.gz
tar -xzf elasticsearch-8.16.1-linux-x86_64.tar.gz
sudo mv elasticsearch-8.16.1 /usr/local/elasticsearch-8.16.1
sudo ln -s /usr/local/elasticsearch-8.16.1 /usr/local/elasticsearch
2. 创建 Elasticsearch 用户和目录
sudo useradd -r -m -d /data/elasticsearch -s /sbin/nologin elasticsearch
sudo mkdir -p /data/elasticsearch/data /data/elasticsearch/logs
sudo chown -R elasticsearch:elasticsearch /usr/local/elasticsearch* /data/elasticsearch
sudo chmod -R 755 /data/elasticsearch
3. 设置系统参数
-
编辑
/etc/security/limits.conf
:elasticsearch soft nofile 65536 elasticsearch hard nofile 65536 elasticsearch soft memlock unlimited elasticsearch hard memlock unlimited
-
编辑
/etc/sysctl.conf
:vm.max_map_count=262144
应用修改:
sudo sysctl -p
4. 配置 Elasticsearch
编辑每个节点的 /usr/local/elasticsearch/config/elasticsearch.yml
:
cluster.name: vodjk-search
node.name: vodjk-node-1 # 对于其他节点,改为 vodjk-node-2 和 vodjk-node-3
node.roles: [master, data]
network.host: 192.168.140.157 # 每个节点更改为对应 IP
http.port: 9200
discovery.seed_hosts: ["192.168.140.157", "192.168.140.158", "192.168.140.159"]
cluster.initial_master_nodes: ["vodjk-node-1", "vodjk-node-2", "vodjk-node-3"]
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
xpack.security.enabled: false
5. 设置环境变量
创建 /etc/profile.d/elasticsearch.sh
:
export PATH=$PATH:/usr/local/elasticsearch/bin
应用修改:
source /etc/profile.d/elasticsearch.sh
6. 创建 systemd 服务
创建 /etc/systemd/system/elasticsearch.service
:
[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/usr/local/elasticsearch
ExecStart=/usr/local/elasticsearch/bin/elasticsearch -d -p /var/run/elasticsearch/elasticsearch.pid
Environment=JAVA_HOME=/usr/lib/jvm/java-17-openjdk
LimitNOFILE=65536
LimitMEMLOCK=infinity
TimeoutStartSec=600
TimeoutStopSec=600
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
User=elasticsearch
Group=elasticsearch
[Install]
WantedBy=multi-user.target
重新加载并启用服务:
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
7. 启动 Elasticsearch
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch
验证
-
检查集群健康状态:
curl -X GET http://localhost:9200/_cluster/health?pretty
期望输出:
{ "cluster_name": "vodjk-search", "status": "green", "number_of_nodes": 3, "number_of_data_nodes": 3 }
-
查看节点列表:
curl -X GET http://localhost:9200/_cat/nodes?v
期望输出:
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 192.168.140.157 20 60 2 0.10 0.15 0.20 dm * vodjk-node-1 192.168.140.158 15 65 3 0.05 0.10 0.15 dm - vodjk-node-2 192.168.140.159 10 50 1 0.01 0.02 0.03 dm - vodjk-node-3
-
测试索引创建:
curl -X PUT "http://localhost:9200/test_index?pretty"
-
查看日志:
sudo journalctl -u elasticsearch -f
总结
Elasticsearch 已成功在 3 节点集群上安装并配置。所有节点运行正常,集群健康状态为 green
。