有没有一种方法可以在同一主机上的两个Elasticsearch容器之间进行通信



我通过以下命令部署Elasticsearch的2个容器:

docker run --network host  -p 9201:9200 -p 9301:9300 -e "discovery.type=single-node"  docker.elastic.co/elasticsearch/elasticsearch:6.8.1 
docker run --network host  -p 9202:9200 -p 9302:9300 -e "discovery.type=single-node"  docker.elastic.co/elasticsearch/elasticsearch:6.8.1 

当我尝试从其中一个容器运行下一个命令时

curl localhost:${PORT_OF_THER_OTHER_CONTAINER}

我得到下一个错误

curl: (7) Failed connect to localhost:PORT_OF_THER_OTHER_CONTAINER; Connection refused

您需要在两个ES容器中使用bridge网络,以便它们能够发现彼此,然后使用内部端口,以便使用curl连接到另一个容器。

  1. 创建名为my-bridge-network的网桥网络

docker network create -d bridge my-bridge-network

  1. 使用上面创建的my-bridge-network和docker运行命令中的自定义名称

docker run --network my-bridge --name es1 -p 9201:9200 -p 9301:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.8.1

现在,在进入容器onedocker exec -it <container-id> /bin/bash之后,将curl命令作为curl es1:9200运行,这将给出正确的输出。

{
"name" : "vwdvbT9",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "dwMh_zK6RmO_VeeoDQXuTg",
"version" : {
"number" : "6.8.1",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "1fad4e1",
"build_date" : "2019-06-18T13:16:52.517138Z",
"build_snapshot" : false,
"lucene_version" : "7.7.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}```

最新更新