riv*_*cas 21 cluster-computing elasticsearch docker
我想在2个不同的主机上运行2个ElasticSeach实例.我已经基于Ubuntu 14.04和elasticsearch的1.3.2版本构建了我自己的docker镜像.如果我在1个主机上运行2个ES'容器,则每个实例都会看到另一个实例并且可以进行通信,但是当我在2个不同的主机上运行2个ES实例时,它无效.容器的9300端口绑定到9300主机的端口.
我的问题是:可以用我的配置创建一个ES'集群吗?
最诚挚的问候,Lucas Rival
小智 18
我能够在两个docker主机上使用单播来进行群集工作.我恰巧正在使用ehazlett/elasticsearch图像,但我认为这不应该那么重要.真正重要的一点似乎是将设置network.publish_host设置为其docker主机的公共或可路由IP.
eth0: 192.168.1.10
Docker version 1.4.1, build 5bc2ff8/1.4.1
Run Code Online (Sandbox Code Playgroud)
eth0: 192.168.1.20
Docker version 1.4.1, build 5bc2ff8/1.4.1
Run Code Online (Sandbox Code Playgroud)
docker run -d \
-p 9200:9200 \
-p 9300:9300 \
ehazlett/elasticsearch \
--cluster.name=unicast \
--network.publish_host=192.168.1.10 \
--discovery.zen.ping.multicast.enabled=false \
--discovery.zen.ping.unicast.hosts=192.168.1.20 \
--discovery.zen.ping.timeout=3s \
--discovery.zen.minimum_master_nodes=1
Run Code Online (Sandbox Code Playgroud)
docker run -d \
-p 9200:9200 \
-p 9300:9300 \
ehazlett/elasticsearch \
--cluster.name=unicast \
--network.publish_host=192.168.1.20 \
--discovery.zen.ping.multicast.enabled=false \
--discovery.zen.ping.unicast.hosts=192.168.1.10 \
--discovery.zen.ping.timeout=3s \
--discovery.zen.minimum_master_nodes=1
Run Code Online (Sandbox Code Playgroud)
Ale*_*dez 18
使用docker-compose比在命令行中手动运行要容易得多:
elasticsearch_master:
image: elasticsearch:latest
command: "elasticsearch -Des.cluster.name=workagram -Des.node.master=true -Des.node.data=false"
environment:
- ES_HEAP_SIZE=512m
ports:
- "9200:9200"
- "9300:9300"
elasticsearch1:
image: elasticsearch:latest
command: "elasticsearch -Des.cluster.name=workagram -Des.discovery.zen.ping.unicast.hosts=elasticsearch_master"
links:
- elasticsearch_master
volumes:
- "/opt/elasticsearch/data"
environment:
- ES_HEAP_SIZE=512m
elasticsearch2:
image: elasticsearch:latest
command: "elasticsearch -Des.cluster.name=workagram -Des.discovery.zen.ping.unicast.hosts=elasticsearch_master"
links:
- elasticsearch_master
volumes:
- "/opt/elasticsearch/data"
environment:
- ES_HEAP_SIZE=512m
Run Code Online (Sandbox Code Playgroud)
您应该能够在不同主机上运行的两个容器之间进行通信,只要主机可以在所需端口中访问它们之间即可。我认为你的问题是你正在尝试使用 ElasticSearch 多播发现,但如果那么你还需要公开容器的端口 54328。如果它不起作用,您还可以尝试使用单播配置 ElasticSearch,在 elasticsearch.yml 中充分设置机器 IP。
| 归档时间: |
|
| 查看次数: |
17168 次 |
| 最近记录: |