【问题标题】:How to create a health check for XRAY Daemon Task如何为 XRAY 守护程序任务创建健康检查
【发布时间】:2019-01-09 23:25:05
【问题描述】:

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

但是,当我尝试将其部署到 AWS 时,需要一个运行状况检查端点,以便负载均衡器能够确定该服务已成功部署。

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

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

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

有什么更好的方法来实现这一点吗?

【问题讨论】:

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


    【解决方案1】:

    您根本不需要为 X-Ray Docker 容器守护程序使用负载均衡器,因为流量仅来自集群 EC2 容器。 X-Ray 容器的健康检查可以使用 AWS ECS Healthcheck 本身完成。

    基于论坛answer,您可以在容器健康检查上配置netstat,这将确保如果守护程序容器未打开udp端口,则ECS代理将重新启动容器。

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

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

    这是设置和结果。

    注意--

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

    示例 - 如果您使用的是 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
    

    【讨论】:

    • 很棒的解释。谢谢伊姆兰。
    猜你喜欢
    • 2023-02-14
    • 2019-09-26
    • 2014-07-09
    • 2020-05-29
    • 2014-10-02
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多