本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
X-Ray Amazon
在 Amazon ECS 中,建立執行 X-Ray 精靈的 Docker 映像,將其上傳到 Docker 映像儲存庫,然後將其部署到 Amazon ECS 叢集。您可以使用您任務定義檔案中的連接埠映射和網路模式設定,來允許應用程式與精靈容器通訊。
使用官方 Docker 映像檔
X-Ray 在 Amazon ECR 上提供 Docker 容器映像檔
範例 任務定義
{ "name": "xray-daemon", "image": "amazon/aws-xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [
{ "hostPort": 0, "containerPort": 2000, "protocol": "udp" }
] }
建立和建置 Docker 影像
用於自訂組態時,您可能需要定義自己的 Docker 影像。
將受管理的原則新增至您的任務角色,授予常駐程式將追蹤資料上傳至 X-Ray 的許可。如需詳細資訊,請參閱授予守護進程將數據發送到 X-Ray 的權限。
使用以下其中一個 Dockerfiles 建立執行精靈的映像。
範例 Amazon
FROM amazonlinux RUN yum install -y unzip RUN curl -o daemon.zip https://s3.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-linux-3.x.zip RUN unzip daemon.zip && cp xray /usr/bin/xray ENTRYPOINT ["/usr/bin/xray", "-t", "0.0.0.0:2000", "-b", "0.0.0.0:2000"] EXPOSE 2000/udp EXPOSE 2000/tcp
注意
指定要接聽多重容器環境迴路的繫結地址時,必須提供標記 -t
和 -b
。
範例 Dockerfile-Ubuntu 的
若是 Debian 的衍生產品,您還需要安裝憑證授權機構 (CA) 憑證,以避免下載安裝程式時發生問題。
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y --force-yes --no-install-recommends apt-transport-https curl ca-certificates wget && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
RUN wget https://s3.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
ENTRYPOINT ["/usr/bin/xray", "--bind=0.0.0.0:2000", "--bind-tcp=0.0.0.0:2000"]
EXPOSE 2000/udp
EXPOSE 2000/tcp
在您的任務定義中,組態取決於您使用的聯網模式。預設值是橋接聯網,可在您的預設 VPC 中使用。在橋接網路中,設定AWS_XRAY_DAEMON_ADDRESS
環境變數,告知 X-Ray SDK 要參考哪個容器連接埠,並設定主機連接埠。舉例來說,您可以發佈 UDP 連接埠 2000,然後建立您應用程式容器與精靈容器的連結。
範例 任務定義
{ "name": "xray-daemon", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [
{ "hostPort": 0, "containerPort": 2000, "protocol": "udp" }
] }, { "name": "scorekeep-api", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/scorekeep-api", "cpu": 192, "memoryReservation": 512, "environment": [ { "name" : "AWS_REGION", "value" : "us-east-2" }, { "name" : "NOTIFICATION_TOPIC", "value" : "arn:aws:sns:us-east-2:123456789012:scorekeep-notifications" },{ "name" : "AWS_XRAY_DAEMON_ADDRESS", "value" : "xray-daemon:2000" }
], "portMappings" : [ { "hostPort": 5000, "containerPort": 5000 } ],"links": [ "xray-daemon" ] }
若您在 VPC 私有子網路中執行您的叢集,您可以使用 awsvpc
網路模式來將彈性網路界面 (ENI) 連接到您的容器。這可讓您避免使用連結。忽略連接埠映射、連結,以及 AWS_XRAY_DAEMON_ADDRESS
環境變數中的主機連接埠。
範例 VPC 任務定義
{ "family": "scorekeep",
"networkMode":"awsvpc",
"containerDefinitions": [ { "name": "xray-daemon", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [ { "containerPort": 2000, "protocol": "udp" } ] }, { "name": "scorekeep-api", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/scorekeep-api", "cpu": 192, "memoryReservation": 512, "environment": [ { "name" : "AWS_REGION", "value" : "us-east-2" }, { "name" : "NOTIFICATION_TOPIC", "value" : "arn:aws:sns:us-east-2:123456789012:scorekeep-notifications" } ], "portMappings" : [ { "containerPort": 5000 } ] } ] }
在亞馬遜 ECS 主控台中設定命令列選項
命令列選項會覆寫影像組態檔中的任何衝突值。命令列選項通常用於本機測試,但也可以在設定環境變數或控制啟動程序時使用。
透過新增命令列選項,您將更新傳遞給容器的 Docker CMD
。如需詳細資訊,請參閱 Docker 執行參考
若要設定命令列選項
開啟 Amazon,網址為 https://console.aws.amazon.com/ecs/
開啟 Amazon -
從導覽列中選擇包含您任務定義的區域。
-
在導覽窗格中,選擇 Task Definitions (任務定義)。
-
在 Task Definitions (任務定義) 頁面中,選取要修訂之任務定義左側的方塊,並選擇 Create new revision (建立新修訂版)。
-
在 Create new revision of Task Definition (建立任務定義的新修訂版) 頁面上,選取容器。
-
在 ENVIRONMENT (環境) 區段中,將逗號分隔的命令列選項清單新增至 Command (命令) 欄位。
-
選擇 Update (更新)。
-
驗證資訊,然後選擇 Create (建立)。
下列範例顯示如何為 RoleARN
選項撰寫逗號分隔的命令列。此選RoleARN
項會假設指定的 IAM 角色,將區段上傳至其他帳戶。
--role-arn, arn:aws:iam::
123456789012
:role/xray-cross-account
若要深入瞭解 X-Ray 中可用的指令行選項,請參閱設定AWS X-Ray協助程式。