Как создать проверку работоспособности для XRAY Daemon Task

Я пытаюсь реализовать XRAY для нашего приложения весенней загрузки AWS ECS. Для этого я создаю новую задачу с отдельным файлом докера только для демона докера, как это предлагается документация AWS и предложила, когда я спросил другого вопрос по настройке демона.

Однако, когда я пытаюсь развернуть это на AWS, требуется конечная точка проверки работоспособности, чтобы балансировщик нагрузки мог определить, что служба была успешно развернута.

В самом демоне нет функции проверки работоспособности. Есть ветка на форумах AWS, а также на < связанная с этим проблема href = "https://github.com/aws/aws-xray-daemon/issues/9" rel = "nofollow noreferrer"> в репозитории github.

Моя первоначальная идея - создать приложение (вероятно, spring-boot), которое может определять, запущен ли демон, и предоставлять URL-адрес, по которому elb может нажать, чтобы выполнить проверку работоспособности демона. Затем я могу развернуть его вместе с демоном.

Есть ли лучший способ сделать это? Меня беспокоит необходимость создания отдельного приложения только для проверки работоспособности. Также может потребоваться некоторая хитрость, чтобы запустить две команды точки входа в файле докера.

Есть идеи, как лучше это сделать?


person greenJavaDev    schedule 09.01.2019    source источник


Ответы (1)


Вам вообще не нужно использовать Load Balancer для X-Ray Docker Container Daemon, поскольку трафик идет только из контейнеров кластера EC2. Healthcheck для контейнера X-Ray можно выполнить с помощью AWS ECS Healthcheck себя.

Основываясь на ответе форума, вы можете настроить netstat для контейнера Healthcheck, который убедится, что порт udp не открыт контейнером демона, тогда агент ECS перезапустит контейнер.

Ниже представлена ​​команда HealthCheck, которую вы вводите в определении задачи ECS.

CMD-SHELL, netstat -aun | grep 2000 > /dev/null; if [ 0 != $? ]; then exit 1; fi;

Вот настройка и результат.

Задача Def

Здоровый

Примечание--

Если вы создаете образ X-Ray Docker, убедитесь, что вы включили netstat утилиту в Dockerfile, иначе команда работоспособности завершится ошибкой.

Пример - если вы используете Dockerfile, указанный в это документацию, то вам нужно добавить пакет net-tools к вашему изображению контейнера X-Ray.

Ниже приведен мой обновленный файл Dockerfile, который добавляет net-tools к образу.

FROM ubuntu:16.04
RUN apt-get update && apt-get install -y --force-yes --no-install-recommends apt-transport-https curl ca-certificates wget net-tools && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
RUN wget https://s3.dualstack.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-3.x.deb
RUN dpkg -i aws-xray-daemon-3.x.deb
CMD ["/usr/bin/xray", "--bind=0.0.0.0:2000"]
EXPOSE 2000/udp
person Imran    schedule 10.01.2019
comment
Фантастическое объяснение. Спасибо, Имран. - person greenJavaDev; 10.01.2019