You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EKS与EC2服务集成及X-Ray追踪、CloudMap配置咨询

解决方案:EC2服务的X-Ray链路追踪与CloudMap集成配置

一、AWS X-Ray 追踪EC2上的服务(Camunda Tomcat + Kafka)

1. 基础准备:EC2实例IAM权限配置

给运行Camunda Tomcat和Kafka的EC2实例附加包含以下权限的IAM角色:

  • xray:PutTraceSegments
  • xray:PutTelemetryRecords
  • xray:GetSamplingRules
  • xray:GetSamplingTargets
  • xray:GetSamplingStatisticSummaries

2. 安装X-Ray Daemon到EC2实例

X-Ray Daemon负责收集本地追踪数据并发送到AWS X-Ray服务,两种部署方式:

  • 包管理器安装(以Amazon Linux 2为例):
    sudo yum install -y xray-daemon
    sudo systemctl start xray-daemon
    sudo systemctl enable xray-daemon
    
  • Docker部署:
    docker run -d --name xray-daemon --net host amazon/aws-xray-daemon -b 0.0.0.0:2000
    

3. Camunda Tomcat(WAR包)的X-Ray集成

(1)添加X-Ray Java SDK依赖

在应用的pom.xml中加入以下依赖(版本可根据实际调整):

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-xray-recorder-sdk-core</artifactId>
    <version>2.16.0</version>
</dependency>
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-xray-recorder-sdk-servlet</artifactId>
    <version>2.16.0</version>
</dependency>
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-xray-recorder-sdk-apache-http</artifactId>
    <version>2.16.0</version>
</dependency>

(2)配置Tomcat请求拦截器

在应用的web.xml中添加X-Ray过滤器,拦截HTTP请求生成追踪段:

<filter>
    <filter-name>AWSXRayServletFilter</filter-name>
    <filter-class>com.amazonaws.xray.javax.servlet.AWSXRayServletFilter</filter-class>
    <init-param>
        <param-name>fixedName</param-name>
        <param-value>camunda-tomcat-service</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>AWSXRayServletFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

(3)Kafka客户端链路追踪

如果Camunda应用调用Kafka,需在生产者/消费者配置中添加X-Ray拦截器:

Properties producerProps = new Properties();
// 其他Kafka生产者配置
producerProps.put(ProducerConfig.INTERCEPTOR_CLASSES_CONFIG, 
                  "com.amazonaws.xray.kafka.AWSXRayKafkaProducerInterceptor");

// 消费者配置同理
Properties consumerProps = new Properties();
consumerProps.put(ConsumerConfig.INTERCEPTOR_CLASSES_CONFIG, 
                  "com.amazonaws.xray.kafka.AWSXRayKafkaConsumerInterceptor");

4. Kafka集群的X-Ray集成

(1)添加X-Ray Kafka拦截器

修改Kafka broker的server.properties配置文件:

interceptor.classes=com.amazonaws.xray.kafka.AWSXRayKafkaBrokerInterceptor

将X-Ray Kafka SDK的jar包放入Kafka的lib目录,确保broker启动时能加载该拦截器。

(2)验证链路

部署完成后,发起跨服务请求,进入AWS X-Ray控制台即可查看EKS微服务 → Camunda Tomcat → Kafka的完整调用链路。


二、AWS CloudMap集成EC2上的服务

1. 创建CloudMap命名空间

登录AWS控制台进入CloudMap,创建私有DNS类型的命名空间(适配VPC内服务发现):

  • 命名空间名称:例如my-microservices.local
  • 关联目标VPC:选择EC2和EKS所在的VPC

2. 注册Camunda Tomcat服务

(1)创建服务定义

  • 服务名称:camunda-tomcat
  • DNS记录类型:A记录(映射EC2实例私有IP)
  • 端口:指定Tomcat运行端口(如8080)

(2)注册EC2实例

  • 手动注册:在CloudMap控制台直接添加EC2实例的私有IP
  • 自动注册:给EC2实例附加包含servicediscovery:RegisterInstance、servicediscovery:DeregisterInstance权限的IAM角色,然后执行以下脚本(可加入crontab定期更新):
    aws servicediscovery register-instance \
      --service-id <你的Camunda服务ID> \
      --instance-id <EC2实例ID> \
      --attributes AWS_INSTANCE_IPV4=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)
    

3. 注册Kafka集群服务

(1)创建服务定义

  • 服务名称:kafka-cluster
  • DNS记录类型:SRV记录(适配Kafka端口9092)或A记录+端口

(2)注册Kafka Broker实例

自动注册脚本示例:

aws servicediscovery register-instance \
  --service-id <你的Kafka服务ID> \
  --instance-id <EC2实例ID> \
  --attributes AWS_INSTANCE_IPV4=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4),AWS_INSTANCE_PORT=9092

4. 服务发现集成

  • EKS内的微服务可通过CloudMap域名直接访问EC2服务,例如:
    • Camunda Tomcat:camunda-tomcat.my-microservices.local:8080
    • Kafka集群:kafka-cluster.my-microservices.local:9092
  • Java应用可通过Spring Cloud AWS自动集成,在application.yml中配置:
    spring:
      cloud:
        aws:
          servicediscovery:
            enabled: true
            namespace: my-microservices.local
    

内容的提问来源于stack exchange,提问作者junka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:40:29