如何为XRAY守护程序任务创建运行状况检查

时间:2019-01-09 23:25:06

标签: amazon-web-services docker amazon-ecs aws-xray

我正在尝试为我们的AWS ECS春季启动应用程序实施XRAY。为此,我要根据AWS documentation的建议以及当我问另一个question on the Daemon setup时的建议,为docker守护进程创建一个单独的docker文件的新任务。

但是,当我尝试将其部署到AWS时,要求负载均衡器具有运行状况检查终结点,以便能够确定服务已成功部署。

守护程序本身没有运行状况检查功能。 AWS forums和与此相关的issue on the github repo上都有一个线程。

我的最初想法是创建一个应用程序(可能是spring-boot),该应用程序可以确定守护程序是否正在运行,并公开一个URL,elb可以点击该URL对该守护程序进行运行状况检查。然后,我可以将其与守护程序一起部署。

是否有更好的方法可以做到这一点?我担心是否需要创建单独的应用程序才能创建运行状况检查。为了在docker文件中运行两个入口点命令,可能还需要一些技巧。

有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

由于X-Ray Docker容器守护进程根本不需要使用负载均衡器,因为流量仅来自群集EC2容器。可以使用AWS ECS Healthcheck本身对X-Ray容器进行Healthcheck。

基于论坛answer,您可以在容器运行状况检查上配置netstat,以确保守护程序容器未打开udp端口,然后ECS Agent将重新启动容器。

下面是您在ECS任务定义中提供的HealthCheck命令。

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

这是设置和结果。

Task Def

Healthy

注意-

如果要构建X-Ray Docker映像,请确保在Dockerfile中包含netstat实用程序,否则运行状况命令将失败。

示例-如果您使用this文档中提供的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