我参加了 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,因此您将拥有:
所以,可能我遗漏了一些关于这个Route 53 -> CloudFront -> Application LB
架构的重要信息。
有任何想法吗?
谢谢!
web-architecture amazon-web-services amazon-cloudfront aws-application-load-balancer
我已经设置了一个在端口 5566 上运行的 Docker 容器,其中包含一个小型 Django 应用程序。Docker 映像上传到 ECR,随后由 Fargate 容器使用。
我已经搭建了一个带有VPC的ECS集群。
创建任务定义和服务后,服务启动 2 个任务(正如预期的那样):
这是服务的网络访问(健康检查宽限期为 300 秒):
我还设置了一个具有服务目标组的应用程序负载均衡器(带有 DNS),但运行状况检查似乎失败:
这是健康检查配置:
由于运行状况检查失败,任务将终止,并且每隔 5 分钟就会启动新任务。
这是容器的端口映射:
由于无法访问 Fargate 容器(例如通过 SSH)并且日志为空,我该如何排查该问题?
我已尝试遵循应用程序负载均衡器故障排除中的每个步骤。
请随时询问更多信息。
amazon-web-services amazon-ecs aws-fargate aws-application-load-balancer
如果我不想使用自定义域,是否可以为 AWS 上的应用程序负载均衡器提供 SSL 证书,仅允许 HTTPS 连接?
目前正在开发一些内部仪表板应用程序,因此不需要/不想要附加到它们的域名。
当想要向 LB 添加域转发时,我只能挖掘在 Cloudformation 中创建证书的信息和教程。
amazon-web-services amazon-ecs aws-cloudformation aws-fargate aws-application-load-balancer
迁移到应用程序负载均衡器后面的 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\nflutter: [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
我们有两个 Nginx 正在运行,第一个 Nginx 在检查了一些将流量转发到另一个 Nginx 的规则后接收到流量,现在我们正在将其转移到 AWS ALB,但没有找到任何将流量从一个 ALB 转发到另一个 ALB 的选项。
请帮助我如何做到这一点。
我知道这两个 ALB 是一个设计问题,但目前我们无法改变这一点,团队将来会这样做。
我有一个带有单个目标组的 ALB(这是一个 istio-ingress 网关),我想捕获路由到该目标组的任何请求都返回 5XX 代码的场景。
根据文档:
HTTPCode_ELB_5XX_Count:
源自负载均衡器的 HTTP 5XX 服务器错误代码的数量。此计数不包括目标生成的任何响应代码。
HTTPCode_Target_5XX_Count:
目标生成的 HTTP 响应代码的数量。这不包括负载均衡器生成的任何响应代码。
我认为,由于这是一个单一目标组,因此它们应该是相同的,但显然它们不是,因为在特定时间范围内,我看到了一些 HTTP 4XX 的数据,但没有看到 ELB 4XX 的数据。有什么不同?我应该使用哪一个?
如果我使用 HTTP 创建新的 AWS 应用程序负载均衡器 (ALB),则 AWS 将使用随机分配的域名创建负载均衡器。当我使用 HTTPS 创建新的 ALB 时,为什么 AWS 不能执行相同的操作?相反,当使用 HTTPS 创建新的 ALB 时,AWS 要求我提供自定义域名和自定义证书。
load-balancing amazon-web-services amazon-elb aws-application-load-balancer
我是 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
当我创建 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
我正在使用 Fargate 在 AWS ECS 中运行 Superset。Superset 的此实例仅供内部使用。我希望能够将 ECS 配置为在不使用时将任务扩展到零。我知道恢复需要时间(可能是几分钟),该应用程序的最终用户只需等待几分钟即可。
情况:
aws-application-load-balancer ×10
amazon-ecs ×3
aws-fargate ×3
amazon-elb ×2
.net-core ×1
argoproj ×1
aws-alb ×1
kubernetes ×1
signalr ×1
ssl ×1
tls1.2 ×1