脚踏实地、勇往直前!
全部博文(1005)
分类: 大数据
2018-12-12 16:04:36
CentOs下安装Elasticsearch集群
环境:
OS:CentOs 7
Elasticsearch:6.5.0
1.安装步骤
数据库部署
节点 |
ip |
角色 |
Host01 |
192.168.1.135 |
|
Host02 |
192.168.1.135 |
|
Host03 |
192.168.1.136 |
|
安装java,确保版本在1.8以上
[root@localhost ~]# java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
安装部署省略
每台机器上都需要安装
因为es不能在root用户下启动,所以需要创建非root用户,我这里创建crate用户
#useradd esuser
[crate@localhost ~]$ more .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
JAVA_HOME=/usr/local/jdk1.8.0_151
PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
export PATH
[crate@local
在该文件最后面添加如下两项,然后退出重新登录
* hard nofile 65536
* soft nofile 65536
[root@localhost /]# sysctl -w vm.max_map_count=262144
下载地址:我这里下载的是elasticsearch-6.5.0.tar.gz
每台机器都要进行安装
[root@localhost ]# tar -xvf elasticsearch-6.5.0.tar.gz
[root@localhost ]# mv elasticsearch-6.5.0 elasticsearch
[root@localhost]# chown -R esuser:esuser ./elasticsearch
每台机器上都要执行
[esuser@localhost elasticsearch]$cd /home/esuser/elasticsearch
[esuser@localhost elasticsearch]$ mkdir data
该目录用于存放数据文件
vi /home/esuser/elasticsearch/config/elasticsearch.yml
cluster.name: my-cluster #集群名称 node.name: node-1 #节点名称,仅仅是描述名称,用于在日志中区分
path.data: /home/esuser/elasticsearch/data #数据的默认存放路径 path.logs: /home/esuser/elasticsearch/logs #日志的默认存放路径
network.host: 192.168.1.134 #当前节点的IP地址 http.port: 9200 #对外提供服务的端口,9300为集群服务的端口 discovery.zen.ping.unicast.hosts: ["192.168.1.134", "192.168.1.135","192.168.1.136"]
若是自定义内部通信端口的话需要写上自定义的内部通信端口如下
discovery.zen.minimum_master_nodes:
2 #为了避免脑裂,集群节点数最少为 半数+1 |
将配置文件scp到另外的机器,然后相应修改红色部分
每台机器都要设置
由于Elasticsearch是Java开发的,所以可以通过/etc/elasticsearch/jvm.options配置文件来设定JVM的相关设定。如果没有特殊需求按默认即可。
不过其中还是有两项最重要的-Xmx1g与-Xms1gJVM的最大最小内存。如果太小会导致Elasticsearch刚刚启动就立刻停止。太大会拖慢系统本身
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms8g
-Xmx8g
每台机器都要设置
vi /home/esuser/elasticsearch/bin/elasticsearch
export ES_HEAP_SIZE=4g
同时在配置文件elasticsearch.yml中添加如下项目:
bootstrap.mlockall: true
每台机器都要启动
[root@localhost opt]# su - esuser
[esuser@localhost bin]$ cd /home/esuser/elasticsearch/bin
[esuser@localhost bin]$./elasticsearch –d
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: unknown setting [bootstrap.mlockall]
将配置文件里该参数设置为false
解决办法:
vi /etc/security/limits.conf
root用户下添加如下2两项,然后退出使用esuser用户登陆,使其生效
* hard nofile 65536
* soft nofile 65536
#sysctl -w vm.max_map_count=262144
或是直接修改sysctl.conf文件
vi /etc/sysctl.conf
vm.max_map_count=262144
1.14 配置验证
在每个节点的配置文件里的最后添加如下配置项,启用xpack验证
xpack.security.enabled: true
重新启动每个节点,然后在其中一个节点上执行如下命令
./elasticsearch-setup-passwords interactive
这里会提示设置每个账号的密码,设置即可。
这里遇到了个小问题,把xpack.security.enabled: true添加到每个节点的配置文件重启之后,好像集群不可用,其中一个节点xpack生效了,但是另外两个节点xpack没有生效,后来我是在每个节点的配置文件添加了如下参数,重启动后等了一会好像就可以了。
node.data: true
node.master: true