一. Cenos7搭建ElasticSearch集群环境并配置Kibana

1. 配置java环境

Centos系统安装成功后需要先卸载自带的jdk8

参考:https://www.cnblogs.com/happyflyingpig/p/8068020.html
一键配置脚本包:http://ovenguo.oss-cn-beijing.aliyuncs.com/file/centos7removejdk8.sh

使用以下命令查找jdk包

1
2
3
rpm -qa|grep java
rpm -qa|grep jdk
rpm -qa|grep gcj

卸载已安装的jdk

1
2
3
4
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64
rpm -e --nodeps java-1.7.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64

验证是否还有jdk

1
2
rpm -qa|grep java
java -version

ES7.5版本要求jdk最低版本为jdk11,所以从Oracle官网下载JDK11,并上传到/opt文件夹,使用tar -xvf jdk-11.0.5_linux-x64_bin.tar,然后重命名为jdk:mv jdk-11.0.5_linux-x64_bin jdk.

配置Java环境变量,在/etc/profile增加配置:

1
2
3
export JAVA_HOME=/opt/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

增加配置后保存关闭,执行source /etc/profile,测试jdk是否配置成功java -version,出现如下界面证明配置成功:

2.增加用户组和用户

在官网上下载es和kibana 7.5

将es和kibana上传到服务器的/opt目录,并解压

因为ElasticSearch不允许root账户启动,所以需要创建es专用账户

1
2
3
4
useradd es 				#创建es账户
passwd es #给es账户设置密码,需要输入两遍密码
groupadd es #增加es用户组
usermod -G es es #将es用户分配到es用户组去

使用root账户登录,将elasticsearch文件夹分配给es账户,否则不能启动es

chown -R es:es elasticsearch-7.5.0

3. 修改es配置

/config/elasticsearch.yml增加如下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cluster.name: elasticsearch-cluster														#集群名称
node.name: es-node1 #节点名称
network.bind_host: 0.0.0.0 #访问限制,0.0.0.0代表没有限制
network.publish_host: 10.123.101.197 #开放访问ip,只允许使用此ip访问
http.port: 9200 #http开放端口
transport.tcp.port: 9300 #tcp开放端口
http.cors.enabled: true #如果启用了 HTTP 端口,那么此 属性会指定是否允许跨源 REST 请求
http.cors.allow-origin: "*" #如果 http.cors.enabled 的值 为 true,那么该属性会指定允许 REST 请求来自何处。
node.master: true #此节点可以被选举称主节点
node.data: true #此节点可以用来存放数据
discovery.zen.ping.unicast.hosts: #集群所有ip:tcpPort配置 ["10.123.101.197:9300","10.123.101.198:9300","10.123.101.226:9300"]
discovery.zen.minimum_master_nodes: 2 #最小可选举主节点配置
cluster.initial_master_nodes: ["es-node1"] #集群初始化主节点配置
xpack.monitoring.collection.enabled: true #开启监控

其中10.123.101.197是本机ip,其他两台机器分别改成本机ip就可以,discovery.zen.ping.unicast.hosts:是整个集群所有节点ip+端口号.

注:9200为http端口,9300位tcp端口,http端口使用来外部通讯的,tcp端口是用来jar之间的通信,ES集群是使用9300来进行通讯

4. ES启动常见报错

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

切换到root用户,修改/etc/security/limits.conf文件,增加以下配置,重新登录后启用新配置:

1
2
* soft nofile 65536
* hard nofile 65536

[2]: max number of threads [3818] for user [es] is too low, increase to at least [4096]

此报错代表最大线程个数太低

切换到root用户,修改/etc/security/limits.conf文件,增加以下配置,重新登录后启用新配置:

1
2
* soft nproc 4096
* hard nproc 4096

[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

修改/etc/sysctl.conf文件,增加配置vm.max_map_count=262144,执行sysctl -p使之生效

5. ES启动

进入es文件夹,执行./bin/elasticsearch来启动ES,出现如下界面表示启动成功:

此时,我们访问10.123.101.197:9200,可以出现:

证明此ES节点启动成功。

6. ES集群启动

在其他机器上重复执行上述步骤,将其他机器的ES分别启动

es-node2:

es-node3:

证明其他两个ES节点启动成功,访问

http://ip:9200/_cat/nodes?pretty

如果出现两个主节点,此为ES的脑裂,将所有节点关闭,并删除$ES_HOME下的data文件后,重启节点将恢复正常:

7. 破解白金永久权限

破解补助参考:https://www.cnblogs.com/sanduzxcvbnm/p/12000979.html

关闭所有集群,将破解文件x-pack-core-7.5.0.jar替换到ES目录下./moudles/x-pack-core/下,将原有包替换。

启动所有节点,访问http://10.123.101.197:9200后弹出登录框,进入es-node01节点的elasticsearch目录,执行下行指令:

1
./bin/elasticsearch-setup-passwords interactive

以配置Elastic Stack密码,并记住密码,如下图

8. 配置Kibana

将下载好的kibana压缩包上传到master节点下的/opt目录,解压缩后修改所有权为es用户

1
2
3
4
5
scp kibana-7.5.0-linux-x86_64.tar.gz root@centos01:/opt
su root
cd /opt
tar -zxvf kibana-7.5.0-linux-x86_64.tar.gz
chown -R es:es kibana-7.5.0-linux-x86_64

切换到es用户,修改./config/kibana.yml,增加如下配置(此处es密码为上一步所配置的密码):

1
2
3
4
5
6
7
i18n.locale: "zh-CN"
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://10.123.101.197:9200","http://10.123.101.198:9200","http://10.123.101.226:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.username: elastic
elasticsearch.passwd: elastic123

保存后,启动kibana, ./bin/kibana

显示Server running at http://0:5601后,访问http://ip:5601

证明Kibana启动成功,然后访问Stack Monitor

证明ES监控启动成功。