Docker搭建Elasticsearch集群和Kibana全过程

 更新时间:2025年05月14日 08:33:48   作者:duck不必鸭鸭  
这篇文章主要介绍了Docker搭建Elasticsearch集群和Kibana全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Docker搭建Elasticsearch集群

集群规划,采用三个节点

# 准备3个es节点 es 9200 9300
- web 9201 tcp:9301 node-1 elasticsearch.yml
- web 9202 tcp:9302 node-2 elasticsearch.yml
- web 9203 tcp:9303 node-3 elasticsearch.yml

注意:

  • 所有节点集群名称必须保持一致cluster.name
  • 每个节点必须有唯一的名字 node.name
  • 开启每个节点的远程连接network.host:0.0.0.0
  • 指定IP地址进行集群节点通信network_publish_host:
  • 修改web端口tcp端口http.port:transport.tcp.port
  • 指定集群中所有系节点通信列表discovery.seed_hosts:node-1 node-2 node-3相同
  • 允许集群初始化master节点节点数:cluster.initial_master_nodes:[“node-1”, “node-2”, “node-3”]
  • 集群最少几个节点可用gateway.recover_after_nodes:2
  • 开启每个节点的跨域访问http.cors.enabled:true http.cors.allow.-origin:"*"

配置文件

cluster
	node-1
		config/elasticsearch.yml
			# 集群名称
			cluster.name: es-cluster 
			
			#节点名称
			node.name: node-1 
			
			# 发布地址,一个单一地址,用于通知集群中的其他节点,以便其他的节点能够和它通信。当前,一个 elasticsearch 节点可能被绑定到多个地址,但是仅仅有一个发布地址
			# docker宿主机ip
			network.publish_host: 172.30.38.46
			
			# 开放远程连接,bind_host和publish_host一起设置
			network.host: 0.0.0.0 
			
			# 对外暴露的http请求端口
			http.port: 9201 
			
			# 集群节点之间通信用的TCP端口
			transport.tcp.port: 9301
			
			# 一个集群中最小主节点个数(防止脑裂,一般为n/2 + 1,n为集群节点个数)(7.10.1版本已取消?)
			discovery.zen.minimum_master_nodes: 2 
			
			# 新节点启动时能被发现的节点列表(新增节点需要添加自身)
			discovery.zen.ping.unicast.hosts: ["172.30.38.46:9301","172.30.38.46:9302","172.30.38.46:9303"]
			
			# 集群初始话指定主节点(节点名),7版本必须设置
			cluster.initial_master_nodes: ["node-1","node-2","node-3"]
			
			# 跨域问题解决
			http.cors.enabled: true
			http.cors.allow-origin: "*"
	node-2
		config/elasticsearch.yml
			# 集群名称
			cluster.name: es-cluster 
			
			#节点名称
			node.name: node-1 
			
			# 发布地址,一个单一地址,用于通知集群中的其他节点,以便其他的节点能够和它通信。当前,一个 elasticsearch 节点可能被绑定到多个地址,但是仅仅有一个发布地址
			network.publish_host: 172.30.38.46
			
			# 开放远程连接,bind_host和publish_host一起设置
			network.host: 0.0.0.0 
			
			# 对外暴露的http请求端口
			http.port: 9202 
			
			# 集群节点之间通信用的TCP端口
			transport.tcp.port: 9302
			
			# 一个集群中最小主节点个数(防止脑裂,一般为n/2 + 1,n为集群节点个数)(7.10.1版本已取消?)
			discovery.zen.minimum_master_nodes: 2 
			
			# 新节点启动时能被发现的节点列表(新增节点需要添加自身)
			discovery.zen.ping.unicast.hosts: ["172.30.38.46:9301","172.30.38.46:9302","172.30.38.46:9303"]
			
			# 集群初始话指定主节点(节点名),7版本必须设置
			cluster.initial_master_nodes: ["node-1","node-2","node-3"]
			
			# 跨域问题解决
			http.cors.enabled: true
			http.cors.allow-origin: "*"	
	node-3
		config/elasticsearch.yml
			# 集群名称
			cluster.name: es-cluster 
			
			#节点名称
			node.name: node-1 
			
			# 发布地址,一个单一地址,用于通知集群中的其他节点,以便其他的节点能够和它通信。当前,一个 elasticsearch 节点可能被绑定到多个地址,但是仅仅有一个发布地址
			network.publish_host: 172.30.38.46
			
			# 开放远程连接,bind_host和publish_host一起设置
			network.host: 0.0.0.0 
			
			# 对外暴露的http请求端口
			http.port: 9203 
			
			# 集群节点之间通信用的TCP端口
			transport.tcp.port: 9303
			
			# 一个集群中最小主节点个数(防止脑裂,一般为n/2 + 1,n为集群节点个数)(7.10.1版本已取消?)
			discovery.zen.minimum_master_nodes: 2 
			
			# 新节点启动时能被发现的节点列表(新增节点需要添加自身)
			discovery.zen.ping.unicast.hosts: ["172.30.38.46:9301","172.30.38.46:9302","172.30.38.46:9303"]
			
			# 集群初始话指定主节点(节点名),7版本必须设置
			cluster.initial_master_nodes: ["node-1","node-2","node-3"]
			
			# 跨域问题解决
			http.cors.enabled: true
			http.cors.allow-origin: "*"	

创建/elk/escluster-kibana-compose/node-1,/elk/escluster-kibana-compose/node-2,/elk/escluster-kibana-compose/node-3文件夹。

分别在三个文件夹下创建config文件夹并在config文件夹下创建elasticsearch.yml文件,

cluster
	node-1
		config/elasticsearch.yml
			cluster.name: es-cluster 
			node.name: node-1 
			network.publish_host: 172.30.38.46
			network.host: 0.0.0.0 
			http.port: 9201 
			transport.tcp.port: 9301
			discovery.zen.minimum_master_nodes: 2 
			discovery.zen.ping.unicast.hosts: ["172.30.38.46:9301","172.30.38.46:9302","172.30.38.46:9303"]
			cluster.initial_master_nodes: ["node-1","node-2","node-3"]
			http.cors.enabled: true
			http.cors.allow-origin: "*"
	node-2
		config/elasticsearch.yml
			cluster.name: es-cluster 
			node.name: node-2 
			network.publish_host: 172.30.38.46
			network.host: 0.0.0.0 
			http.port: 9202 
			transport.tcp.port: 9302
			discovery.zen.minimum_master_nodes: 2 
			discovery.zen.ping.unicast.hosts: ["172.30.38.46:9301","172.30.38.46:9302","172.30.38.46:9303"]
			cluster.initial_master_nodes: ["node-1","node-2","node-3"]
			http.cors.enabled: true
			http.cors.allow-origin: "*"	
	node-3
		config/elasticsearch.yml
			cluster.name: es-cluster 
			node.name: node-3
			network.publish_host: 172.30.38.46
			network.host: 0.0.0.0 
			http.port: 9203 
			transport.tcp.port: 9303
			discovery.zen.minimum_master_nodes: 2 
			discovery.zen.ping.unicast.hosts: ["172.30.38.46:9301","172.30.38.46:9302","172.30.38.46:9303"]
			cluster.initial_master_nodes: ["node-1","node-2","node-3"]
			http.cors.enabled: true
			http.cors.allow-origin: "*"	

/elk/escluster-kibana-compose/kibana.yml

server.name: kibana
server.port: 5606
server.host: "0"
elasticsearch.hosts: [ "http://es01:9201","http://es02:9202","http://es03:9203" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true

docker-compose.yml文件

version: "2"
networks:
  escluster:
services:
  es01:
    image: elasticsearch:7.6.0
    ports:
      - "9201:9201"
      - "9301:9301"
    networks:
      - "escluster"
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - /elk/escluster-kibana-compose/node-1/data:/usr/share/elasticsearch/data
      - /elk/escluster-kibana-compose/node-1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /elk/escluster-kibana-compose/node-1/plugins/ik-7.6.0:/usr/share/elasticsearch/plugins/ik-7.6.0
  es02:
    image: elasticsearch:7.6.0
    ports:
      - "9202:9202"
      - "9302:9302"
    networks:
      - "escluster"
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - /elk/escluster-kibana-compose/node-2/data:/usr/share/elasticsearch/data
      - /elk/escluster-kibana-compose/node-2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /elk/escluster-kibana-compose/node-2/plugins/ik-7.6.0:/usr/share/elasticsearch/plugins/ik-7.6.0
  es03:
    image: elasticsearch:7.6.0
    ports:
      - "9203:9203"
      - "9303:9303"
    networks:
      - "escluster"
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - /elk/escluster-kibana-compose/node-3/data:/usr/share/elasticsearch/data
      - /elk/escluster-kibana-compose/node-3/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /elk/escluster-kibana-compose/node-3/plugins/ik-7.6.0:/usr/share/elasticsearch/plugins/ik-7.6.0
  kibana:
    image: kibana:7.6.0
    ports:
      - "5606:5606"
    networks:
      - "escluster"
    volumes:
      - /elk/escluster-kibana-compose/kibana.yml:/usr/share/kibana/config/kibana.yml

执行docker-compose

# 启动
docker-compose up -d
# 查看日志
docker-compose logs -f

启动完成之后分别访问

  • http://172.30.38.46:9201/
  • http://172.30.38.46:9202/
  • http://172.30.38.46:9203/
{
"name": "node-1",
"cluster_name": "es-cluster",
"cluster_uuid": "gC1ZHP8uSOqnqof0-Rdlcg",
"version": {
"number": "7.6.0",
"build_flavor": "default",
"build_type": "docker",
"build_hash": "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
"build_date": "2020-02-06T00:09:00.449973Z",
"build_snapshot": false,
"lucene_version": "8.4.0",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}


{
"name": "node-2",
"cluster_name": "es-cluster",
"cluster_uuid": "gC1ZHP8uSOqnqof0-Rdlcg",
"version": {
"number": "7.6.0",
"build_flavor": "default",
"build_type": "docker",
"build_hash": "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
"build_date": "2020-02-06T00:09:00.449973Z",
"build_snapshot": false,
"lucene_version": "8.4.0",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}

{
"name": "node-3",
"cluster_name": "es-cluster",
"cluster_uuid": "gC1ZHP8uSOqnqof0-Rdlcg",
"version": {
"number": "7.6.0",
"build_flavor": "default",
"build_type": "docker",
"build_hash": "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
"build_date": "2020-02-06T00:09:00.449973Z",
"build_snapshot": false,
"lucene_version": "8.4.0",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}

访问kibana

  • http://172.30.38.46:5606/

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker Nginx反向代理实现过程

    Docker Nginx反向代理实现过程

    本文介绍了如何使用Nginx实现反向代理,并与网关的代理功能进行对比,通过Docker安装Nginx,解决了容器中缺少vim编辑器的问题,详细记录了修改Nginx配置、启动微服务、验证反向代理的步骤
    2025-12-12
  • gitlab实践教程使用git config进行相关的配置操作

    gitlab实践教程使用git config进行相关的配置操作

    今天小编就为大家分享一篇关于gitlab实践教程使用git config进行相关的配置操作,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • docker安装redmine步骤

    docker安装redmine步骤

    在本篇文章里小编给大家整理的是关于docker安装redmine步骤和相关代码,需要的朋友们学习下。
    2020-01-01
  • docker搭建mongodb单节点副本集的实现

    docker搭建mongodb单节点副本集的实现

    本文主要介绍了docker搭建mongodb单节点副本集的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • docker安装与docker-compose安装配置nginx过程

    docker安装与docker-compose安装配置nginx过程

    文章记录在CentOS 7.6部署环境的Docker安装步骤、版本冲突解决方法及Docker Compose配置流程,涵盖内核检查、软件包安装、镜像获取与服务启动等关键操作
    2025-08-08
  • Docker目录迁移的详细执行步骤(按脚本流程)

    Docker目录迁移的详细执行步骤(按脚本流程)

    我们在生产环境中安装Docker时,默认的安装目录是 /var/lib/docker,而通常情况下,规划给系统盘的目录一般为50G,该目录是比较小的,一旦容器过多或容器日志过多,就可能出现Docker无法运行的情况,所以我们进行Docker目录迁移,本文给大家介绍了Docker目录迁移的详细步骤
    2025-07-07
  • docker run -e传递环境变量的过程

    docker run -e传递环境变量的过程

    这篇文章主要介绍了docker run -e传递环境变量的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • Docker安装部署RabbitMQ教程

    Docker安装部署RabbitMQ教程

    本文详解了Docker容器化部署RabbitMQ的优势,涵盖环境一致性、资源隔离、弹性伸缩等核心价值,提供从安装配置到集群部署、数据持久化及故障排查的完整方案,帮助构建高效稳定的消息队列服务
    2025-08-08
  • 使用 docker 部署 APISIX的详细介绍

    使用 docker 部署 APISIX的详细介绍

    这篇文章主要介绍了使用 docker 部署 APISIX的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Jenkins+Docker 一键自动化部署 SpringBoot 项目的详细步骤

    Jenkins+Docker 一键自动化部署 SpringBoot 项目的详细步骤

    这篇文章主要介绍了Jenkins+Docker 一键自动化部署SpringBoot 项目,本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路,需要的朋友可以参考下
    2022-08-08

最新评论