ES集群部署方案
ES集群部署方案官方推荐master数设置为集群数/2+1,这里我们三台ES服务器,配置最少需要两台master,整个集群才可正常运行。在三个节点都参与选举的情况下,一个节点宕机了这个集群还是可用的。一、基本配置1、准备三台虚拟机,root密码 root ;IP地址:192.168.xxx.xxx worker1192.168.xxx.xxx worker2192.168.xxx.xxx work
·
ES集群部署方案
官方推荐master数设置为集群数/2+1,这里我们三台ES服务器,配置最少需要两台master,整个集群才可正常运行。在三个节点都参与选举的情况下,一个节点宕机了这个集群还是可用的。
一、基本配置
1、准备三台虚拟机,root密码 root ;IP地址:
192.168.xxx.xxx worker1
192.168.xxx.xxx worker2
192.168.xxx.xxx worker3
并在对应的机器的/etc/hosts文件中设置对应的ip和机器名映射
2、每台机器上创建用户mq并设置密码
useradd es
passwd es 密码输入:Anji@1024
3、系统配置
1)免密登录,切换es用户,在worker1、worker2、worker3上分别生成密钥:
su es
ssh-keygen
2)同步公钥到其他服务器
ssh-copy-id worker1
ssh-copy-id worker2
ssh-copy-id worker3
3) 通过命令验证免密登录配置是否成功
ssh worker1
ssh worker2
ssh worker2
4、在三台机器上分别配置JAVA环境
1)上传jdk8的tar包并解压到/app/jdk1.8目录
tar -zxvf jdk-8u171-linux-x64.tar.gz
mv jdk1.8.0_171/ /app/jdk1.8
2)配置环境变量。使用 vi ~/.bash_profile编辑文件,添加一下配置,并使用source ~/.bash_profile使环境变量生效,输入java -version查看是否配置成功
export JAVA_HOME=/app/jdk1.8/
PATH=$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
export PATH
搭建三节点ES集群,具体搭建步骤如下:
#创建文件夹
su es
mkdir /usr/elasticsearch
#上传Elasticsearch 到/usr/elasticsearch,并解压安装包
cd /usr/elasticsearch
tar xvf elasticsearch-6.8.13.tar.gz
#修改机器的配置文件,如下:
#1:修改jvm启动参数
cd /usr/elasticsearch/elasticsearch-6.8.13/config
vim jvm.options
-Xms2g #根据自己机器情况修改、设置为物理内存一半最佳,可根据服务器内存去选择调
-Xmx2g
#2:一个进程在VMAs(虚拟内存区域)创建内存映射最大数量
vim /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p #配置生效
#修改配置文件
cd /usr/elasticsearch/elasticsearch-6.8.13/config
vi elasticsearch.yml
#node01的配置:
cluster.name: es-cluster
node.name: node01
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.50.150","192.168.50.151","192.168.50.152"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
#node02的配置:
cluster.name: es-cluster
node.name: node02
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.50.150","192.168.50.151","192.168.50.152"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
#node03的配置:
cluster.name: es-cluster
node.name: node03
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.50.150","192.168.50.151","192.168.50.152"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
#配置文件重点参数解析
(1)cluster.name
集群名字,三台集群的集群名字都必须一致
(2)node.name
节点名字,三台ES节点字都必须不一样
(3)discovery.zen.minimum_master_nodes:2
表示集群最少的master数,如果集群的最少master数据少于指定的数,将无法启动,官方推荐node master数设置为集群数/2+1,我这里三台ES服务器,配置最少需要两台master,整个集群才可正常运行,
(4)node.master该节点是否有资格选举为master,如果上面设了两个mater_node 2,也就是最少两个master节点,则集群中必须有两台es服务器的配置为node.master: true的配置,配置了2个节点的话,如果主服务器宕机,整个集群会不可用,所以三台服务器,需要配置3个node.masdter为true,这样三个master,宕了一个主节点的话,他又会选举新的master,还有两个节点可以用,只要配了node master为true的ES服务器数正在运行的数量不少于master_node的配置数,则整个集群继续可用,我这里则配置三台es node.master都为true,也就是三个master,master服务器主要管理集群状态,负责元数据处理,比如索引增加删除分片分配等,数据存储和查询都不会走主节点,压力较小,jvm内存可分配较低一点
(5)node.data
存储索引数据,三台都设为true即可
(6)bootstrap.memory_lock: true
锁住物理内存,不使用swap内存,有swap内存的可以开启此项
(7)discovery.zen.ping_timeout: 3000s
自动发现拼其他节点超时时间
(8)discovery.zen.ping.unicast.hosts: ["172.16.0.8:9300","172.16.0.6:9300","172.16.0.22:9300"]
设置集群的初始节点列表,集群互通端口为9300
#安装过程可能出现的问题及解决方案
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at
least [65536]
#解决:切换到root用户,编辑limits.conf 添加类似如下内容
vi /etc/security/limits.conf
添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
[2]: max number of threads [1024] for user [elsearch] is too low, increase to at least
[4096]
#解决:切换到root用户,进入limits.d目录下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf
#修改如下内容:
* soft nproc 1024
#修改为
* soft nproc 4096
[3]: system call filters failed to install; check the logs and fix your configuration
or disable system call filters at your own risk
#解决:Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true
cd /usr/elasticsearch/elasticsearch-6.8.13/config;
vim elasticsearch.yml
添加:
bootstrap.system_call_filter: false
[4]java.nio.file.AccessDeniedException: /usr/elasticsearch/elasticsearch-6.4.2/config/jvm.options
切换到root,给es授权
su root; #输入密码
chown -R es /usr/elasticsearch/elasticsearch-6.4.2
更多推荐
已为社区贡献4条内容
所有评论(0)