Elasticsearch 7.10 + Kibana 集群搭建

1,404 阅读4分钟

说明

集群规划

hadoop300Hadoop301Hadoop302
ElasticsearchVVV
KibanaV

[Tip]

  • 如无特别说明, 所有配置每个服务器要保持一致

ES安装

1、软件包放置

  • 下载解压elasticsearch7.10.2后, 解压到每台服务器的一个位置即可.
  • 下载解压kibana7.10.2包后只放在hadoop300节点部署一个即可.,其他节点不用

如下hadoop300的放置, 其他集群服务器一样放置,除了kibana

[hadoop@hadoop300 app]$ pwd
/home/hadoop/app
[hadoop@hadoop300 app]$ ll
总用量 0
lrwxrwxrwx. 1 hadoop hadoop  51 1月  21 14:24 elasticsearch -> /home/hadoop/app/manager/es_mg/elasticsearch-7.10.2
lrwxrwxrwx. 1 hadoop hadoop  44 1月  13 23:24 jdk -> /home/hadoop/app/manager/jdk_mg/jdk1.8.0_212
drwxrwxr-x. 8 hadoop hadoop 101 1月  21 14:23 manager
lrwxrwxrwx. 1 hadoop hadoop  61 1月  21 19:57 kibana -> /home/hadoop/app/manager/kinana_mg/kibana-7.10.2-linux-x86_64

2、配置环境变量

编辑vim ~/.bash_profile 文件添加如下, 每台服务器都要配置

# ================= Elasticsearch ==============
export ES_HOME=/home/hadoop/app/elasticsearch
export PATH=$PATH:$ES_HOME/bin

3、IK分词器(可选)

1、先在${ES_HOME}/plugins 目录下创建一个目录叫ik, 然后把下载的ik分词器解压后放到${ES_HOME}/plugins/ik 目录下即可 (每台服务器节点都要放)

[hadoop@hadoop300 plugins]$ pwd
/home/hadoop/app/elasticsearch/plugins
[hadoop@hadoop300 plugins]$ mkdir ik
[hadoop@hadoop300 download]$ mv elasticsearch-analysis-ik-7.10.2.zip ~/app/elasticsearch/plugins/ik/
[hadoop@hadoop300 download]$ cd ~/app/elasticsearch/plugins/ik/
[hadoop@hadoop300 ik]$ ll
总用量 4400
-rw-rw-r--. 1 hadoop hadoop 4504440 1月  21 21:37 elasticsearch-analysis-ik-7.10.2.zip
[hadoop@hadoop300 ik]$ unzip elasticsearch-analysis-ik-7.10.2.zip
[hadoop@hadoop300 ik]$ ll
总用量 5832
-rw-r--r--. 1 hadoop hadoop  263965 5月   6 2018 commons-codec-1.9.jar
-rw-r--r--. 1 hadoop hadoop   61829 5月   6 2018 commons-logging-1.2.jar
drwxr-xr-x. 2 hadoop hadoop    4096 12月 25 2019 config
-rw-r--r--. 1 hadoop hadoop   54626 1月  18 10:56 elasticsearch-analysis-ik-7.10.2.jar
-rw-rw-r--. 1 hadoop hadoop 4504440 1月  21 21:37 elasticsearch-analysis-ik-7.10.2.zip
-rw-r--r--. 1 hadoop hadoop  736658 5月   6 2018 httpclient-4.5.2.jar
-rw-r--r--. 1 hadoop hadoop  326724 5月   6 2018 httpcore-4.4.4.jar
-rw-r--r--. 1 hadoop hadoop    1807 1月  18 10:56 plugin-descriptor.properties
-rw-r--r--. 1 hadoop hadoop     125 1月  18 10:56 plugin-security.policy

4、 修改ES集群配置

  • 修改${ES_HOME}/config/elasticsearch.yml 配置文件

hadoop300节点的配置

# Elasticsearch集群名称
cluster.name: ES-CLUSTER
# 集群中该Elasticsearch节点的名称, 不可与其他节点相同
node.name: node-1
# 设置存放Elasticsearch索引数据的文件目录
path.data: /home/hadoop/app/elasticsearch/data
# 设置存放日志文件的文件目录
path.logs: /home/hadoop/app/elasticsearch/logs
# 该Elasticsearch节点绑定的IP地址或者主机名
network.host: hadoop300
# 配置Elasticsearch集群中所有节点绑定的IP地址或者主机名列表。
discovery.seed_hosts: ["hadoop300", "hadoop301", "hadoop302"]
# 配置哪些节点可以有资格被选为主节点。
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

hadoop301 节点的配置同上,除了下面两个属性

node.name: node-2
network.host: hadoop301

hadoop303 节点的配置同上,除了下面两个属性

node.name: node-3
network.host: hadoop302

5、Elasticsearch集群统一启动/停止脚本

[hadoop@hadoop300 shell]$ pwd
/home/hadoop/shell
[hadoop@hadoop300 shell]$ vim es.sh
[hadoop@hadoop300 shell]$ chmod ug+x es.sh
[hadoop@hadoop300 shell]$ ll
-rwxrwxr--. 1 hadoop hadoop 464 1月  14 17:50 es.sh

es.sh内容如下

[Tip]

  • 因为配置了ES的环境变量到~/.bash_profile 下所以可以直接使用elasticsearch命令. 当然也可以写该脚本的绝对路径即可.
  • ssh远程执行命令默认不会加载这个bash_profile环境变量,所以手动source一下
# 集群列表
list=(hadoop300 hadoop301 hadoop302)

case $1 in
"start"){
        for i in ${list[@]}
        do
          echo ---------- Elasticsearch[ $i ]启动 ------------
                ssh $i "source ~/.bash_profile;elasticsearch -d -p pid"
        done
};;
"stop"){
        for i in ${list[@]}
        do
          echo ---------- Elasticsearch[ $i ]停止 ------------    
                ssh $i "source ~/.bash_profile;pkill -F ${ES_HOME}/pid"
        done
};;
"status"){
        for i in ${list[@]}
        do
          echo ---------- Elasticsearch[ $i ] 集群状态 ------------    
                ssh $i "curl http://$i:9200/_cat/health?ts=false"
        done
};;
"list"){  
          echo ---------- Elasticsearch[ $i ] 集群列表 ------------    
         curl http://`hostname`:9200/_cat/allocation
};;
esac   

然后将该脚本挂载到全局调用即可, 配置环境变量或者软连接挂载到 系统bin目录下

6、启动测试

启动ES

# 启动集群
[hadoop@hadoop300 ~]$ es.sh start
---------- Elasticsearch[ hadoop300 ]启动 ------------
---------- Elasticsearch[ hadoop301 ]启动 ------------
---------- Elasticsearch[ hadoop302 ]启动 ------------

[hadoop@hadoop300 ~]$ xcall jps
--------- hadoop300 ----------
9796 Elasticsearch
10324 Jps
--------- hadoop301 ----------
6162 Elasticsearch
6596 Jps
--------- hadoop302 ----------
5926 Elasticsearch
6361 Jps

#集群状态, green代表健康
[hadoop@hadoop300 app]$ es.sh status
---------- Elasticsearch[ hadoop300 ] 集群状态 ------------
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0ES-CLUSTER green 3 3 0 0 0 0 0 0 - 100.0%
100    42  100    42    0     0   2930      0 --:--:-- --:--:-- --:--:--  3000
---------- Elasticsearch[ hadoop301 ] 集群状态 ------------
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0ES-CLUSTER green 3 3 0 0 0 0 0 0 - 100.0%
100    42  100    42    0     0   3495      0 --:--:-- --:--:-- --:--:--  3818
---------- Elasticsearch[ hadoop302 ] 集群状态 ------------
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0ES-CLUSTER green 3 3 0 0 0 0 0 0 - 100.0%
100    42  100    42    0     0   3209      0 --:--:-- --:--:-- --:--:--  3230


[hadoop@hadoop300 ~]$ es.sh list
---------- Elasticsearch[ ] 集群列表 ------------
0 0b 4.5gb 21.1gb 25.7gb 17 hadoop300 192.168.13.115 node-1
0 0b 3.1gb 22.5gb 25.7gb 12 hadoop302 192.168.13.117 node-3
0 0b 3.1gb 22.5gb 25.7gb 12 hadoop301 192.168.13.112 node-2

浏览器访问 任意节点的9200端口查看ES信息

  • 如访问hadoop300:9200

在这里插入图片描述

Kibana安装

直接修改kibana.yml 配置文件即可

[hadoop@hadoop300 config]$ pwd
/home/hadoop/app/kibana/config
[hadoop@hadoop300 config]$ ll
总用量 12
-rw-r--r--. 1 hadoop hadoop 4926 121 20:02 kibana.yml
-rw-r--r--. 1 hadoop hadoop  216 113 10:07 node.options

kibana.yml 配置如下

# Kibana 访问地址
server.host: 0.0.0.0
# elasticsearch集群列表
elasticsearch.hosts: ["http://hadoop300:9200","http://hadoop301:9200","http://hadoop302:9200"]

然后 执行kibana 命令启动即可

[hadoop@hadoop300 bin]$ pwd
/home/hadoop/app/kibana/bin
[hadoop@hadoop300 bin]$ ll
总用量 12
-rwxr-xr-x. 1 hadoop hadoop 835 1月  13 10:07 kibana
-rwxr-xr-x. 1 hadoop hadoop 776 1月  13 10:07 kibana-keystore
-rwxr-xr-x. 1 hadoop hadoop 813 1月  13 10:07 kibana-plugin
[hadoop@hadoop300 bin]$ ./kibana

默认端口是5601, 浏览器访问 在这里插入图片描述

ES启动失败问题

ES启动对系统配置有一定要求

1、linux 文件句柄数过低问题[ file descriptors]

问题描述: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

解决: 修改linux 文件描述符大小设置

sudo vim /etc/security/limits.conf

修改如下:

* soft nofile 65536
* hard nofile 131072

查看修改后的文件句柄数

[hadoop@hadoop300 bin]$ ulimit -a | grep open
open files                      (-n) 65536

2、vm.max_map_count 过低问题

max_map_count表示限制一个进程可以拥有的VMA(虚拟内存区域)的数量

问题描述: 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

之后重启服务器,查看此时的大小

[hadoop@hadoop300 bin]$ sysctl vm.max_map_count
vm.max_map_count = 262144