Configure an ELK cluster in docker containers

Viewed 3477

I'm trying to configure an ELK cluster using 2 docker containers.

I'm using the following image:

I have created 2 docker containers for that image with docker-compose; each works perfectly in standalone mode.

I want to link the 2 ELK nodes between each other in way to create the cluster, but I haven't found a proper solution. The Elasticsearch node in container1 doesn't communicate with the Elasticsearch node in container2.

These are the two docker-compose.yml:

CONTAINER1:

version: '2'
services:
  elasticsearch01:
    image: sebp/elk:es241_l240_k461
    ports:
      - "5601:5601"
      - "9200:9200"
      - "9300:9300"
      - "5044:5044"
    volumes:
      - /opt/ELK1/logstash/conf.d:/etc/logstash/conf.d
    privileged: true

CONTAINER2:

version: '2'
services:
  elasticsearch02:
    image: sebp/elk:es241_l240_k461
    ports:
      - "5602:5601"
      - "9201:9200"
      - "9301:9300"
      - "5045:5044"
    volumes:
      - /opt/ELK2/logstash/conf.d:/etc/logstash/conf.d
    privileged: true

I'have configured the elasticsearch.yml inside the docker containers in this way:

NODE IN CONTAINER1:

cluster.name: elasticsearchcluster
node.name: node1
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "172.21.0.2"]
discovery.zen.minimum_master_nodes: 1

NODE IN CONTAINER2:

cluster.name: elasticsearchcluster
node.name: node2
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "172.22.0.2"]
discovery.zen.minimum_master_nodes: 1

The key is the discovery.zen.ping.unicast.hosts parameter: I don't have the real IP address, because it's a docker container.

I tried docker inspect elasticsearch01, I have the following "IPAddress" property:

    "NetworkSettings": {
        ...
        "Networks": {
            "ELK1_default": {
                ...
                "Gateway": "172.22.0.1",
                "IPAddress": "172.22.0.2",
                ...
            }
        }
    }

But it doesn't work if I set that IP address.

How to configure the cluster properly?

EDIT

Trying the host ip-address and the port, the node 1 starts, the node 2 fails with no errors.

discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.0.1:9300"] -> OK
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.0.2:9300"] -> FAILS with no errors
2 Answers
Related