Elasticsearch(ES)集群的搭建

基础环境

服务器A IP:192.168.7.111
服务器B IP:192.168.7.112
服务器C IP:192.168.7.113

三台服务器都已安装单点的 Elasticsearch(ES),单点 Elasticsearch(ES)的安装请参见我的另一篇文章《ELK日志管理内的Elasticsearch安装教程》

如果需要清除旧数据

cd /usr/local/elasticsearch-7.17.9/data
rm -rf nodes/

安装可视化集群的工具

插件官网地址https://github.com/mobz/elasticsearch-head
由于插件时托管在github中,要从github中直接下载所以需要先安装git
安装插件时又使用到了npm,所以npm同时都安装上(注意:npm在epel源中)

yum install -y epel-release bzip2 
yum install -y git npm                  
git clone https://github.com/mobz/elasticsearch-head.git
npm install -g npm@9.7.1    
npm install phantomjs-prebuilt
npm install core-js@latest --save        
cd elasticsearch-head                                    
npm install
启动查看日志信息
npm run start 
后台运行
nohup npm run start > /dev/null 2>&1 &

看到如下就属于成功了


关闭防火墙 浏览器访问 IP:9100
看到如下界面就完成安装了

三台主机安装ES

三台主机全部执行

关闭防火墙
systemctl stop firewalld
创建目录
mkdir /es
创建用户
useradd es
上传elasticsearch-7.17.9-linux-x86_64.tar.gz 到/es目录下
更改所属组 用户
chown -R es:es /es
创建目录
mkdir -p /data/elasticsearch
mkdir -p /var/log/elasticsearch
chown -R es:es /data/elasticsearch
chown -R es:es /var/log/elasticsearch

修改进程的最大内存锁定限制

vim /etc/security/limits.conf
# 可打开的文件句柄最大数
* soft nofile 65535
* hard nofile 65535
# 单个用户可用的最大进程数
* soft nproc 4096
* hard nproc 4096
# 可打开的文件描述符的最大数,unlimited:无限制
* soft memlock unlimited
* hard memlock unlimited

JAM能开启的最大线程数

vim /etc/sysctl.conf
vm.max_map_count=262144
加载并应用
sysctl -p

切换用户为es 执行下面操作
解压 重命名

cd /es/
tar -xvf elasticsearch-7.17.9-linux-x86_64.tar.gz
mv elasticsearch-7.17.9 elasticsearch

单节点ES配置文件 就是这么配置

cluster.name: my_cluster
node.name: node-1
node.master: true
node.data: true
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 192.168.7.111,127.0.0.1
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
discovery.zen.ping.unicast.hosts: ["192.168.7.111"]

修改服务器A的ES配置文件

vim elasticsearch/config/elasticsearch.yml
修改如下项
cluster.name: my_cluster
node.name: node-1
node.master: true
node.data: true
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 192.168.7.111,127.0.0.1
http.port: 9200
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
discovery.zen.ping.unicast.hosts: ["192.168.7.111", "192.168.7.112", "192.168.7.113"]
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.minimum_master_nodes: 2

集群就是如下
修改服务器B的ES配置文件

vim elasticsearch/config/elasticsearch.yml
修改如下项
cluster.name: my_cluster
node.name: node-2
node.master: true
node.data: true
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 192.168.7.112,127.0.0.1
http.port: 9200
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
discovery.zen.ping.unicast.hosts: ["192.168.7.111", "192.168.7.112", "192.168.7.113"]
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.minimum_master_nodes: 2

#其中 
#http.cors.enabled: true
#http.cors.allow-origin: "*"
#此步骤可以允许ElasticSearch跨域,用于连接ElasticSearch-head跨域失败的问题

修改服务器C的ES配置文件

vim elasticsearch/config/elasticsearch.yml
修改如下项
cluster.name: my_cluster
node.name: node-3
node.master: true
node.data: true
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 192.168.7.113,127.0.0.1
http.port: 9200
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
discovery.zen.ping.unicast.hosts: ["192.168.7.111", "192.168.7.112", "192.168.7.113"]
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.minimum_master_nodes: 2

配置文件内 不可以有制表符还有空格

每台主机进入到elasticsearch的bin下
启动elasticsearch

./elasticsearch >/dev/null 2>&1 &

查看日志 打印如下 属于启动成功

启动 报错打印Killed

原因是可用内存不足导致的
解决办法

进到config下
vim jvm.options
修改如下
默认是注释掉的
## -Xms4g
## -Xmx4g
修改为
-Xms1g
-Xmx1g

以上设置 按照自己机器的内存来 灵活变更 

访问部署Head插件的主机IP:9100
连接集群 显示如下部署成功

主节点宕机测试

最后修改:2023 年 08 月 17 日
如果觉得我的文章对你有用,请随意赞赏