Centos7.2安装ES5.6.16集群
第一步:安装JDK1.8以上
elasticsearch是用Java实现的,必须先安装JDK1.8。参考下图:使用最简单的安装方式gz包直接解压。
配置信息如下:
export JAVA_HOME=/usr/local/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
第二步:下载elasticsearch
进入官方下载 https://www.elastic.co/downloads/elasticsearch
因为是centos中运行 所以我们选 tar.gz压缩包;
下载后,用ftp工具上传到centos里 我们把这个文件上传到 /home/data/下
第三步:ES集群的安装和配置
系统 | 节点名称 | IP地址 |
CentOs 7.2 | Node-1 | 172.21.0.3 |
CentOs 7.2 | Node-2 | 172.21.32.3 |
CentOs 7.2 | Node-3 | 172.21.32.10 |
1.进入data目录 解压
[root@bogon ~]# cd /home/data/
[root@bogon data]# tar -zxvf elasticsearch-5.6.16.tar.gz
2.把ES文件移到新建目录
[root@bogon data]# cd
[root@bogon ~]# mkdir /home/es/
[root@bogon ~]# mv /home/data/elasticsearch-5.6.16 /home/es/
3.修改配置文件elasticsearch.yml
3.1配置文件参数例子
# 集群名字:三台集群的集群名字都必须一致!
cluster.name: my-cluster
# 节点名字: 三台ES节点字都必须不一样!
node.name: node-01
# 节点用途: master和data都配置成true
node.master: true
node.data: true
# 数据存储路径(一般无需修改使用默认路径即可;多路径逗号分隔):
#path.data: /path/to/data
# 日志存储路径(一般无需修改使用默认路径即可):
#path.logs: /path/to/logs
# 设置节点绑定地址 (IPv4 or IPv6):
network.host: 172.21.0.3 注意:使用ifconfig命令来确定这个IP地址
# 设置HTTP访问端口:
http.port: 9200
# 为了避免脑裂,集群节点数最少为 半数(N/2)+1
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 3s
# 单播节点列表:
discovery.zen.ping.unicast.hosts: ["172.21.0.3:9300", "172.21.32.3:9300", "172.21.32.10:9300"]
3.2 重点参数解析说明
三台机器配置重点如下:
node.name: node-01 ===》172.21.0.3
node.name: node-02 ===》172.21.32.3
node.name: node-03 ===》172.21.32.10
配置文件重点参数解析:
(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: 3s
自动发现拼其他节点超时时间
(8)discovery.zen.ping.unicast.hosts: ["172.16.0.8:9300","172.16.0.6:9300","172.16.0.22:9300"]
设置集群的初始节点列表,集群互通端口为9300
4.启动 elasticsearch
一定不能用root用户来启动,必须新建一个用户来启动。
[root@bogon ~]# useradd elastic
[root@bogon ~]# chown -R elastic:elastic /home/es/elasticsearch-5.6.16/
新建elastic用户 并且把目录权限赋予给elastic
我们切换成elastic用户,然后执行
[root@bogon ~]# su elastic
[elastic@bogon root]$ sh /home/es/elasticsearch-5.6.16/bin/elasticsearch
出来一大串info 说明成功了,但是这种方式是前台运行,不方便我们操作其他的 我们加下 -d 后台运行
先ctrl+c退出执行;正式启动都要使用后台方式启动:
[elastic@bogon root]$ sh /home/es/elasticsearch-5.6.16/bin/elasticsearch -d
我们来检查下是否启动成功
[elastic@bogon root]$ ps -ef | grep elasticsearch
5.ES启动报错汇总解决:
1) max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量
ulimit -Hn
ulimit -Sn
修改/etc/security/limits.conf文件,增加配置,用户退出后重新登录生效
* soft nofile 65536
* hard nofile 65536
2) max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决:修改/etc/sysctl.conf文件,在文件最后增加配置vm.max_map_count=655360
vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
执行命令sysctl -p生效
3) max number of threads [3818] for user [es] is too low, increase to at least [4096]
问题同上,最大线程个数太低。修改配置文件/etc/security/limits.conf(和问题1是一个文件),增加配置:
* soft nproc 4096
* hard nproc 4096
可通过命令查看
ulimit -Hu
ulimit -Su
6.我们来验证下服务是否正常运行 curl http://localhost:9200
[elastic@bogon root]$ curl http://localhost:9200
{
"name" : "K22mJd5",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "R2qfXKtrQl2PwKdJMmPuMA",
"version" : {
"number" : "5.5.2",
"build_hash" : "b2f0c09",
"build_date" : "2017-08-14T12:33:14.154Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
},
"tagline" : "You Know, for Search"
}
或者浏览器中:输入下面url
出来这个 说明配置OK。
第四步:允许外网连接配置
1.可以修改 /home/es/elasticsearch/config/elasticsearch.yml 文件
把 network.host 和 http.port 前面的 备注去掉 然后Host改成你的局域网IP即可
修改后 保存退出
2.然后我们把防火墙也关了
systemctl stop firewalld.service
systemctl disable firewalld.service 禁止防火墙开机启动
3.最后我们重启下elasticsearch服务
4.我们用浏览器请求下 http://192.168.1.108:9200/
OK 出现这东西 才算配置完成;
第四步:安装head插件
1.安装node.js
head插件是nodejs实现的,所以必须先安装Nodejs
参考:http://blog.java1234.com/blog/articles/354.html
1.1下载目录
cd /usr/local/ 进local目录
1.2 获取压缩包
wget https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.xz 下载压缩包
1.3 解压包
tar -xJf node-v8.9.1-linux-x64.tar.xz
1.4 配置环境变量
vi /etc/profile
在最后加上:
export NODE_HOME=/usr/local/node-v8.9.1-linux-x64
export PATH=$NODE_HOME/bin:$PATH
加完之后,保存;再执行 source /etc/profile 让环境变量生效;
验证下:
[root@bogon node-v8.9.1-linux-x64]# node -v
v8.9.1
[root@bogon node-v8.9.1-linux-x64]# npm -v
5.5.1
说明安装OK;
2.安装git
我们要用git方式下载head插件,2步安装git。
参考:http://blog.java1234.com/blog/articles/353.html
yum install -y git
git --version
3.下载以及安装head插件
打开参考 https://github.com/mobz/elasticsearch-head
cd /home/es/
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
open http://localhost:9100/
4.配置elasticsearch.yml 允许head插件访问
进入elasticsearch config目录 打开 elasticsearch.yml
最后加上
http.cors.enabled: true
http.cors.allow-origin: "*"
5.测试head是否启动成功
重新启动elasticsearch,再进入head目录,执行npm run start 启动插件
nohup npm run start & 或者 grunt server &
说明启动成功,然后浏览器 执行 http://192.168.1.110:9100/
内部输入 http://192.168.1.110:9200/ 点击连接 如果右侧输出黄色背景字体 说明配置完整OK;