- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前是一名实习生,必须托管一个微服务应用程序。我选择将 AWS ECS 与 Fargate 任务结合使用来托管 Consul Connect Service Mesh,为应用程序提供服务发现、意图、Mtls 等。我的设置如下:
我正在使用 CloudFormation 自动部署该基础设施。
问题:
我需要使用 CloudFormation 将在一个 Fargate 任务中运行的 Consul 代理加入到在另一个 Fargate 任务(服务器的任务)中启动的 Consul 集群。我这样做的问题是我没有找到任何方法来获取 IP 地址以将代理加入集群。
有谁知道如何获取 CloudFormation 中 Fargate 任务的 IP 地址或执行此操作的最佳实践方法?
如果我没记错的话,你只能使用 IP、DNS 名称或云元数据将 Consul 代理加入 Consul 集群。我无法使用 CloudFormation 检索第一个和第二个,而对于第三个,我发现这可能是不可能的(我可能是错的,但这就是我到目前为止读到的内容)。
我还尝试了 Consul agent -ui [...] -join 和 -retry-join 标志,但都不起作用。我还尝试使用 Consul 服务器为任务创建一个内部负载均衡器,我使用 DNS 名称尝试加入集群,但这也不起作用(我从未在 AWS 上正确设置过负载均衡器,所以我可能都做错了)。我尝试使用负载均衡器将流量转发到端口 8500(我认为这是错误的端口),然后使用端口 8301(我认为这是正确的端口)。但我不断收到消息说该地址上没有 Consul Cluster。
谁能告诉我如何继续?
提前谢谢您!
最佳答案
感谢我的一位非常聪明的同事,我发现通过 Consul Server Fargate 任务在 ECS 服务前面放置一个负载均衡器(我之前设置错误)解决了我的问题。负载均衡器监听器应监听 SERF 端口 8301 tcp_udp,并将流量转发到具有该协议(protocol)和端口的服务。
ConsulServerTargetGroup8301:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
HealthCheckEnabled: true
HealthCheckIntervalSeconds: 30
UnhealthyThresholdCount: 3
HealthyThresholdCount: 3
Name: ConsulServerTargetGroup8301
Port: 8301
Protocol: TCP_UDP
TargetGroupAttributes:
- Key: deregistration_delay.timeout_seconds
Value: 60 # default is 300
TargetType: ip
VpcId: !Ref VPC
ConsulServerTargetGroupListener8301:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
DefaultActions:
- TargetGroupArn: !Ref ConsulServerTargetGroup8301
Type: forward
Port: 8301
Protocol: TCP_UDP
LoadBalancerArn: !Ref ConsulServerLoadbalancer
ConsulServerLoadbalancer:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Properties:
Name: ConsulServerLoadbalancer
IpAddressType: ipv4
Type: network
Scheme: internal
SubnetMappings:
- SubnetId: !Ref PrivateSubnet1a
- SubnetId: !Ref PrivateSubnet1b
然后,您可以使用负载均衡器的 DNS 名称将 Consul 代理加入 Consul 集群:
Command:
- !Sub >-
consul agent
-ui
-data-dir consul/data
-advertise '{{ GetPrivateInterfaces | include "network" "${pVPCIpRange}" | attr "address" }}'
-client 0.0.0.0
-retry-join ${ConsulServerLoadbalancer.DNSName}
关于amazon-web-services - 如何通过 CloudFormation 在不同 Fargate 任务中运行的 Consul 服务器将 Consul 代理加入 Consul 集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67331638/
AWS ECS Fargate 启动和运行 docker 镜像的最短/平均时间是多少? 为了争论,45MB anapsix/alpine-java图片。 我想研究使用 ECS Fargate 来加快在
我已在 AWS Fargate 上部署了我的 asp.net core 应用程序,一切正常。我正在使用 awslogs 驱动程序,日志已正确发送到 cloudwatch。但是经过几天的正确工作,我现在
我已在 AWS Fargate 上部署了我的 asp.net core 应用程序,一切正常。我正在使用 awslogs 驱动程序,日志已正确发送到 cloudwatch。但是经过几天的正确工作,我现在
我在 fargate 上运行一个任务,CPU 为 2048,内存为 8192。运行一段时间后的任务因错误而停止 container was stopped as it ran out of memor
我有一个在 ECS/Fargate 上运行的 Node.js 应用程序。我想设置一些环境变量,根据我的阅读,这应该在任务定义中完成。但是,在最初定义任务后似乎没有任何方法可以编辑环境变量。当我查看任务
我有一个给定的 AWS fargate 任务定义。 do_something 调用不支持超过 4 个并发消费者的下游服务。因此,我必须找到一种方法来限制同时运行的并发 do_something far
我有一个用于存储容器日志的 AWS EFS 共享。 我想将此 nfs 共享 (aws efs) 挂载到 AWS Fargate。可能吗? 任何支持文档链接将不胜感激。 最佳答案 你可以这样做since
我收到“不支持所请求的一项或多项功能。”尝试在AWS FARGATE上从Amazon EFS装载卷时发生错误。 最佳答案 编辑您的服务并将“平台版本”更新为1.4.0 您可以在terraform中通过
我正在尝试将 Fargate 服务添加为 Application Load Balancer 目标,但它总是获取错误的容器端口。任务定义有两个容器:端口 8080 上的应用程序和端口 443 上的 n
我正在尝试最简单的部署来在 Fargate 中启动并运行 HTTPS Web 服务器。 我已使用 Amazon Certificate Manager 创建 public certificate .
我在 aws eks 中有一个带有 Fargate 配置文件的 kubernetes 集群。当我尝试在 kube-system 命名空间中运行 aws 负载均衡器 Controller 或指标服务器时
AutoScalingGroup 需要 LaunchConfiguration 问题是 LaunchConfiguration 需要 ImageId 和其他参数等参数,因为我使用容器,所以我没有这些参
我们有一个基于 CPU 和内存为 ecs 容器化应用程序配置目标跟踪自动缩放的简单示例。我们通过以下代码自动配置了 4 个警报(2 个 CPU - 1 个放大,1 个缩小,2 个内存,1 个放大和 1
我们有一个旧的 Java 应用程序在 Jboss As 7.1.1 中运行。目前,此应用程序在 AWS EC2 实例类型 t3.medium 上运行,该实例类型为 2 个 CPU 内核和 4GB 内存
如何配置 ECS Fargate + Cloudwatch 以包含特定文件位置。 我有 app-access.log 我的框架将所有访问日志存放在其中。Cloudwatch 目前仅使用来 self 的
我正在使用以下命令启动单个 ECS Fargate 任务: aws ecs run-task --cluster Fargate \ --task-definition $ECR_REPO-run-
我的Nginx Dockerfile: FROM nginx:1.15.12-alpine RUN rm /etc/nginx/conf.d/default.conf COPY ./nginx/ngi
我们正在尝试在 AWS ECS 上启动一个 fargate 容器。在容器定义中,我们有 "command": [ "/bin/bash", "-c",
目前我正在研究如何在 AWS 上编排我们的容器化微服务。ECS 的 Fargate 选项看起来很有前途,无需管理 EC2 实例。 尽管在 Fargate 中启动“任务”所需的时间非常长,即使对于简单的
我有一个 AWS FARGATE 任务,它正在运行一个相对简单的 python 应用程序(具有从 python:3.6-stretch 构建的 Docker 镜像)。它使用 Amazon EC2 任务
我是一名优秀的程序员,十分优秀!