Как автоматически запускать агент-консул и контейнер регистратора при масштабировании инстанса ECS

Я создал консульский кластер из трех узлов. Теперь мне нужно запускать контейнеры агента консула и регистратора и соединять агент консула с одним из узлов сервера консула всякий раз, когда я запускаю экземпляр ECS или масштабирую экземпляр ECS, на котором я запускаю свои микросервисы.

Я автоматизировал оставшуюся часть процесса развертывания с помощью последовательных обновлений. Но мне приходится вручную запускать консульский агент и регистратор всякий раз, когда я масштабирую экземпляр ECS.

Кто-нибудь знает, как мы можем автоматизировать это?


person Prashant Goel    schedule 05.08.2016    source источник
comment
@Takarii: В настоящее время мне приходится вручную запускать консульский агент и регистратор на ECS insatnce всякий раз, когда я масштабирую его. Я хочу автоматизировать эту задачу. Я запускаю следующие команды: export PRIVATE_IP=[ваш частный IP здесь]; export JOIN_IP=[IP узла сервера консул]; $(docker run --rm progrium/consul cmd:run $PRIVATE_IP::10.0.0.113::client -d -it); docker run -d --name registrator \ -v /var/run/docker.sock:/tmp/docker.sock \ -h $HOSTNAME gliderlabs/registrator consul://$PRIVATE_IP:8500   -  person Prashant Goel    schedule 05.08.2016
comment
Попробуйте это docs.aws.amazon.com/AmazonECS/latest/developerguide/ и aws. amazon.com/blogs/compute/   -  person PratapSingh    schedule 17.11.2016


Ответы (2)


  1. Создайте задачу-определение с двумя контейнерами, консулом-клиентом и регистратором.
  2. aws ecs start-task в ваших пользовательских данных.

Это сообщение AWS фокусируется на этом.

изменить: поскольку вы упомянули экземпляр ECS, я предполагаю, что у вас уже есть необходимый набор ролей IAM для этого экземпляра.

person Eren Güven    schedule 09.11.2016

Создайте ELB перед вашими консул-серверами или эластичный IP, чтобы он не менялся.

Затем в пользовательских данных:

#!/bin/bash
consul_host=consul.mydomain.local

#start the agent
docker run -it --restart=always -p 8301:8301 -p 8301:8301/udp -p 8400:8400 -p 8500:8500 -p 53:53/udp \
-v /opt/consul:/data -v /var/run/docker.sock:/var/run/docker.sock -v /etc/consul:/etc/consul -h \
$(curl -s http://169.254.169.254/latest/meta-data/instance-id) --name consul-agent progrium/consul \
-join $consul_host -advertise $(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)`

#start the registrator
docker run -it --restart=always -v /var/run/docker.sock:/tmp/docker.sock \
-h $(curl -s http://169.254.169.254/latest/meta-data/instance-id) --name consul-registrator \
gliderlabs/registrator:latest -ip $(curl -s http://169.254.169.254/latest/meta-data/local-ipv4) \
consul://$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4):8500

Примечание: в этом фрагменте предполагается, что все ваши настройки доступны локально и т. д. Он взят из облачных формаций с эту запись в блоге и эту ссылку

person Marc Young    schedule 05.08.2016