Centos7.2安装ES5.6.16集群

第一步:安装JDK1.8以上

elasticsearch是用Java实现的,必须先安装JDK1.8。参考下图:使用最简单的安装方式gz包直接解压。

java通过接口操作es集群 java es集群_elasticsearch

 

配置信息如下:

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压缩包;

java通过接口操作es集群 java es集群_elasticsearch_02

 

下载后,用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]

java通过接口操作es集群 java es集群_elasticsearch_03

 

解决:修改/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

java通过接口操作es集群 java es集群_elasticsearch_04

 

出来这个 说明配置OK。

 

第四步:允许外网连接配置

1.可以修改 /home/es/elasticsearch/config/elasticsearch.yml 文件

把 network.host 和 http.port 前面的 备注去掉 然后Host改成你的局域网IP即可

java通过接口操作es集群 java es集群_java通过接口操作es集群_05

 

修改后 保存退出

2.然后我们把防火墙也关了 

systemctl stop firewalld.service

systemctl disable firewalld.service   禁止防火墙开机启动 

3.最后我们重启下elasticsearch服务

4.我们用浏览器请求下 http://192.168.1.108:9200/ 

java通过接口操作es集群 java es集群_git_06

 

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

java通过接口操作es集群 java es集群_elasticsearch_07

 

git --version

java通过接口操作es集群 java es集群_java通过接口操作es集群_08

 

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 &

java通过接口操作es集群 java es集群_git_09

 

说明启动成功,然后浏览器 执行 http://192.168.1.110:9100/

java通过接口操作es集群 java es集群_java通过接口操作es集群_10

 

内部输入 http://192.168.1.110:9200/ 点击连接 如果右侧输出黄色背景字体 说明配置完整OK;