前言:搭建ElasticSearch的高可用环境,以及Kibana的可视化的安装
0、需要提前安装好docker,不会安装的可以去这里查看:
1、ElasticSearch安装
1.0 docker 固定docker容器ip
docker network create --subnet=172.188.0.0/16 xmleeNetwork
1.1、镜像拉取
# 镜像拉取
docker pull elasticsearch:7.4.0
# 查看镜像
docker images
1.2、挂载目录创建
- 数据目录(递归创建目录)
mkdir -p /usr/local/es/config/XMLeeNodeData1
mkdir -p /usr/local/es/config/XMLeeNodeData2
mkdir -p /usr/local/es/config/XMLeeNodeData3
2. 日志目录
mkdir -p /usr/local/es/config/XMLeeNodeLog1
mkdir -p /usr/local/es/config/XMLeeNodeLog2
mkdir -p /usr/local/es/config/XMLeeNodeLog3
3. 分词器插件挂载目录
mkdir -p /usr/local/es/config/plugins
4. 设置权限
chmod -R 777 /usr/local/es/
1.3、集群节点配置
- 节点1配置,文件名:XMLeeNode1.yml
#集群名称
cluster.name: xmlee-es
#节点名称
node.name: XMLeeNode1
#是不是有资格主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3
#ip地址
network.host: 0.0.0.0
#端口
http.port: 9200
#内部节点之间沟通端口
transport.tcp.port: 9700
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["172.188.0.88:9700","172.188.0.89:9800","172.188.0.90:9900"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["XMLeeNode1", "XMLeeNode2","XMLeeNode3"]
#数据和存储路径
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
- 节点2配置,文件名:XMLeeNode2.yml
#集群名称
cluster.name: xmlee-es
#节点名称
node.name: XMLeeNode2
#是不是有资格主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 2
#ip地址
network.host: 0.0.0.0
#端口
http.port: 9201
#内部节点之间沟通端口
transport.tcp.port: 9800
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["172.188.0.88:9700","172.188.0.89:9800","172.188.0.90:9900"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["XMLeeNode1", "XMLeeNode2","XMLeeNode3"]
#数据和存储路径
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
- 节点3配置,文件名:XMLeeNode3.yml
#集群名称
cluster.name: xmlee-es
#节点名称
node.name: XMLeeNode3
#是不是有资格主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3
#ip地址
network.host: 0.0.0.0
#端口
http.port: 9202
#内部节点之间沟通端口
transport.tcp.port: 9900
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["172.188.0.88:9700","172.188.0.89:9800","172.188.0.90:9900"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["XMLeeNode1", "XMLeeNode2","XMLeeNode3"]
#数据和存储路径
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
1.4、启动集群
#节点1
docker run -d --restart=always -p 9200:9200 -p 9700:9700 -v /usr/local/es/config/XMLeeNode1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/es/config/XMLeeNodeData1:/usr/share/elasticsearch/data -v /usr/local/es/config/XMLeeNodeLog1:/usr/share/elasticsearch/config/logs -v /usr/local/es/config/plugins:/usr/share/elasticsearch/plugins --name XMLeeNode1 --net xmleeNetwork --ip 172.188.0.88 --privileged=true elasticsearch:7.4.0(自己的es版本)
#节点2
docker run -d --restart=always -p 9201:9201 -p 9800:9800 -v /usr/local/es/config/XMLeeNode2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/es/config/XMLeeNodeData2:/usr/share/elasticsearch/data -v /usr/local/es/config/XMLeeNodeLog2:/usr/share/elasticsearch/config/logs -v /usr/local/es/config/plugins:/usr/share/elasticsearch/plugins --name XMLeeNode2 --net xmleeNetwork --ip 172.188.0.89 --privileged=true elasticsearch:7.4.0(自己的es版本)
#节点3
docker run -d --restart=always -p 9202:9202 -p 9900:9900 -v /usr/local/es/config/XMLeeNode3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/es/config/XMLeeNodeData3:/usr/share/elasticsearch/data -v /usr/local/es/config/XMLeeNodeLog3:/usr/share/elasticsearch/config/logs -v /usr/local/es/config/plugins:/usr/share/elasticsearch/plugins --name XMLeeNode3 --net xmleeNetwork --ip 172.188.0.90 --privileged=true elasticsearch:7.4.0(自己的es版本)
1.5、验证集群
- 前置操作:关闭防火墙或者开放端口
#暂时关闭防火墙
systemctl stop firewalld
或者
#永久设置防火墙状态
systemctl enable firewalld.service #打开防火墙永久性生效,重启后不会复原
systemctl disable firewalld.service #关闭防火墙,永久性生效,重启后不会复原
-
开放端口 点击查看开放端口的方式
-
浏览器输入对应的ip
4. 查看集群健康状态
1.6、常见的问题及解决方式
- elasticsearch用户拥有的内存权限太小,至少需要262144;
解决方式:
1、服务器重启之后,需要重新执行
执行命令:
sysctl -w vm.max_map_count=262144
查看结果:
sysctl -a|grep vm.max_map_count
显示:
vm.max_map_count = 262144
2、需要切换至root用户修改/etc/sysctl.conf,增加如下配置,然后执行 sysctl -p 刷新,再切换es用户重启服务。
vm.max_map_count=262145
2、Kibana监控中心与可视化(与ElasticSearch版本保持一致,不然会有各种问题)
2.1、镜像拉取
docker pull kibana:7.4.0
2.2、挂载目录创建
mkdir -p /usr/local/kibana/config/
2.3、启动ibana
# 不通过挂载
docker run --name kibana --net xmleeNetwork --ip 172.188.0.66 --privileged=true -p 5601:5601 --restart=always -d 0328df36f79f(自己的容器id)
# 通过挂载
docker run --name kibana --net xmleeNetwork --ip 172.188.0.66 --privileged=true -p 5601:5601 --restart=always -v /usr/local/kibana/config/:/usr/share/kibana/config/ -d 0328df36f79f(自己的容器id)
# 使用挂载方式,需要将下面的配置文件,放到之前创建的挂载目录下面
2.4、将kibana.yml文件
docker exec -it 容器id /bin/bash
vi config/kibana.yml
修改内容
server.name: kibana
server.host: "0"
elasticsearch.hosts: ["http://172.188.0.88:9200","http://172.188.0.89:9201","http://172.188.0.90:9202"]
xpack.monitoring.ui.container.elasticsearch.enabled: true
2.4、访问kibana
浏览器输入自己ip+端口号
2.5、见的问题及解决方式
- Kibana server is not ready yet
查看自己的配置文件的配置的es的ip和端口是否正确 2. 其他的
1、es与kibana版本不一致
2、没有配置es的url
3、浏览器缓存
4、删除kibana_task_manager_1索引(重点)
5、删除.kibana_index_1 索引
curl -XDELETE或者postman
DELETE : http://192.168.200.137:9200/.kibana*