elasticsearch7 集群搭建(三个master节点)

 简介:

在项目部署过程中,我们可能使用到es集群,目前网上在搭建es集群的时候有很种,配置文件的参数也不同,导致部署过程遇到很多问题,因此写下了这篇博客。在之前有关es的博客中,提到过,自es7.0之后,由于种种原因,es的变化很大,这也导致了在部署上,es7与之前的版本在部署上的不同,这也就是为什么目前es集群部署方式有很多种的原因。所以这个博客的中重点是es7中集群的搭建,不适用于其他版本(关键

安装环境

Centos7.2      Elasticsearch7.1          三个主节点的配置(10.10.10.1     10.10.10,2       10.10.10.3)

 步骤

1、首先创建es的用户,这一点与之前版本的相同,因为es启动时,不允许使用root用户启动。创建用户后,并切换到新添加的用户下进行后续操作

# 添加用户组
groupadd es

# 添加用户
useradd -m -g es es

# 配置密码
passwd es

#增加sudo权限(在最后添加  es ALL=(ALL)  NOPASSWD:ALL    )
visudo

#切换用户
su es

2、下载es,这里可以使用自己的安装包(如果自己封装了插件的话),或者从官网上进行下载,如果使用7.1的话可以直接使用下面的方式进行下载

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-linux-x86_64.tar.gz

3、将es压缩包进行解压

tar xvf elasticsearch-7.1.1-linux-x86_64.tar.gz /usr/data/elasticsearch

4、配置(这个配置文件需要同步到10.10.10.1     10.10.10,2       10.10.10.3三个主机上)

4.1 修改es的配置文件

vi /usr/data/elasticsearch/config/elasticsearch.yml

# 增加以下内容
# 集群名称必须相同
cluster.name: es-test

node.name: node-3
# 当前节点是否可以被选举为master节点,是:true、否:false
node.master: true
# 当前节点是否用于存储数据,是:true、否:false
node.data: true

# 数据和日志存储的地方,建议与es的安装目录区分,方式es删除后数据的丢失
path.data: /data/es/data
path.logs: /data/es/logs

# 需求锁住物理内存,是:true、否:false
bootstrap.memory_lock: false

# SecComp检测,是:true、否:false
bootstrap.system_call_filter: false

network.host: 0.0.0.0
# 有些时候并不需要此配置,我的没有设置
network.publish_host: 10.240.0.8

# 主机访问的端口号
http.port: 9200

# es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
# es7之后,不需要discover.zen.ping.unicast.hosts这个参数,用discovery.seed_hosts替换
discovery.seed_hosts: ["10.10.10.1","10.10.10.2","10.10.10.3"]

# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes:["10.10.10.1","10.10.10.2","10.10.10.3"]

# 是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.enabled: true

# "*" 表示支持所有域名
http.cors.allow-origin: "*"

4.2 修改 jvm.options

vim config/jvm.options

# 按需修改如下内存大小即可
-Xms4g
-Xmx4g

4.3 创建数据和日志目录(也就是4.1中配置的路径)

mkdir -p /data/es/data
mkdir -p /data/es/logs

4.4 在三台机器上分别启动es

./usr/data/elasticsearch/bin/elasticsearch
# 后台启动的话,使用下面的这个命令
./usr/data/elasticsearch/bin/elasticsearch -d

4.5 检查集群是否部署成功,可参考 《ES7(ElasticSearch7) 操作集群基础》

# 检查集群的健康状态
GET /_cat/health?v

# 集群中所有的节点
GET /_cat/nodes?v

 

参数说明:

1、在新版7.0的es中,对es的集群发现系统做了调整,不再有discovery.zen.minimum_master_nodes这个控制集群脑裂的配置,转而由集群自主控制,并且新版在启动一个新的集群的时候需要有cluster.initial_master_nodes初始化集群列表。

2、在es7中,discovery.zen.* 开头的参数,有些已经失效

elasticsearch7 集群搭建(三个master节点)_第1张图片

问题解决(以下部分参考 ElasticSearch 7.1.1 集群环境搭建)

1、每个进程最大同时打开文件数太小

vim /etc/security/limits.conf

# 增加如下: 
# elsearch为用户名
elsearch  soft nofile 65536
elsearch  hard nofile 65536

# 保存之后,退出当前用户重新登录生效,可用如下命令查看是否修改成功
ulimit -Hn
ulimit -Sn

2、申请锁定内存失败

vim config/elasticsearch.yml

# 修改,不锁定内存
bootstrap.memory_lock: false

3、 最大虚拟内存太小

vim /etc/sysctl.conf

# 增加如下:
vm.max_map_count=262144

# 修改完之后,执行如下命令生效
sysctl -p

4、 因为Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动

vim config/elasticsearch.yml

设置为false
bootstrap.system_call_filter: false

5、 最大线程数太小

vim /etc/security/limits.conf

# 增加如下: 
# elsearch为用户名
elsearch  soft nproc 4096
elsearch  hard nproc 4096

# 保存之后,退出当前用户重新登录生效,可用如下命令查看是否修改成功
ulimit -Hu
ulimit -Su

6、 network.host 监听 0.0.0.0 之后无法组成集群

报错(警告):

始终只有一个节点:

解决:

vim config/elasticsearch.yml

# 增加如下配置,用于集群内各机器间通信:
network.publish_host: 10.240.0.8

 

 

 

参考资料:

1、ElasticSearch 7.1.1 集群环境搭建

2、Elasticsearch 7.0.0 集群搭建

3、ES7(ElasticSearch7) 操作集群基础

4、7.0.0 elasticsearch 集群部署踩坑记

你可能感兴趣的:(ES基础)