docker - 使用 Docker 跨多台机器设置 Elasticsearch 集群
问题描述
我目前尝试使用 docker-compose 来启动多个弹性搜索容器,但这些容器都部署在我的本地机器上。使用 Docker 将多个容器部署到多台不同机器的过程是什么?
我知道 docker swarm 存在,但我不确定如何将它与 docker compose 一起使用,以便我启动多个弹性搜索节点,这些节点位于我启动的不同虚拟机中。
到目前为止,我知道在elasticsearch.yml
配置文件中我需要指定虚拟机地址,
discovery.zen.ping.unicast.hosts: ["vm_ip1:9200", "vm_ip2:9200"]
但我不确定如何将此更改强制执行到创建的 docker 容器上。为了启动容器,我使用了弹性搜索文档中显示的示例 docker-compose.yml 文件
version: '2.2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
container_name: elasticsearch
environment:
- cluster.name=elasticsearch
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- esnet
elasticsearch2:
image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
container_name: elasticsearch2
environment:
- cluster.name=elasticsearchr
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=elasticsearch"
- "index.number_of_shards: 2"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata2:/usr/share/elasticsearch/data
networks:
如果需要更多详细信息,请告诉我,谢谢!
解决方案
推荐阅读
- python - 如何配置 webhook 以接受来自 Python Aiogram 上 Telegram 机器人的特定 IP 地址的请求
- stored-procedures - 由于系统变量中没有值,如何在 ADF 管道中为存储过程活动设置参数值
- php - 我需要在路由中添加每个控制器类命名空间吗
- asp.net - 设置允许在 iframe 中使用 aspnet core 3.1 应用程序?
- javascript - 如何在 httpRequest(ajax 调用)和一些验证之后加载页面并填充一些字段?单击登录重定向并填充字段后
- python-3.x - 插入光盘时如何触发看门狗?
- java - 修复不正确的boundingBox坐标?
- c# - httpclient PostAsync 返回状态 200 ok,但收到的响应为“requested url denied”。在 Postman 中成功获取数据
- powershell - 将参数字符串转换为 Here String
- azure - Azure for Web Apps - 当我使用 Scale-Out 时,可用的总内存是否也会增加?