目录
ElasticSearch集群搭建
一、ElasticSearch集群搭建
1.提前准备工作
服务器3台,ip分别为:192.168.75.100 、192.168.75.101 、192.168.75.102
三台服务器分别开发9100、9200,9300端口,或者直接关闭防火墙也可以。
为什么服务器最好是3台及以上?
简单说明:因为集群中必须得有个master节点,master仅仅负责维护集群的状态,若是老的master宕机的话,需要重新选举出新的master,如果是偶数节点可能导致票数相同的情况,从而出现脑裂的问题。
虽然es的配置中可以通过配置 minimum_master_nodes 来防止出现脑裂,但是为了尽量保持高可用,还是尽量使用3台或3台以上比较好。
3台服务器先安装好es,不用进行配置。
单台es安装教程:Linux下安装ElasticSarch、Kibana、IK分词器
2.修改配置文件
3台都安装完毕后,进行每个es配置文件的修改,修改elasticsearch.yml 文件即可。
vi config/elasticsearch.yml
配置文件内容如下:
# 集群名称(每个节点必须相同)
cluster.name: chenxuan-es
# 节点名称(每个节点名称必须不同)
node.name: node-1
# 索引数据存放路径
path.data: /usr/local/es/elasticsearch-7.6.1/data
# 日志存放路径
path.logs: /usr/local/es/elasticsearch-7.6.1/log
# 当前服务器IP地址
network.host: 192.168.75.100
# es服务对外提供的端口号
http.port: 9200
# 服务发现的端口号(集群的服务端口,集群的时候一定要设置该参数)
transport.tcp.port: 9300
# 设置是否压缩tcp传输时的数据,默认为false,不压缩
transport.tcp.compress: true
# 集群各个节点的ip
discovery.seed_hosts: ["192.168.75.100","192.168.75.101","192.168.75.102"]
# 集群各个节点名称,集群选举设置
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
# 避免脑裂问题,集群节点数最少为半数+1
discovery.zen.minimum_master_nodes: 2
bootstrap.system_call_filter: false
# 锁定物理内存地址,设置为true可以锁住ES使用的内存,避免内存进行swap
bootstrap.memory_lock: false
# 开启跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
3台都配置完毕后,逐一启动es。
二、安装elasticsearch-head 插件
由于es原生的界面比较不友好,可以安装elasticsearch插件。elasticsearch-head这个插件是es提供的一个用于图形化界面查看的一个插件工具,可以安装上这个插件之后,通过这个插件来实现我们通过浏览器查看es当中的数据。
1.安装nodejs
要安装elasticsearch-head插件,需要先安装Node.js
nodejs下载地址:http://npm.taobao.org/mirrors/node/v8.1.0/node-v8.1.0-linux-x64.tar.gz
将下载好的tar包放至服务器上,要是服务器本身就联网的情况下可以直接通过 wget http://npm.taobao.org/mirrors/node/v8.1.0/node-v8.1.0-linux-x64.tar.gz 进行下载
我是将tar包放在/usr/local/es 目录下,然后进行解压
tar -zxvf node-v8.1.0-linux-x64
解压完后创建软连接:
sudo ln -s /usr/local/es/node-v8.1.0-linux-x64/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm
sudo ln -s /usr/local/es/node-v8.1.0-linux-x64/bin/node /usr/local/bin/node
修改环境变量:
vi /etc/profile
# nodejs
export NODE_HOME=/usr/local/es/node-v8.1.0-linux-x64
export PATH=:$PATH:$NODE_HOME/bin
使环境变量生效:
source /etc/profile
验证是否安装成功:
[root@localhost ~]# node -v
v8.1.0
[root@localhost ~]# npm -v
5.0.3
[root@localhost ~]#
nodejs安装完成。
2.安装ElasticSearch-head
Github地址:https://github.com/mobz/elasticsearch-head
现在github上下载ElasticSearch-head
将下载好的插件放至服务器,解压,进入目录
cd elasticsearch-head/
然后进行编译,执行 npm install
注:如果安装不成功,下载失败,编译失败。我这里有编译好的安装包,可以私聊我,我可以发给你。
如果安装成功,下面则需要修改配置文件:
我是安装在我服务器的 /usr/local/es 目录下,修改配置文件
vi /usr/local/es/elasticsearch-head/Gruntfile.js
大概在90多行的位置:将hostname修改为 当前服务器ip,如下:
connect: {
server: {
options: {
hostname: '192.168.75.100',
port: 9100,
base: '.',
keepalive: true
}
}
}
修改app.js配置:
vi /usr/local/es/elasticsearch-head/_site/app.js
大概在4350行左右,修改 http://localhost:9200 为 http://192.168.75.100:9200
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.75.100:9200";
配置修改完毕,启动head插件
后台启动,进入bin目录:
[cx@localhost bin]$ nohup ./grunt server >/dev/null 2>&1 &
elasticsearch-head 插件启动完成。
三、打开head页面查看集群情况
可以直接通过该工具直接查看到相应的数据。
至此,es集群环境也已经搭建完毕。
一路上遇坑无数,一路踩过来,希望你能一把成功。