具有单个docker compose文件的多孤岛elasticsearch群集
我想在一个docker compose文件中创建两个elasticsearch集群,这样我就可以只在新的es集群上测试一些更改 我的docker编写文件如下所示具有单个docker compose文件的多孤岛elasticsearch群集,docker,
elasticsearch,docker-compose,Docker,
elasticsearch,Docker Compose,我想在一个docker compose文件中创建两个elasticsearch集群,这样我就可以只在新的es集群上测试一些更改 我的docker编写文件如下所示 version: "2.2" services: elasticsearch-master: image: elasticsearch:6.6.0 volumes: - esdata1:/usr/share/elasticsearch/data ports: - &
version: "2.2"
services:
elasticsearch-master:
image: elasticsearch:6.6.0
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- "9200:9200"
mem_limit: '2048M'
new-elasticsearch-master:
image: elasticsearch:6.6.0
volumes:
- esdata2:/usr/share/elasticsearch/data
ports:
- "9400:9200"
mem_limit: '2048M'
search:
image: search:latest
entrypoint: java -Delasticsearch.host=elasticsearch-master -DnewElasticsearch.host=new-elasticsearch-master -DnewElasticsearch.port=9400 -jar app.jar
ports:
- "8083:8083"
depends_on:
- elasticsearch-master
- new-elasticsearch-master
mem_limit: '500M'
volumes:
esdata1:
esdata2:
我有一个java服务,我在其中使用不同的环境变量添加两个主机
new RestTemplate().getForEntity("http://elasticsearch-master:9200/_cat/indices?v",String.class)
这给了我正确的回答
new RestTemplate().getForEntity("http://new-elasticsearch-master:9200/_cat/indices?v",String.class)
但当我尝试连接到9400上的另一台主机时
new RestTemplate().getForEntity("http://new-elasticsearch-master:9400/_cat/indices?v",String.class)
我收到连接被拒绝错误
当我用9200尝试同一台主机时,这会给我200个响应
new RestTemplate().getForEntity("http://new-elasticsearch-master:9200/_cat/indices?v",String.class)
有人能告诉我,我如何才能使2个不同的连接与不同的端口如下
谢谢您获得了预期的行为。docker compose中的
ports
字段将端口映射到本地主机,这意味着“旧”Elasticsearch将通过localhost:9200提供,“新”Elasticsearch将通过localhost:9400提供
另一方面,docker compose服务在内部网络中通信,服务名称是主机名,端口是原始侦听端口
因此,您可以通过http://elasticsearch-master:9200 还有新的http://new-elasticsearch-master:9200.
如果您希望将新的Elasticsearch与9400一起使用,则需要更改其:http.port
。你可以这样做:
new-elasticsearch-master:
image: elasticsearch:6.6.0
volumes:
- esdata2:/usr/share/elasticsearch/data
environment:
- http.port=9400
ports:
- "9400:9400"
mem_limit: '2048M'
请注意,您还必须更改端口映射(因为它会将您的新端口9400映射到本地主机9400)。谢谢,这解决了问题,也理解了问题。