2015-06-19 2 views
2

Я пытаюсь настроить готовый к производству кластер на AWS, который использует Jeff Lindsay'sprogrium/docker-consul для установки Consul на каждом хосте, но не может получить вторичный и третичный серверы -join начальный сервер.Ошибка ввода-вывода с использованием progrium/docker-consul

Я следовал Running a real consul cluster in production инструкции, но я получаю сообщение об ошибке i/o timeout, когда мои consul2 и consul3 узлов пытаются -joinconsul1 частного IP.

Экземпляры

Я раскручивается три t2.micros на AWS и получили следующие Private IP, присвоенный в моем VPC:

172.31.4.194 (Intended to be `consul1`, leader) 
172.31.4.195 (Intended to be `consul2`) 
172.31.4.193 (Intended to be `consul3`) 



Начало работы Initial консулом Экземпляр сервера

Мой consul1 узел получает себя и ждет два других просто отлично:

sudo docker run -d -h consul1 --name consul1 -v /mnt:/data \ 
    -p 172.31.4.194:8300:8300 \ 
    -p 172.31.4.194:8301:8301 \ 
    -p 172.31.4.194:8301:8301/udp \ 
    -p 172.31.4.194:8302:8302 \ 
    -p 172.31.4.194:8302:8302/udp \ 
    -p 172.31.4.194:8400:8400 \ 
    -p 172.31.4.194:8500:8500 \ 
    -p 172.17.42.1:53:53/udp \ 
    progrium/consul -server -advertise 172.31.4.194-bootstrap-expect 3 



Попытка run Второй сервер Instance

Но тогда, когда я приступаю к работе т начать свой consul2 узел, используя следующие:

sudo docker run -d -h consul2 --name consul2 -v /mnt:/data \ 
    -p 172.31.4.195:8300:8300 \ 
    -p 172.31.4.195:8301:8301 \ 
    -p 172.31.4.195:8301:8301/udp \ 
    -p 172.31.4.195:8302:8302 \ 
    -p 172.31.4.195:8302:8302/udp \ 
    -p 172.31.4.195:8400:8400 \ 
    -p 172.31.4.195:8500:8500 \ 
    -p 172.17.42.1:53:53/udp \ 
    progrium/consul -server -advertise 172.31.4.195 -join 172.31.4.194 



ошибка

Вот ошибка, что я получаю:

==> WARNING: It is highly recommended to set GOMAXPROCS higher than 1 
==> Starting raft data migration... 
==> Starting Consul agent... 
==> Starting Consul agent RPC... 
==> Joining cluster... 
==> dial tcp 172.31.4.194:8301: i/o timeout 



Любая идея, что может быть причиной этого? Я повторил попытку около девяти раз и до сих пор не повезло. Это побудило меня еще немного узнать о сети (которая является широкой, глубокой, увлекательной темой), но я не могу понять, есть ли проблема в моей конфигурации, или если это настоящая ошибка.

Заранее благодарим за любую помощь.

ответ

4

Проблема решена!

Оказывается, я забыл открыть порты, которые Consul необходимо использовать в группе безопасности, которая управляет доступом к экземплярам.

Открылись 8300, 8301, 8302, 8400 и 8500 и все установленные просто отлично.

+1

Альтернативная установка (рекомендуется [https://hub.docker.com/_/consul/)) для использования сети хоста докера (* - net = host *); таким образом вам не нужно делать сопоставления портов контейнера докеров, и он должен двигаться быстрее. Вам все равно нужен ваш брандмауэр, чтобы открыть порты, конечно. –