LINUX.ORG.RU
ФорумAdmin

Кластер Elasticsearch в Docker

 ,


0

2

Есть два сервера, один длинный, другой тяжёлый.
На одном есть три контейнера Elasticsearch, для которых настроен проброс портов изнутри на физический адрес сервера, но которые при этом организовались в кластер по своей внутренней сети.
На втором сервере тоже есть один контейнер. И хотелось бы его добавить четвёртой нодой в существующий кластер.
Я не растерялся и прописал три ноды в discovery.zen.ping.unicast.hosts новой ноды.
Но мой план не сработал, судя по логам кластер пытается собраться на внутренних Docker адресах, что не сработает.
Как это разрулить?
Конфиги:
На обоих серверах интерфейс docker0 172.17.0.1/16

docker-compose.yml с первого сервера:

version: '2.2'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.6.0
    container_name: elasticsearch1
    environment:
      - cluster.name=supercluster
      - bootstrap.memory_lock=true
      - discovery.zen.minimum_master_nodes=2
      - "ES_JAVA_OPTS=-Xms32766m -Xmx32766m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 10.11.12.13:9200:9200
      - 10.11.12.13:9300:9300
    networks:
      - esnet

  elasticsearch2:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.6.0
    container_name: elasticsearch2
    environment:
      - cluster.name=supercluster
      - bootstrap.memory_lock=true
      - discovery.zen.minimum_master_nodes=2
      - "ES_JAVA_OPTS=-Xms32766m -Xmx32766m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata2:/usr/share/elasticsearch/data
    ports:
      - 10.11.12.13:9201:9200
      - 10.11.12.13:9301:9300
    networks:
      - esnet

  elasticsearch3:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.6.0
    container_name: elasticsearch3
    environment:
      - cluster.name=supercluster
      - bootstrap.memory_lock=true
      - discovery.zen.minimum_master_nodes=2
      - "ES_JAVA_OPTS=-Xms32766m -Xmx32766m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata3:/usr/share/elasticsearch/data
    ports:
      - 10.11.12.13:9202:9200
      - 10.11.12.13:9302:9300
    networks:
      - esnet

volumes:
  esdata1:
    driver: local
  esdata2:
    driver: local
  esdata3:
    driver: local


networks:
  esnet:

Как собрался эластик:
# curl 'http://10.11.12.13:9200/_cat/nodes'     
172.25.0.3 23 99 52 0.79 1.39 1.62 mdi * 47cooiw
172.25.0.2 43 99 51 0.79 1.39 1.62 mdi - IX8C70Z
172.25.0.4 40 99 51 0.79 1.39 1.62 mdi - tEy_OlF

docker-compose.yml со второго сервера:
version: '2.2'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.6.0
    container_name: elasticsearch
    environment:
      - cluster.name=supercluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms8g -Xmx8g"
      - "discovery.zen.ping.unicast.hosts=10.11.12.13:9300,10.11.12.13:9301,10.11.12.13:9302"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 10.11.12.12:9200:9200
      - 10.11.12.12:9300:9300
    networks:
      - esnet

volumes:
  esdata1:
    driver: local

networks:
  esnet:


Я почитал про варианты настройки сети в докере, но очень не хотелось бы наворачивать отдельные адреса каждому контейнеру.

★★★★★

Покажи как запускал контейнера и docker inspect контейнеров и docker network inspect сети в которой все крутится (если они все же как-то объединились через дефолтную).

dtm ()
Ответ на: комментарий от dtm

Добавил больше данных в изначальное описание.

По docker network inspect не понял как нужно использовать.
«docker network inspect» requires at least 1 argument.
See 'docker network inspect --help'.

Usage: docker network inspect [OPTIONS] NETWORK [NETWORK...]

Кусок вывода docker inspect elasticsearch3

        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "4574688c0fe8b78d897168ea0c3c7713e58966ee122b79da242fe18ed068f907",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "9200/tcp": [
                    {
                        "HostIp": "10.11.12.13",
                        "HostPort": "9202"
                    }
                ],
                "9300/tcp": [
                    {
                        "HostIp": "10.11.12.13",
                        "HostPort": "9302"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/4574688c0fe8",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "root_esnet": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "e7b1f1483ea9",
                        "elasticsearch3"
                    ],
                    "NetworkID": "5e1e6626405217d3c5953e0f32bb7caadc328a8f1fd5a328dd1987623117ee26",
                    "EndpointID": "3b9db1f50b4782d3cf25ea6dc23a186eb6160c6f09b2096e2c46ff18a9367bcf",
                    "Gateway": "172.25.0.1",
                    "IPAddress": "172.25.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:19:00:03",
                    "DriverOpts": null
                }
            }

zolden ★★★★★ ()