Bootstrap

cent7.3-es6.2.4集群搭建(带head插件)-全新干净环境搭建

cent7.3-es6.2.4集群搭建(带head插件)-全新干净环境搭建

如果对运维课程感兴趣,可以在b站上、A站或csdn上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频

一、搭建es集群(两台机器),并在两个节点上都安装head插件

注意:head插件就是es的一个管理工具,在两台上安装和在一台上安装都行,在哪台上安装head插件,就可以在哪台上管理es集群,无论在哪台上安装,操作集群,包括增删改查数据都是一样的。

1.192.168.224.135机器上安装elasticsearch-1

1)安装elasticsearch:

a)环境准备

[root@bogon ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.224.135 node-1

192.168.224.136 node-2

[root@bogon ~]# vim /etc/security/limits.conf

* soft nofile 65536     #注意必须是65536以上,65535都不行

* hard nofile 65536

* soft nproc 4096

* hard nproc 4096

[root@bogon ~]# vim /etc/security/limits.d/20-nproc.conf

*          soft    nproc     4096        #至少是4096,若小于则需修改,也可大于4096

[root@bogon ~]# vim /etc/sysctl.conf

vm.max_map_count=262144      #添加,至少是262144

[root@bogon ~]# sysctl -p

[root@bogon ~]# reboot    #注意:重启后,主机名自动变成node-1了就

[root@node-1 ~]# systemctl stop firewalld.service  

b)安装jdk1.8

[root@node-1 ~]# mkdir /usr/local/java

[root@node-1 ~]# rz

上传jdk1.8包

[root@bogon ~]# ls

jdk-8u144-linux-x64.tar.gz

[root@node-1 ~]# tar -zxf jdk-8u144-linux-x64.tar.gz

[root@node-1 ~]# ls

jdk1.8.0_144  jdk-8u144-linux-x64.tar.gz

[root@node-1 ~]# mv jdk1.8.0_144/ /usr/local/java/

[root@node-1 ~]# ls /usr/local/java/

jdk1.8.0_144

[root@node-1 ~]# vim /etc/profile

#最后面添加:

JAVA_HOME=/usr/local/java/jdk1.8.0_144

CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH

[root@node-1 ~]# source  /etc/profile

[root@node-1 ~]# java -version

java version "1.8.0_144"

Java(TM) SE Runtime Environment (build 1.8.0_144-b01)

Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

[root@node-1 ~]# rz

上传elasticsearch包,并安装elasticsearch,(es启动需要普通用户,其他服务启动用root)

[root@node-1 ~]# ls

elasticsearch-6.2.4.tar.gz  jdk-8u144-linux-x64.tar.gz

[root@node-1 ~]# tar -zxf elasticsearch-6.2.4.tar.gz

[root@node-1 ~]# ls

elasticsearch-6.2.4  elasticsearch-6.2.4.tar.gz  jdk-8u144-linux-x64.tar.gz

[root@node-1 ~]# mv elasticsearch-6.2.4 /opt/

[root@node-1 ~]# ls /opt/elasticsearch-6.2.4/

bin  config  lib  LICENSE.txt  logs  modules  NOTICE.txt  plugins  README.textile

[root@node-1 ~]# groupadd eszu

[root@node-1 ~]# useradd esyonghu -g eszu -p 123456

[root@node-1 ~]# chown -R esyonghu:eszu /opt/elasticsearch-6.2.4/

[root@node-1 ~]# su - esyonghu

[esyonghu@node-1 ~]$ vim /opt/elasticsearch-6.2.4/config/elasticsearch.yml

cluster.name: shi                 #修改,集群的名称,两个必须一样,就是通过是不是同一个名称判断是不是一个集群

node.name: node-1                 #node-1

path.data: /opt/elasticsearch-6.2.4/data

path.logs: /opt/elasticsearch-6.2.4/logs

network.host: 192.168.224.135     #修改,本机ip,或者0.0.0.0,监听本机所有ip

http.port: 9200                   #释放

#下面一行是新添加的,改成单播,默认是组播,(通过单播两个集机器通讯)

discovery.zen.ping.unicast.hosts: ["192.168.224.135","192.168.224.136"]

#下面两个是新加的,允许跨域访问

http.cors.enabled: true

http.cors.allow-origin: '*'

[esyonghu@node-1 ~]$ mkdir /opt/elasticsearch-6.2.4/data

[esyonghu@node-1 ~]$ cd /opt/elasticsearch-6.2.4/bin/

[esyonghu@node-1 bin]$ ls elasticsearch

elasticsearch

[esyonghu@node-1 bin]$ ./elasticsearch -d     #后台启动es,或者先./ elasticsearch前台启动查看下是否能启动再后台启动

[esyonghu@node-1 bin]$ tailf /opt/elasticsearch-6.2.4/logs/shi.log  #查看启动日志,需要等会才能形成日志,会创建一个带集群名的日志

………

[2019-04-01T09:31:59,922][INFO ][o.e.h.n.Netty4HttpServerTransport] [node-1] publish_address {192.168.224.135:9200}, bound_addresses {192.168.224.135:9200}

[2019-04-01T09:31:59,922][INFO ][o.e.n.Node               ] [node-1] started

[2019-04-01T09:31:59,929][INFO ][o.e.g.GatewayService     ] [node-1] recovered [0] indices into cluster_state

[esyonghu@node-1 bin]$ netstat -anput |grep 9200

有9200端口

[esyonghu@node-1 bin]$ curl http://192.168.224.135:9200

能访问es默认页面

客户端浏览器外网访问,如下:http://192.168.224.135:9200/ 

c)elasticsearch安装head插件:是es的一个客户端管理工具(es5.0版本后,head插件独立安装)

安装nodejs环境:  (head插件会用到grunt,而grunt需要npm包管理器,所以需要安装nodejs环境)

另开一个窗口,用root用户,也可用其他用户

[root@node-1 ~]# rz

上传nodejs包

[root@node-1 ~]# ls

elasticsearch-6.2.4.tar.gz  jdk-8u144-linux-x64.tar.gz  node-v9.6.1-linux-x64.tar.xz

[root@node-1 ~]# xz -d node-v9.6.1-linux-x64.tar.xz

[root@node-1 ~]# ls

elasticsearch-6.2.4.tar.gz  jdk-8u144-linux-x64.tar.gz  node-v9.6.1-linux-x64.tar

[root@node-1 ~]# tar -xf node-v9.6.1-linux-x64.tar

[root@node-1 ~]# ls

elasticsearch-6.2.4.tar.gz  jdk-8u144-linux-x64.tar.gz  node-v9.6.1-linux-x64  node-v9.6.1-linux-x64.tar

[root@node-1 ~]# mv node-v9.6.1-linux-x64 /opt/

[root@node-1 ~]# ls /opt/node-v9.6.1-linux-x64/

bin  CHANGELOG.md  include  lib  LICENSE  README.md  share

[root@node-1 ~]# export PATH=$PATH:/opt/node-v9.6.1-linux-x64/bin

[root@node-1 ~]# echo "export PATH=$PATH:/opt/node-v9.6.1-linux-x64/bin" >> /etc/profile

[root@node-1 ~]# tail -1 /etc/profile

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/node-v9.6.1-linux-x64/bin:/opt/node-v9.6.1-linux-x64/bin

[root@node-1 ~]# source  /etc/profile

[root@node-1 ~]# node -v

v9.6.1

[root@node-1 ~]# npm -v

5.6.0

[root@node-1 ~]# npm install -g grunt-cli     #安装head插件依赖工具

[root@node-1 ~]# grunt --version

grunt-cli v1.3.2

从github删下载head插件,也可先下载后,保留存起来

[root@node-1 ~]# yum -y install git

[root@node-1 ~]# git clone git://github.com/mobz/elasticsearch-head.git

[root@node-1 ~]# ls

elasticsearch-6.2.4.tar.gz  elasticsearch-head  jdk-8u144-linux-x64.tar.gz  node-v9.6.1-linux-x64.tar

[root@node-1 ~]# mv elasticsearch-head/ /opt     #移到/opt/elasticsearch-6.2.4/plugins/试验不行,新版可能不让在该目录下安装插件

[root@node-1 ~]# ls /opt/

elasticsearch-6.2.4  elasticsearch-head  node-v9.6.1-linux-x64

[root@node-1 ~]# cd /opt/elasticsearch-head/

[root@node-1 elasticsearch-head]# ls

Dockerfile                          Gruntfile.js       LICENCE                       proxy           src

Dockerfile-alpine                   grunt_fileSets.js  package.json                  README.textile  test

elasticsearch-head.sublime-project  index.html         plugin-descriptor.properties  _site

更换npm源,安装cnpm命令,使用cnpm命令安装head插件

[root@node-1 elasticsearch-head]# npm install -g cnpm --registry=https://registry.npm.taobao.org

[root@node-1 elasticsearch-head]# cnpm install   #使用cnpm安装

……下面有些报错,但是没影响

Error: post install error, please remove node_modules before retry!

Run "sh -c node install.js" error, exit code 1

    at ChildProcess.proc.on.code (/opt/node-v9.6.1-linux-x64/lib/node_modules/cnpm/node_modules/runscript/index.js:74:21)

    at ChildProcess.emit (events.js:127:13)

……

[root@node-1 elasticsearch-head]# vim Gruntfile.js

……

                connect: {

                        server: {

                                options: {

                                        hostname: '*',  #添加

                                        port: 9100,

                                        base: '.',

                                        keepalive: true

                                }

                        }

                }

[root@node-1 elasticsearch-head]# vim _site/app.js

……

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.224.135:9200"; #修改成本机ip

wq

d)重新启动es服务: (可以在另一个普通用户的窗口)

[esyonghu@node-1 bin]$ ps -ef |grep elasticsearch

查看进程号:2336

[esyonghu@node-1 bin]$ kill -9 2336

[esyonghu@node-1 bin]$ pwd

/opt/elasticsearch-6.2.4/bin

[esyonghu@node-1 bin]$ ./elasticsearch -d

[esyonghu@node-1 bin]$ tailf /opt/elasticsearch-6.2.4/logs/shi.log

[esyonghu@node-1 bin]$ netstat -anput |grep 9200

有端口

e)启动es-head插件:(另一个终端,可以用root用户启动)

[root@node-1 elasticsearch-head]# cd /opt/elasticsearch-head/node_modules/grunt/bin/

[root@node-1 bin]# ls

grunt

[root@node-1 bin]# ./grunt server &         #启动head插件服务

………

Running "connect:server" (connect) task

Waiting forever...

Started connect web server on http://localhost:9100

[root@node-1 bin]# netstat -anput |grep 9100

tcp6       0      0 :::9100                 :::*                    LISTEN      2650/grunt

[root@node-1 bin]# cd

f)客户端浏览器访问:访问正常es和插件管理地址   http://192.168.224.135:9200/

http://192.168.224.135:9100/

等node-2机器节点的es启动后,从node-1的head插件查看集群状态就是如下状态了:

2.192.168.224.136机器上安装elasticsearch-2

1)安装elasticsearch:

a)环境准备

[root@bogon ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.224.135 node-1

192.168.224.136 node-2

[root@bogon ~]# vim /etc/security/limits.conf

* soft nofile 65536     #注意必须是65536以上,65535都不行

* hard nofile 65536

* soft nproc 4096

* hard nproc 4096

[root@bogon ~]# vim /etc/security/limits.d/20-nproc.conf

*          soft    nproc     4096        #至少是4096,若小于则需修改,也可大于4096

[root@bogon ~]# vim /etc/sysctl.conf

vm.max_map_count=262144      #添加,至少是262144

[root@bogon ~]# sysctl -p

[root@bogon ~]# reboot    #注意:重启后,主机名自动变成node-2了就

[root@node-2 ~]# systemctl stop firewalld.service  

b)安装jdk1.8

[root@node-2 ~]# mkdir /usr/local/java

[root@node-2 ~]# rz

上传jdk1.8包

[root@node-2 ~]# ls

jdk-8u144-linux-x64.tar.gz

[root@node-2 ~]# tar -zxf jdk-8u144-linux-x64.tar.gz

[root@node-2 ~]# ls

jdk1.8.0_144  jdk-8u144-linux-x64.tar.gz

[root@node-2 ~]# mv jdk1.8.0_144/ /usr/local/java/

[root@node-2 ~]# ls /usr/local/java/

jdk1.8.0_144

[root@node-2 ~]# vim /etc/profile

#最后面添加:

JAVA_HOME=/usr/local/java/jdk1.8.0_144

CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH

[root@node-2 ~]# source  /etc/profile

[root@node-2 ~]# java -version

java version "1.8.0_144"

Java(TM) SE Runtime Environment (build 1.8.0_144-b01)

Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

[root@node-2 ~]# rz

上传elasticsearch包,并安装elasticsearch,(es启动需要普通用户,其他服务启动用root)

[root@node-2 ~]# ls

elasticsearch-6.2.4.tar.gz  jdk-8u144-linux-x64.tar.gz

[root@node-2 ~]# tar -zxf elasticsearch-6.2.4.tar.gz

[root@node-2 ~]# ls

elasticsearch-6.2.4  elasticsearch-6.2.4.tar.gz  jdk-8u144-linux-x64.tar.gz

[root@node-2 ~]# mv elasticsearch-6.2.4 /opt/

[root@node-2 ~]# ls /opt/elasticsearch-6.2.4/

bin  config  lib  LICENSE.txt  logs  modules  NOTICE.txt  plugins  README.textile

[root@node-2 ~]# groupadd eszu

[root@node-2 ~]# useradd esyonghu -g eszu -p 123456

[root@node-2 ~]# chown -R esyonghu:eszu /opt/elasticsearch-6.2.4/

[root@node-2 ~]# su - esyonghu

[esyonghu@node-2 ~]$ vim /opt/elasticsearch-6.2.4/config/elasticsearch.yml

cluster.name: shi                 #修改,集群的名称,两个必须一样,就是通过是不是同一个名称判断是不是一个集群

node.name: node-2                 #node-2

path.data: /opt/elasticsearch-6.2.4/data

path.logs: /opt/elasticsearch-6.2.4/logs

network.host: 192.168.224.136     #修改,本机ip,或者0.0.0.0,监听本机所有ip

http.port: 9200                   #释放

#下面一行是新添加的,改成单播,默认是组播,(通过单播两个集机器通讯)

discovery.zen.ping.unicast.hosts: ["192.168.224.135","192.168.224.136"]

#下面两个是新加的,允许跨域访问

http.cors.enabled: true

http.cors.allow-origin: '*'

[esyonghu@node-2 ~]$ mkdir /opt/elasticsearch-6.2.4/data

[esyonghu@node-2 ~]$ cd /opt/elasticsearch-6.2.4/bin/

[esyonghu@node-2 bin]$ ls elasticsearch

elasticsearch

[esyonghu@node-2 bin]$ ./elasticsearch -d     #后台启动es,或者先./ elasticsearch前台启动查看下是否能启动再后台启动

[esyonghu@node-2 bin]$ tailf /opt/elasticsearch-6.2.4/logs/shi.log  #查看启动日志,要等会才能形成日志,会创建一个带集群名的日志

………

[2019-04-01T10:38:08,446][INFO ][o.e.h.n.Netty4HttpServerTransport] [node-2] publish_address {192.168.224.136:9200}, bound_addresses {192.168.224.136:9200}

[2019-04-01T10:38:08,447][INFO ][o.e.n.Node               ] [node-2] started

[esyonghu@node-2 bin]$ netstat -anput |grep 9200

有9200端口

[esyonghu@node-2 bin]$ curl http://192.168.224.136:9200

能访问es默认页面

客户端浏览器外网访问,如下:http://192.168.224.136:9200/ 

c)elasticsearch安装head插件:是es的一个客户端管理工具(es5.0版本后,head插件独立安装)

安装nodejs环境:  (head插件会用到grunt,而grunt需要npm包管理器,所以需要安装nodejs环境)

另开一个窗口,用root用户,也可用其他用户

[root@node-2 ~]# rz

上传nodejs包

[root@node-2 ~]# ls

elasticsearch-6.2.4.tar.gz  jdk-8u144-linux-x64.tar.gz  node-v9.6.1-linux-x64.tar.xz

[root@node-2 ~]# xz -d node-v9.6.1-linux-x64.tar.xz

[root@node-2 ~]# ls

elasticsearch-6.2.4.tar.gz  jdk-8u144-linux-x64.tar.gz  node-v9.6.1-linux-x64.tar

[root@node-2 ~]# tar -xf node-v9.6.1-linux-x64.tar

[root@node-2 ~]# ls

elasticsearch-6.2.4.tar.gz  jdk-8u144-linux-x64.tar.gz  node-v9.6.1-linux-x64  node-v9.6.1-linux-x64.tar

[root@node-2 ~]# mv node-v9.6.1-linux-x64 /opt/

[root@node-2 ~]# ls /opt/node-v9.6.1-linux-x64/

bin  CHANGELOG.md  include  lib  LICENSE  README.md  share

[root@node-2 ~]# export PATH=$PATH:/opt/node-v9.6.1-linux-x64/bin

[root@node-2 ~]# echo "export PATH=$PATH:/opt/node-v9.6.1-linux-x64/bin" >> /etc/profile

[root@node-2 ~]# tail -1 /etc/profile

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/node-v9.6.1-linux-x64/bin:/opt/node-v9.6.1-linux-x64/bin

[root@node-2 ~]# source  /etc/profile

[root@node-2 ~]# node -v

v9.6.1

[root@node-2 ~]# npm -v

5.6.0

[root@node-2 ~]# npm install -g grunt-cli     #安装head插件依赖工具

[root@node-2 ~]# grunt --version

grunt-cli v1.3.2

从github删下载head插件,也可先下载后,保留存起来

[root@node-2 ~]# yum -y install git

[root@node-2 ~]# git clone git://github.com/mobz/elasticsearch-head.git

[root@node-2 ~]# ls

elasticsearch-6.2.4.tar.gz  elasticsearch-head  jdk-8u144-linux-x64.tar.gz  node-v9.6.1-linux-x64.tar

[root@node-2 ~]# mv elasticsearch-head/ /opt     #移到/opt/elasticsearch-6.2.4/plugins/试验不行,新版可能不让在该目录下安装插件

[root@node-2 ~]# ls /opt/

elasticsearch-6.2.4  elasticsearch-head  node-v9.6.1-linux-x64

[root@node-2 ~]# cd /opt/elasticsearch-head/

[root@node-2 elasticsearch-head]# ls

Dockerfile                          Gruntfile.js       LICENCE                       proxy           src

Dockerfile-alpine                   grunt_fileSets.js  package.json                  README.textile  test

elasticsearch-head.sublime-project  index.html         plugin-descriptor.properties  _site

更换npm源,安装cnpm命令,使用cnpm命令安装head插件

[root@node-2 elasticsearch-head]# npm install -g cnpm --registry=https://registry.npm.taobao.org

[root@node-2 elasticsearch-head]# cnpm install   #使用cnpm安装

……下面有些报错,但是没影响

Error: post install error, please remove node_modules before retry!

Run "sh -c node install.js" error, exit code 1

    at ChildProcess.proc.on.code (/opt/node-v9.6.1-linux-x64/lib/node_modules/cnpm/node_modules/runscript/index.js:74:21)

    at ChildProcess.emit (events.js:127:13)

……

[root@node-2 elasticsearch-head]# vim Gruntfile.js

……

                connect: {

                        server: {

                                options: {

                                        hostname: '*',  #添加

                                        port: 9100,

                                        base: '.',

                                        keepalive: true

                                }

                        }

                }

[root@node-2 elasticsearch-head]# vim _site/app.js

……

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.224.136:9200"; #修改成本机ip

wq

d)重新启动es服务: (可以在另一个普通用户的窗口)

[esyonghu@node-2 bin]$ ps -ef |grep elasticsearch

查看进程号:11680

[esyonghu@node-2 bin]$ kill -9 11680

[esyonghu@node-2 bin]$ pwd

/opt/elasticsearch-6.2.4/bin

[esyonghu@node-2 bin]$ ./elasticsearch -d

[esyonghu@node-2 bin]$ tailf /opt/elasticsearch-6.2.4/logs/shi.log

……

[2019-04-01T11:00:19,699][INFO ][o.e.n.Node               ] [node-2] started

[2019-04-01T11:00:19,777][INFO ][o.e.g.GatewayService     ] [node-2] recovered [0] indices into cluster_state

[esyonghu@node-2 bin]$ netstat -anput |grep 9200

有端口

e)启动es-head插件:(另一个终端,可以用root用户启动)

[root@node-2 elasticsearch-head]# cd /opt/elasticsearch-head/node_modules/grunt/bin/

[root@node-2 bin]# ls

grunt

[root@node-2 bin]# ./grunt server &         #启动head插件服务

………

Running "connect:server" (connect) task

Waiting forever...

Started connect web server on http://localhost:9100

[root@node-2 bin]# netstat -anput |grep 9100

tcp6       0      0 :::9100                 :::*                    LISTEN      11983/grunt

[root@node-2 bin]# cd

f)客户端浏览器访问:访问正常es和插件管理地址   http://192.168.224.136:9200/ 

http://192.168.224.136:9100/

上面之所以只能看到自己的节点,看不到节点1,是因为节点1没重启,没发现节点1,此时,可以重启一个node1节点的elasticsearch服务,再从node2节点查看集群状态,如下:

二、搭建es集群后,分别在两个节点上使用head插件,在集群中写入数据并查看

1.192.168.224.135机器上,使用head插件向es集群中写入数据:

点击复合查询,如下:

删除默认的,写些测试数据,如下:

http://192.168.224.135:9200/     #默认的地址,注意:最后一个/不能去掉

index-demo1/test1                #这些都是手动自定义的,创建后,形成的索引名(数据库名)就是:index-demo1,类型(表)是:test1,注:index-…前面不能有/,

数据:

{

  "user":"shi1",

  "age":"11",

  "gender":"male"

}

如下:

写入数据后,选择post方式提交,点击提交请求,如下:

点击概览处—可能需要稍等下才能显示数据分片,查看:

点击数据浏览,查看从节点1的head插件写入的数据:

等节点2也用head插件写入集群数据后,也可在节点1上用head插件查看到节点2写入集群的数据,如下:

2.192.168.224.136机器上,使用head插件向es集群中写入数据:(注意节点1用head插件写入的数据,在节点2使用head插件也能查看节点1写入的数据)

点击复合查询,如下:

删除默认的,写些测试数据,如下:

http://192.168.224.136:9200/     #默认的地址,注意:最后一个/不能去掉

index-demo2/test2                #这些都是手动自定义的,创建后,形成的索引名(数据库名)就是:index-demo2,类型(表)是:test2,注:index-…前面不能有/,

数据:

{

  "user":"shi2",

  "age":"22",

  "gender":"male"

}

如下:

写入数据后,选择post方式提交,点击提交请求,如下:

点击概览处—可能需要稍等下才能显示数据分片,查看:

点击数据浏览,查看从节点2的head插件写入的数据,同时也可查看到节点1写入集群的数据,如下:

如果对运维课程感兴趣,可以在b站上、A站或csdn上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频

;