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集群操作