ElasticSearch 7.1.1 集群环境搭建

1. 集群简介

三台机器,均用于保存数据且可被选为master节点
服务版本
服务 版本
elasticsearch 7.1.1
jdk 1.8

1. 创建elsearch用户

不建议直接使用root用户,所以此处新建 elsearch用户

1.1 添加用户组及用户,配置密码

# 添加用户组
groupadd elsearch

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

# 配置密码
passwd elsearch

1.2 sudo权限

visudo

# 在最后增加
elsearch ALL=(ALL)  NOPASSWD:ALL

2. 下载 & 解压

注意目录权限为:elsearch

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

# 解压
tar xvf elasticsearch-7.1.1-linux-x86_64.tar.gz

# 软链
ln -s elasticsearch-7.1.1 elasticsearch

3. 配置

此配置需同步到所有机器

3.1 修改 elasticsearch.yml

配置说明:

参数 说明
cluster.name 集群名称,相同名称为一个集群
node.name 节点名称,集群模式下每个节点名称唯一
node.master 当前节点是否可以被选举为master节点,是:true、否:false
node.data 当前节点是否用于存储数据,是:true、否:false
path.data 索引数据存放的位置
path.logs 日志文件存放的位置
bootstrap.memory_lock 需求锁住物理内存,是:true、否:false
bootstrap.system_call_filter SecComp检测,是:true、否:false
network.host 监听地址,用于访问该es
network.publish_host 可设置成内网ip,用于集群内各机器间通信
http.port es对外提供的http端口,默认 9200
discovery.seed_hosts es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
cluster.initial_master_nodes es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
http.cors.enabled 是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.allow-origin "*" 表示支持所有域名

详情配置:

vim config/elasticsearch.yml

# 增加如下:
cluster.name: es-test

node.name: node-3
node.master: true
node.data: true

path.data: /data/es/data
path.logs: /data/es/logs

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

network.host: 0.0.0.0
# 有些时候并不需要此配置,但我这里需要..
network.publish_host: 10.240.0.8

http.port: 9200
discovery.seed_hosts: ["10.100.0.7", "10.100.0.8"]
cluster.initial_master_nodes: ["10.100.0.8"]

http.cors.enabled: true
http.cors.allow-origin: "*"

3.2 修改 jvm.options

vim config/jvm.options

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

3.3 新建索引数据与日志数据目录

# 新建目录,注意目前权限
mkdir -p /data/es/data
mkdir -p /data/es/logs

4. 启动

cd bin/
./elasticsearch

# 后台运行
./elasticsearch -d

初次启动时,可能会遇到如下图的几个错误,一一解决即可。

4.1. 每个进程最大同时打开文件数太小
vim /etc/security/limits.conf

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

# 保存之后,退出当前用户重新登录生效,可用如下命令查看是否修改成功
ulimit -Hn
ulimit -Sn
4.2. 申请锁定内存失败
vim config/elasticsearch.yml

# 修改,不锁定内存
bootstrap.memory_lock: false
4.3. 最大虚拟内存太小
vim /etc/sysctl.conf

# 增加如下:
vm.max_map_count=262144

# 修改完之后,执行如下命令生效
sysctl -p
4.4. 因为Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动
vim config/elasticsearch.yml

设置为false
bootstrap.system_call_filter: false
4.5. 最大线程数太小
vim /etc/security/limits.conf

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

# 保存之后,退出当前用户重新登录生效,可用如下命令查看是否修改成功
ulimit -Hu
ulimit -Su
4.6 network.host 监听 0.0.0.0 之后无法组成集群

报错(警告):

始终只有一个节点:

解决:

vim config/elasticsearch.yml

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

参考

  1. https://www.2cto.com/net/201905/810168.html
  2. http://www.sohu.com/a/301517999_683048
  3. https://www.jianshu.com/p/169acce2ce25
  4. https://www.cnblogs.com/xiaoheike/p/5750222.html

猜你喜欢

转载自www.cnblogs.com/remainsu/p/elasticsearch-711-ji-qun-huan-jing-da-jian.html