一、节点规划
主机名 (hostname) |
IP |
节点名称 (node name) |
主节点候选 (master-eligible nodes) |
数据节点 (data nodes) |
centos-node1 |
172.24.61.98 |
elastic-node1 |
true |
true |
centos-node2 |
172.24.8.14 |
elastic-node2 |
true |
true |
centos-node3 |
172.24.58.89 |
elastic-node3 |
true |
true |
二、安装部署
(一)部署第一个节点
2.1 部署OS
1、安装部署centos 7
2、设置IP
3、修改hostname、hosts文件
hosts文件中加入三个主机节点的IP与主机名映射:
172.24.61.98 centos-node1
172.24.8.14 centos-node2
172.24.58.89 centos-node3
4、修改系统配置文件
1)在/etc/sysctl.conf中添加
vm.max_map_count=655360
2)在/etc/security/limits.conf中添加
* soft nofile 655350
* hard nofile 655350
* soft nproc 102400
* soft memlock unlimited
* hard memlock unlimited
2.2 安装JVM
从官网下载并解压oracle java jdk 17.0.1版本安装压缩包文件。
2.3 安装ElasticSearch
1、从官网下载elasticsearch 7.15.1版本
wget https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.15.1-linux-x86_64.tar.gz
2、解压
以非root用户身份下载并解压安装包,elasticsearch不允许以root用户角色运行。
tar xzvf metricbeat-7.15.1-linux-x86_64.tar.gz
3、创建java运行环境软连接
在elasticsearch解压缩文件目录elasticsearch-7.15.1目录下,创建Java运行目录软连接,指向Oracle Java的解压缩文件夹。
ln -s /home/jdk-17.0.1 jdk
4、修改elasticsearch配置文件
elasticesearch配置文件elastic search.yml位于安装包解压目录下的config文件夹下。主要配置如下:
cluster.name: elastic-cluster
node.name: elastic-node1
node.master: true
node.data: true
node.attr.rack: r1
path.data: /home/yangqg/elasticsearch-7.15.1/data
path.logs: /home/yangqg/elasticsearch-7.15.1/logs
network.host: 172.24.61.98
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["172.24.61.98:9300", "172.24.8.14:9300","172.24.58.89:9300"]
cluster.initial_master_nodes: ["elastic-node1", "elastic-node2","elastic-node3"]
xpack.ml.enabled: false
2.4 将elasticsearch配置为后台服务
1、创建elasticsearch.service文件
以root用户在 /usr/lib/systemd/system/ 目录下创建 elasticsearch.service文件,内容如下:
[Unit]
Description=elasticsearch
Wants=network-online.target
After=network-online.target
[Service]
Environment=ES_HOME=/home/yangqg/elasticsearch-7.15.1
Environment=ES_PATH_CONF=/home/yangqg/elasticsearch-7.15.1/config
Environment=PID_DIR=/home/yangqg/elasticsearch-7.15.1/config
#EnvironmentFile=/etc/sysconfig/elasticsearch
WorkingDirectory=/home/yangqg/elasticsearch-7.15.1
Type=forking
User=yangqg
Group=yangqg
ExecStart=/home/yangqg/elasticsearch-7.15.1/bin/elasticsearch -d -p ${PID_DIR}/elasticsearch.pid
StandardOutput=journal
StandardError=inherit
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
2、赋权elasticsearch.service可执行权限
chmod +x /usr/lib/systemd/system/elasticsearch.service
3、重新加载systemd的守护线程
systemctl daemon-reload
4、设置为启动服务
systemctl enable elasticsearch.service
5、启动elasticsearch.service
systemctl start elasticsearch.service
6、查看elasticsearch.serivce状态
systemctl status elasticsearch.service
ps aux|grep java
(三)部署其他节点
2.5 克隆第一个节点
2.6 修改克隆节点的相关配置文件
1、修改hostname
2、修改网络配置文件的IP地址
3、修改elasticsearch配置文件elasticesearch.yml的相关配置项:
node.name
network.host
(四)启动elasticsearch集群
分别在三个节点服务器elasticsearch部署目录elasticsearch-7.15.1下,以elasticsearch安装部署用户(非root用户)运行:
./bin/elasticsearch
(五)查看集群节点运行状态
浏览器端输入:
http://172.24.61.98:9200/_cluster/state/nodes
{
"cluster_name":"elastic-cluster",
"cluster_uuid":"2RHz7OHsTP6yHFUFmZwQlA",
"nodes":
{
"gpyUqtLNQkye704NgYr9oQ":
{
"name":"elastic-node2",
"ephemeral_id":"oMxzMUmBRMaZSJ48RA-WuA",
"transport_address":"172.24.8.14:9300",
"attributes":{"rack":"r1","xpack.installed":"true","transform.node":"true"},
"roles":["data","data_cold","data_content","data_frozen","data_hot","data_warm","ingest","master","remote_cluster_client","transform"]
},
"AuXoBpWTQEii4k8bpYlibg":
{
"name":"elastic-node1",
"ephemeral_id":"5PKzbCp6RVCN9k28wXqzsw",
"transport_address":"172.24.61.98:9300",
"attributes":{"rack":"r1","xpack.installed":"true","transform.node":"true"},
"roles":["data","data_cold","data_content","data_frozen","data_hot","data_warm","ingest","master","remote_cluster_client","transform"]
},
"393jx3JGRmycD9na951aVg":
{
"name":"elastic-node3",
"ephemeral_id":"4R699B3HQeGlSw_BIvEoAQ",
"transport_address":"172.24.58.89:9300",
"attributes":{"rack":"r1","xpack.installed":"true","transform.node":"true"},
"roles":["data","data_cold","data_content","data_frozen","data_hot","data_warm","ingest","master","remote_cluster_client","transform"]
}
}
}
(六)新增一个数据节点
1、将第一个节点克隆
2、修改克隆节点服务器的hostname、IP
3、修改新节点(克隆节点)elasticsearch的配置文件内容:
cluster.name: elastic-cluster
node.name: elastic-node4
node.master: false
node.data: true
network.host: 172.24.146.115
4、删除elasticsearch部署目录下data文件夹的全部内容
5、启动新增节点的elasticsearch服务
三、客户端安装集群管理工具
Edge或Chrome浏览器,安装Elasticvue扩展。提供方:https://elasticvue.com
安装完扩展后,可通过浏览器的elasticvue扩展程序查看elasticsearch的运行状态,并可测试REST API。
四、注意事项
多个节点的集群,务必在所有节点修改完elasticsearch.yml配置文件后再启动elasticsearch服务。如若在没有完成cluster.initial_master_nodes这两个配置项前启动节点的elasticsearch服务,则节点会以开发模式(单节点模式)启动服务,并自动创建一个新的集群,其他节点无法加入这个集群,这时集群中只有一个节点。
如若你先按照开发模式启动了节点,后期希望转为生产模式的话,则需要按如下步骤操作:
1、先关闭所有节点的elasticsearch服务;
2、删除所有节点elasticsearch部署目录下data文件夹下的全部内容;
3、配置并检查cluster.initial_master_nodes,确保已正确设置集群初始化主控节点;
4、一次重启所有节点的elasticsearch服务,并检查所有节点是否加入单一的集群。
elasticsearch7.15.1版本要求CPU支持SSE4.2指令集。如若您的CPU不支持该指令集,则需要在elasticsearch.yml文件中配置xpack.ml.enabled: false项。