docker - 在多个主机上使用 docker / docker-compose 的 Elasticsearch 集群
问题描述
我想使用 docker / docker-compose 在多台主机上运行 docker 集群
我可以定义 3 个容器 es1、es2、es3,然后在我猜的每个主机中运行每个容器。(我不确定如何让他们发现彼此)
当然,在 3 台机器上启动/重启集群 sshing 会非常痛苦。
是否可以以某种方式管理多主机 docker?
https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-compose-file给出了一个例子,但我相信它在单个主机上运行
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.5.1
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.5.1
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.5.1
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data03:/usr/share/elasticsearch/data
networks:
- elastic
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
networks:
elastic:
driver: bridge
解决方案
推荐阅读
- apache-spark - 规则优化器在加入特定关系时注入合成合并键
- python - 将使用 Paramiko SSH 执行的远程命令的输入链接到本地 Python 控制台
- python-3.x - django-queryset 对象上的 Python 排序函数
- laravel - 参数 1 传递给 Illuminate\Auth\SessionGuard::login()
- .net-core - IdentityServer4 登录后重定向到不同的客户端
- javascript - 为什么这个记录超过 1 个数字?
- javascript - 根据网页和 sql 数据库中的坐标创建 svg 元素
- javascript - 尝试使用按钮将 html 画布下载为图像时出现有趣的下载错误
- java - Kotlin 不是直接通过名称而是通过字符串变量从其他类访问变量
- python - VSCode 当我从 python 的文本文件中读取信息时,它还删除了文本文件中的所有内容