标签: aws-application-load-balancer

在 AWS Application LB 之上添加 AWS Cloudfront 有什么好处?

我参加了 AWS 培训,他们向我们解释说,一个好的做法是通过 Cloudfront 缓存所有动态内容,将 TTL 设置为 0,即使负载均衡器前面有一个 LB。所以它可能是这样的:

Route 53 -> CloudFront -> Application LB
Run Code Online (Sandbox Code Playgroud)

我看不到这种架构的任何优势,而不是直接(仅适用于动态内容):

Route 53 -> Application LB
Run Code Online (Sandbox Code Playgroud)

我不明白这一点,因为 Cloudfront 将始终将所有流量发送到 LB,因此您将拥有:

  • 两个 HTTPS 协商(客户端 <-> Cloudfront 和 Cloudfront <-> LB)
  • 完全没有缓存(它是动态内容,不应该被缓存,因为这就是“动态”的意思)
  • 您将没有客户端 IP,因为您的 LB 只会看到 Cloudfront IP(我知道这可以修复,以拥有客户端 IP,但是接下来您会遇到问题)。
  • 作为一项额外的工作,您需要能够经常更新您的 LB 安全组,以匹配 CloudFront IP(对于该区域),因为我猜您只想从您的 Cloudfront 获取流量,而不是直接从 LB 公共端点获取流量.

所以,可能我遗漏了一些关于这个Route 53 -> CloudFront -> Application LB架构的重要信息。

有任何想法吗?

谢谢!

web-architecture amazon-web-services amazon-cloudfront aws-application-load-balancer

8
推荐指数
2
解决办法
793
查看次数

AWS ECS Fargate ALB 错误(请求超时)

我已经设置了一个在端口 5566 上运行的 Docker 容器,其中包含一个小型 Django 应用程序。Docker 映像上传到 ECR,随后由 Fargate 容器使用。
我已经搭建了一个带有VPC的ECS集群。
创建任务定义和服务后,服务启动 2 个任务(正如预期的那样):

Fargate 服务正在运行

这是服务的网络访问(健康检查宽限期为 300 秒):

在此输入图像描述

我还设置了一个具有服务目标组的应用程序负载均衡器(带有 DNS),但运行状况检查似乎失败:

在此输入图像描述

这是健康检查配置:

在此输入图像描述

由于运行状况检查失败,任务将终止,并且每隔 5 分钟就会启动新任务。

这是容器的端口映射:

在此输入图像描述

由于无法访问 Fargate 容器(例如通过 SSH)并且日志为空,我该如何排查该问题?

我已尝试遵循应用程序负载均衡器故障排除中的每个步骤。

请随时询问更多信息。

amazon-web-services amazon-ecs aws-fargate aws-application-load-balancer

8
推荐指数
1
解决办法
5060
查看次数

AWS 上的 SSL 应用程序负载均衡器,无需自定义域

如果我不想使用自定义域,是否可以为 AWS 上的应用程序负载均衡器提供 SSL 证书,仅允许 HTTPS 连接?

目前正在开发一些内部仪表板应用程序,因此不需要/不想要附加到它们的域名。

当想要向 LB 添加域转发时,我只能挖掘在 Cloudformation 中创建证书的信息和教程。

amazon-web-services amazon-ecs aws-cloudformation aws-fargate aws-application-load-balancer

8
推荐指数
1
解决办法
6050
查看次数

迁移到应用程序负载均衡器后面的 AWS fargate 后,SignalR 握手出现问题

迁移到应用程序负载均衡器后面的 AWS fargate 后,SignalR 握手出现问题。

\n\n

在我让它在带有 nginx 的 EC2 实例上运行之前,在遵循这个建议后工作得很好;\n SignalR 位于 Nginx 后面的 ASP.NET Core 中。\n但由于一些原因,我们必须将其移至 AWS fargate 并使用 Aws 应用程序负载均衡器 (ALB)。\n现在我们可以\xc2\xb4t 启动并运行 signalR。该服务有一个运行良好的 REST API。

\n\n

我仍然可以切换回旧的基础设施,这就像一个魅力。

\n\n

从 flutter 应用程序我得到这个:

\n\n
flutter: [Signals] Connection Restarting after http error - 404 - Not Found\nflutter: [Signals] Connection Closed - Cannot start a connection that is not in the \'Disconnected\' state.\nflutter: [Signals] [Transport] SEVERE: : Server returned handshake error: \'Handshake was canceled.\'\nflutter: [Signals] [Hub] SEVERE:  Server returned handshake …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services signalr .net-core aws-application-load-balancer signalr-client

8
推荐指数
0
解决办法
1536
查看次数

AWS ALB 能否将流量转发到另一个 ALB

我们有两个 Nginx 正在运行,第一个 Nginx 在检查了一些将流量转发到另一个 Nginx 的规则后接收到流量,现在我们正在将其转移到 AWS ALB,但没有找到任何将流量从一个 ALB 转发到另一个 ALB 的选项。

请帮助我如何做到这一点。

我知道这两个 ALB 是一个设计问题,但目前我们无法改变这一点,团队将来会这样做。

amazon-web-services aws-alb aws-application-load-balancer

8
推荐指数
1
解决办法
6369
查看次数

我应该将哪些指标用于警报 HTTPCode_Target_5XX_Count 或 HTTPCode_ELB_5XX_Count?

我有一个带有单个目标组的 ALB(这是一个 istio-ingress 网关),我想捕获路由到该目标组的任何请求都返回 5XX 代码的场景。

根据文档:

HTTPCode_ELB_5XX_Count:

源自负载均衡器的 HTTP 5XX 服务器错误代码的数量。此计数不包括目标生成的任何响应代码。

HTTPCode_Target_5XX_Count:

目标生成的 HTTP 响应代码的数量。这不包括负载均衡器生成的任何响应代码。

我认为,由于这是一个单一目标组,因此它们应该是相同的,但显然它们不是,因为在特定时间范围内,我看到了一些 HTTP 4XX 的数据,但没有看到 ELB 4XX 的数据。有什么不同?我应该使用哪一个?

amazon-web-services aws-application-load-balancer

8
推荐指数
2
解决办法
7025
查看次数

为什么 AWS 的应用程序负载均衡器在使用 HTTPS 时需要自定义域?

如果我使用 HTTP 创建新的 AWS 应用程序负载均衡器 (ALB),则 AWS 将使用随机分配的域名创建负载均衡器。当我使用 HTTPS 创建新的 ALB 时,为什么 AWS 不能执行相同的操作?相反,当使用 HTTPS 创建新的 ALB 时,AWS 要求我提供自定义域名和自定义证书。

load-balancing amazon-web-services amazon-elb aws-application-load-balancer

8
推荐指数
1
解决办法
9410
查看次数

argoCD - 入口无法正常工作的外部访问

我是 Kubernetes 的新手,因此对于任何愚蠢的问题和错误提前表示歉意。我正在尝试通过 ArgoCD 的入口设置外部访问。我的设置是 aws eks 集群。我按照此处的指南设置了 alb 。我还按照此处所述设置了外部 DNS 服务。我还按照该指南中的验证步骤进行操作,并能够确认 dns 记录也已创建,并且我能够访问 foo 服务。

对于 argoCD,我通过以下方式安装了清单

kubectl create namespace argocd
kubectl apply -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml -n argocd
Run Code Online (Sandbox Code Playgroud)

argoCD 文档提到添加一个服务来拆分 http 和 grpc,以及一个入口设置。我遵循了这一点并安装了它们

apiVersion: v1
kind: Service
metadata:
  annotations:
    alb.ingress.kubernetes.io/backend-protocol-version: HTTP2
    external-dns.alpha.kubernetes.io/hostname: argocd.<mydomain.com>
  labels:
    app: argogrpc
  name: argogrpc
  namespace: argocd
spec:
  ports:
  - name: "443"
    port: 443
    protocol: TCP
    targetPort: 8080
  selector:
    app.kubernetes.io/name: argocd-server
  sessionAffinity: None
  type: ClusterIP
Run Code Online (Sandbox Code Playgroud)
apiVersion: networking.k8s.io/v1 # Use extensions/v1beta1 for Kubernetes …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services kubernetes kubernetes-ingress aws-application-load-balancer argoproj

8
推荐指数
1
解决办法
3495
查看次数

AWS 为 ELB/ALB 颁发(托管)TLS/SSL 证书

当我创建 ELB(即应用程序负载均衡器)时,Amazon 为其提供一个 DNS 名称,例如:

myalb-1472119708.eu-central-1.elb.amazonaws.com

现在,我想终止我的 ALB 上的 TLS/SSL,但是,我不想附加我自己的证书(例如来自证书管理器的证书),我可以通过默认 DNS 名称(ALB 的)访问我的应用程序)通过 HTTPS:

https://myalb-1472119708.eu-central-1.elb.amazonaws.com

但是,使用默认配置,我只能通过 HTTP 访问我的应用程序:

http://myalb-1472119708.eu-central-1.elb.amazonaws.com

AWS 支持这个(反问句)吗?有计划在不久的将来添加此功能吗?谢谢。


更新:毕竟这不是一个很难实现的功能。此外,SSL 是当今运行(安全)Web 应用程序的事实上的标准。我相信,AWS可以为每个区域的ELB颁发通配符证书,例如:

*.eu-central-1.elb.amazonaws.com

然后默认将其附加到每个 ALB。或者发布每个区域的证书 ARN 列表。这将使开发人员无需为非生产项目付出额外的努力(购买域名、在 ACM 中注册证书)。

ssl amazon-web-services amazon-elb tls1.2 aws-application-load-balancer

7
推荐指数
1
解决办法
1997
查看次数

配置 ECS 在不使用时缩放为零

我正在使用 Fargate 在 AWS ECS 中运行 Superset。Superset 的此实例仅供内部使用。我希望能够将 ECS 配置为在不使用时将任务扩展到零。我知道恢复需要时间(可能是几分钟),该应用程序的最终用户只需等待几分钟即可。

情况:

  • 使用 Fargate 部署的 AWS ECS
  • 自动缩放设置为最大值 2 和最小值 0
  • 希望在不使用时(例如一小时后)缩放到 0

amazon-ecs aws-fargate aws-application-load-balancer

7
推荐指数
1
解决办法
8740
查看次数