ElasitciSearch高可用构建--Docker中安装

80 阅读4分钟

前言:搭建ElasticSearch的高可用环境,以及Kibana的可视化的安装

0、需要提前安装好docker,不会安装的可以去这里查看:

centos7下,安装docker

centos7下,安装docker2

1、ElasticSearch安装

1.0 docker 固定docker容器ip

    docker network create --subnet=172.188.0.0/16 xmleeNetwork

image.png

1.1、镜像拉取

    # 镜像拉取
    docker pull elasticsearch:7.4.0
    # 查看镜像
    docker images

image.png

1.2、挂载目录创建

  1. 数据目录(递归创建目录)
    mkdir -p /usr/local/es/config/XMLeeNodeData1 
    mkdir -p /usr/local/es/config/XMLeeNodeData2 
    mkdir -p /usr/local/es/config/XMLeeNodeData3

image.png 2. 日志目录

    mkdir -p /usr/local/es/config/XMLeeNodeLog1 
    mkdir -p /usr/local/es/config/XMLeeNodeLog2 
    mkdir -p /usr/local/es/config/XMLeeNodeLog3

image.png 3. 分词器插件挂载目录

    mkdir -p /usr/local/es/config/plugins

image.png 4. 设置权限

    chmod -R 777 /usr/local/es/

image.png image.png

1.3、集群节点配置

  1. 节点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
  1. 节点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
  1. 节点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

image.png

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版本)

image.png

1.5、验证集群

  1. 前置操作:关闭防火墙或者开放端口
#暂时关闭防火墙
systemctl stop firewalld
或者
#永久设置防火墙状态
systemctl enable firewalld.service #打开防火墙永久性生效,重启后不会复原
systemctl disable firewalld.service #关闭防火墙,永久性生效,重启后不会复原
  1. 开放端口 点击查看开放端口的方式

  2. 浏览器输入对应的ip

image.png 4. 查看集群健康状态

image.png

1.6、常见的问题及解决方式

  1. elasticsearch用户拥有的内存权限太小,至少需要262144;

image.png 解决方式:

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

image.png

2.2、挂载目录创建

    mkdir -p /usr/local/kibana/config/

image.png

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、见的问题及解决方式

  1. Kibana server is not ready yet image.png

查看自己的配置文件的配置的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*