docker单节点安装elasticsearch7.1.1集群

1. 环境准备

  本次部署为单机部署三节点集群, 3maser节点, 同时也是数据节点.

#docker安装略,拉取es镜像
#cat /etc/redhat-release   CentOS Linux release 7.5.1804 (Core) #docker pull elasticsearch:7.1.1 #docker pull kibana:7.1.1

   新建数据持久化目录:

mkdir -p /data/elasticsearch/{data,logs,conf,plugins}
mkdir /data/elasticsearch/data/node{1,2,3}
mkdir /data/elasticsearch/logs/node{1,2,3}
mkdir /data/elasticsearch/plugins/node{1,2,3}

  添加配置文件模板:

  node1节点配置: vim /data/elasticsearch/conf/node1.yml

# 设置集群名称,集群内所有节点的名称必须一致。
cluster.name: myes
# 设置节点名称,集群内节点名称必须唯一。
node.name: node1
# 表示该节点会不会作为主节点,true表示会;false表示不会
node.master: true
# 当前节点是否用于存储数据,是:true、否:false
node.data: true
# 监听地址,用于访问该es
network.host: 0.0.0.0
# es对外提供的http端口,默认 9200
http.port: 9200
# TCP的默认监听端口,默认 9300
transport.tcp.port: 9300
# es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["172.19.1.11", "172.19.1.12","172.19.1.13"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["172.19.1.11", "172.19.1.12","172.19.1.13"]
# 是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.enabled: true
# “*” 表示支持所有域名
http.cors.allow-origin: "*"

  node2节点配置node2.yml:

 cluster.name: myes
 # 设置节点名称,集群内节点名称必须唯一。
 node.name: node2
 # 表示该节点会不会作为主节点,true表示会;false表示不会
 node.master: true
 # 当前节点是否用于存储数据,是:true、否:false
 node.data: true
 # 监听地址,用于访问该es
 network.host: 0.0.0.0
 # es对外提供的http端口,默认 9200
 http.port: 9200
 # TCP的默认监听端口,默认 9300
 transport.tcp.port: 9300
 # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
 discovery.seed_hosts: ["172.19.1.11", "172.19.1.12","172.19.1.13"]
 discovery.zen.fd.ping_timeout: 1m
 discovery.zen.fd.ping_retries: 5
 # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
 cluster.initial_master_nodes: ["172.19.1.11", "172.19.1.12","172.19.1.13"]
 # 是否支持跨域,是:true,在使用head插件时需要此配置
 http.cors.enabled: true
 # “*” 表示支持所有域名
 http.cors.allow-origin: "*"

  node3节点配置node3.yml:

 cluster.name: myes
 # 设置节点名称,集群内节点名称必须唯一。
 node.name: node3
 # 表示该节点会不会作为主节点,true表示会;false表示不会
 node.master: true
 # 当前节点是否用于存储数据,是:true、否:false
 node.data: true
 # 监听地址,用于访问该es
 network.host: 0.0.0.0
 # es对外提供的http端口,默认 9200
 http.port: 9200
 # TCP的默认监听端口,默认 9300
 transport.tcp.port: 9300
 # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
 discovery.seed_hosts: ["172.19.1.11", "172.19.1.12","172.19.1.13"]
 discovery.zen.fd.ping_timeout: 1m
 discovery.zen.fd.ping_retries: 5
 # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
 cluster.initial_master_nodes: ["172.19.1.11", "172.19.1.12","172.19.1.13"]
 # 是否支持跨域,是:true,在使用head插件时需要此配置
 http.cors.enabled: true
 # “*” 表示支持所有域名
 http.cors.allow-origin: "*"

  kibana配置文件:

server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://172.19.1.11:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true

2. 网络配置

  Docker创建容器时默认采用bridge网络,自行分配ip,不允许自己指定。

在实际部署中,我们需要指定容器ip,不允许其自行分配ip,尤其是搭建集群时,固定ip是必须的。

我们可以创建自己的bridge网络 : mynet,创建容器的时候指定网络为mynet并指定ip即可。

查看网络模式: docker network ls

 创建一个新的bridge类型网络:

docker network create --driver bridge --subnet=172.19.0.0/16 --gateway=172.19.1.1 mynet

 通过选项--network=mynet --ip 172.19.1.x 可以为新建容器指定ip地址

3. 创建并启动容器

  

#节点1启动
docker run -d --network=mynet --ip 172.19.1.11 --privileged=true -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9200:9200 --name node1 -e TAKE_FILE_OWNERSHIP=true -v /data/elasticsearch/config/node1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elasticsearch/data/node1:/usr/share/elasticsearch/data -v /data/elasticsearch/logs/node1:/usr/share/elasticsearch/logs -v /data/elasticsearch/plugins/node1:/usr/share/elasticsearch/plugins elasticsearch:7.1.1

#节点2启动
docker run -d --network=mynet --ip 172.19.1.12 --privileged=true -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9201:9200 --name node2 -e TAKE_FILE_OWNERSHIP=true -v /data/elasticsearch/config/node2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elasticsearch/data/node2:/usr/share/elasticsearch/data -v /data/elasticsearch/logs/node2:/usr/share/elasticsearch/logs -v /data/elasticsearch/plugins/node2:/usr/share/elasticsearch/plugins elasticsearch:7.1.1

#节点3启动
docker run -d --network=mynet --ip 172.19.1.13 --privileged=true -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9202:9200 --name node3 -e TAKE_FILE_OWNERSHIP=true -v /data/elasticsearch/config/node3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elasticsearch/data/node3:/usr/share/elasticsearch/data -v /data/elasticsearch/logs/node3:/usr/share/elasticsearch/logs -v /data/elasticsearch/plugins/node3:/usr/share/elasticsearch/plugins elasticsearch:7.1.1

#kibana启动

 docker run -d --network=mynet --ip 172.19.1.99 --privileged=true
 -p 5601:5601 -v /data/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e TAKE_FILE_OWNERSHIP=true
 --name kibana kibana:7.1.1

4. 登录kibana网页客户端

    浏览器输入http://宿主机ip:5601可登录kibana, 可进行管理es集群操作

不积跬步,无以至千里!
原文地址:https://www.cnblogs.com/f66666/p/14799519.html