Что означает значение 0.0.0.0 при настройке кластера zookeeper на нескольких узлах ec2 - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть проблемы с настройкой кластера зоокейперов для заказчиков тканей из Hyperledger.Форум пользователей docker zookeeper [https://forums.docker.com/t/cannot-get-zookeeper-to-work-running-in-docker-using-swarm-mode/27109], говорит, что я должен использовать 0.0.0.0 в качестве хоста для сервера.

Я не могу понять, почему не работают 127.0.0.1 или localhost.Также, если 0.0.0.0 используется в качестве маски подсети, 255.255.255.0 или 0.0.0.1 также не работают.

Так, что означает значение 0.0.0.0 на Docker Zookeeper для сервера на хосте.

version: '2'
services:
    zk-1:
        extends:
            file: docker-compose-zkbase.yml # common setting for zookeepers
            service: zookeeper
        container_name: zk-1
        hostname: zk-1
        environment:
            - ZOO_MY_ID=1
            - ZOO_SERVERS=server.1=0.0.0.0:2888:3888 server.2=13.125.46.185:2888:3888 server.3=54.180.152.130:2888:3888

Наконец, 0.0.0.0 - это хорошо для меня, но я все еще не понимаюточное значение 0.0.0.0 для Docker Zookeeper.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Это все о сети.Когда вы «открываете» сокет, это означает, что вы создаете любой тип tcp / udp-сервера, вы bind подключаете сокет к некоторому интерфейсу на вашем локальном ПК.

Это означает, что вы говорите своему серверу принимать соединения только от указанных интерфейсов.Например, у вас может быть несколько карт Ethernet, и вы хотите, чтобы ваш веб-сервер был доступен только на одной из них.

Чтобы добиться того, что вы bind подключаете свой сервер к этому интерфейсу, указав IP-адрес.

В то же время, по-видимому, существуют некоторые специальные значения:

0.0.0.0 - означает, что ваш сервис будет доступен на всех интерфейсах.Вы можете подключиться как с локальной машины, так и с любого ПК, подключенного к любому из ваших адаптеров Ethernet.

localhost/127.0.0.1 - означает, что вы открываете свою службу локально .Это делает вашу услугу доступной только для соединений с локального ПК.Внешние соединения не принимаются.Эта опция полезна по соображениям безопасности.Часто это используется в архитектуре обратного прокси, когда незащищенные (http) соединения открываются локально и безопасны (https) - при 0.0.0.0 привязке с nginx в качестве посредника обратного прокси.

0 голосов
/ 13 февраля 2019

Наконец, мне подходит 0.0.0.0, но я все еще не понимаю точного значения 0.0.0.0 для docker zookeeper.

Если, например, он использовал localhostnetwork 127.0.0.1, чем zookeeper не будет доступен вне контейнера через порт 2888.

Этот ответ отлично справляется с объяснением различий между 0.0.0.0 и 127.0.0.1.

В чем разница между 127.0.0.1 и 0.0.0.0?

  • 127.0.0.1 - это адрес обратной связи (также известный как localhost).
  • 0.0.0.0 - это не маршрутизируемый мета-адрес, используемый для обозначения недопустимой,> неизвестной или неприменимой цели (нет конкретного заполнителя адреса).

В контексте записи маршрута это обычно означаетмаршрут по умолчанию.

В контексте серверов 0.0.0.0 означает «все адреса IPv4 на> локальной машине».Если у хоста есть два IP-адреса, 192.168.1.1 и> 10.1.2.1,> и сервер, работающий на хосте, прослушивает 0.0.0.0, он будет> доступен> на обоих из этих IP-адресов.

...