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/
等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/
上面之所以只能看到自己的节点,看不到节点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上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频