问题标签 [aws-application-load-balancer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
43 浏览

amazon-web-services - 负载均衡器初始请求容量

我正在使用 AWS ALB LoadBalancer,我很好奇 ALB 无需扩展即可处理的初始请求容量?

这背后的原因是我是否需要预热我的负载均衡器

0 投票
1 回答
257 浏览

amazon-web-services - AWS Application Load Balancer 将所有 www 和非 http 重定向到 https://

我有一个规则设置将所有流量从 http 重定向到 https

在此处输入图像描述

我怎样才能将http://www重定向到 https://?据我所知,{host} 变量包含 www,我无法删除它。

0 投票
0 回答
151 浏览

amazon-web-services - TTFB 和 ALB TargetResponseTime 之间的差异

我想知道是否有人可以给我一些建议。

我们最近决定迁移到 NextJS AWS (ECS Fargate),与我们当前的平台相比,我注意到 TTFB 很高。

我查看了 ALB 日志,报告的 TargetResponseTime(大约 1.3 秒)和 TTFB(大约 2.5 秒)之间似乎存在巨大差异。

这可能是负载均衡器中的某种延迟吗?如果是这样,我将如何进行调试?

两个托管服务提供商的应用程序都是相同的,我做了一个跟踪路由,以确保从我到应用程序不是网络延迟(实际上到达 AWS 更快)。

0 投票
1 回答
314 浏览

amazon-web-services - AWS 应用程序负载均衡器 (ALB) 基于主体的路由

在 AWS 中,我想通过检查每条消息中的标识字段来处理发布到 http 端点的消息,然后使用(例如)从该标识字段确定的自定义主机标头将它们路由到 AWS ALB,以便 ALB 规则可以然后转发到处理已识别消息类型的特定目标组。

我在想我可以让一个初始 ALB 接收消息,然后使用 lambda 函数作为可以进行消息检查的目标,检查标识字段,然后使用基于内容的主机头规则将消息路由到 ALB那个领域。

这是进行基于身体的路由的合理方法吗?或者,还有更好的方法?

提前致谢 :)

0 投票
1 回答
2107 浏览

amazon-web-services - 使用 ALB 入口控制器将非 www 重定向到 www

我正在尝试将non www请求重定向到www. 我在这里检查了注释https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/但找不到特定于非 www 到 www 的重定向。

我已经有一个http重定向https集并且它正在工作。

下面是我的入口资源清单文件。

在这方面的任何帮助都会很棒。谢谢。

0 投票
1 回答
55 浏览

amazon-web-services - AWS App Load-Balancer 的侦听器是否针对目标或目标组?

在 Amazon 对其Application Load Balancer的描述中,它们包括下图(我在有关该主题的其他材料中看到了该图):

在此处输入图像描述

但他们描述了监听器被配置为直接与目标组通信,而不是目标。如果是这种情况,从侦听器到它所针对的每个目标组不应该只有一个箭头吗?

0 投票
1 回答
177 浏览

amazon-web-services - LoadBalancer 和 Autoscaling 组:当 AZ 不可用时会发生什么?

我在应用程序负载均衡器后面有一个自动缩放组。它们都配置为对 2 个不同的 AZ 使用 2 个子网。

自动缩放组设置为仅配置 1 个实例(最小:1,最大:1,期望:1)

现在,如果 AZ 发生故障,负载均衡器将检测到实例不健康并停止向其发送 tarfic。

但是我假设 Autoscaling Group 会认为该实例是健康的,因此它不会在第二个 AZ 中创建新实例。

所以我的问题是有没有办法让负载均衡器通知自动缩放组终止失败 AZ 中的实例并在正常 AZ 中启动一个新实例?

我现在最好的做法是将 Autoscaling 组设置为例如配置 2 个实例,每个 AZ 中一个。但是有没有办法让它只使用 1 个实例?

谢谢。

0 投票
0 回答
206 浏览

amazon-web-services - AWS Elastic Beanstalk 不会将负载均衡器减少到零实例

我有一个测试和生产环境,都使用弹性 beantalk 构建。我想将测试应用程序负载均衡器实例大小减少到 0,即在某个时间将其关闭。

我已经在 AWS 中设置了一个时间表来执行此操作(见图):

在此处输入图像描述

但是,当我查看 EC2 实例(当前 UTC 时间 2:53)时,它显然不起作用:

在此处输入图像描述

任何帮助,将不胜感激。

谢谢

标记

0 投票
1 回答
1439 浏览

amazon-web-services - 我无法获取 ALB URL。地址为空

我正在尝试遵循本指南 https://aws.amazon.com/blogs/containers/using-alb-ingress-controller-with-amazon-eks-on-fargate/

以下步骤:

集群配置 AWS_REGION=us-east-1 CLUSTER_NAME=eks-fargate-alb-demo

eksctl 创建集群 --name $CLUSTER_NAME --region $AWS_REGION --fargate

kubectl get svc 你应该得到以下响应: NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 443/TCP 16h

使用集群设置 OIDC 提供程序并创建 ALB 入口控制器使用的 IAM 策略 wget -O alb-ingress-iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-控制器/master/docs/examples/iam-policy.json aws iam create-policy --policy-name ALBIngressControllerIAMPolicy --policy-document file://alb-ingress-iam-policy.json

STACK_NAME=eksctl-$CLUSTER_NAME-cluster VPC_ID=$(aws cloudformation describe-stacks --stack-name "$STACK_NAME" | jq -r '[.Stacks[0].Outputs[] | {key: .OutputKey, value: .OutputValue}] | from_entries' | jq -r '.VPC') AWS_ACCOUNT_ID=$(aws sts get-caller-identity | jq -r '.Account')

猫 > rbac-role.yaml <<-EOF

apiVersion:rbac.authorization.k8s.io/v1 种类:ClusterRole 元数据:标签:app.kubernetes.io/name:alb-ingress-controller 名称:alb-ingress-controller 规则:-apiGroups:-“”-扩展资源: - configmaps - 端点 - 事件 - 入口 - 入口/状态 - 服务动词: - 创建 - 获取 - 列表 - 更新 - 监视 - 补丁 - apiGroups: - “” - 扩展资源: - 节点 - pods - 秘密 - 服务 - 命名空间动词: - 获取 - 列表

- 手表

apiVersion:rbac.authorization.k8s.io/v1 种类:ClusterRoleBinding 元数据:标签:app.kubernetes.io/name:alb-ingress-controller 名称:alb-ingress-controller roleRef:apiGroup:rbac.authorization.k8s.io 种类: ClusterRole 名称:alb-ingress-controller 主题:- 种类:ServiceAccount 名称:alb-ingress-controller 命名空间:kube-system EOF

kubectl apply -f rbac-role.yaml 这些命令将为我们创建两个资源,输出应该类似于:

clusterrole.rbac.authorization.k8s.io/alb-ingress-controller created clusterrolebinding.rbac.authorization.k8s.io/alb-ingress-controller created 最后是 Kubernetes 服务帐户:

eksctl create iamserviceaccount \ --name alb-ingress-controller \ --namespace kube-system \ --cluster $CLUSTER_NAME \ --attach-policy-arn arn:aws:iam::$AWS_ACCOUNT_ID:policy/ALBIngressControllerIAMPolicy \ --approve此 eksctl 命令将部署具有 IAM 角色的新 CloudFormation 堆栈。等待它完成,然后再继续执行后续步骤。

部署 ALB 入口控制器 现在让我们将 ALB 入口控制器部署到我们的集群:

cat > alb-ingress-controller.yaml <<-EOF apiVersion:apps/v1 种类:部署元数据:标签:app.kubernetes.io/name:alb-ingress-controller 名称:alb-ingress-controller 命名空间:kube-system规格:选择器:matchLabels:app.kubernetes.io/名称:alb-ingress-controller 模板:元数据:标签:app.kubernetes.io/名称:alb-ingress-controller 规格:容器:-名称:alb-ingress-controller参数: - --ingress-class=alb - --cluster-name=$CLUSTER_NAME - --aws-vpc-id=$VPC_ID - --aws-region=$AWS_REGION 映像:docker.io/amazon/aws-alb -ingress-controller:v1.1.4 serviceAccountName: alb-ingress-controller EOF kubectl apply -f alb-ingress-controller.yaml

将示例应用程序部署到集群 现在我们已经运行了入口控制器,我们可以将应用程序部署到集群并创建一个入口资源来公开它。

让我们从部署开始:

cat > nginx-deployment.yaml <<-EOF apiVersion: extensions/v1beta1 kind: Deployment metadata: name: "nginx-deployment" namespace: "default" spec: replicas: 3 template: metadata: labels: app: "nginx" spec :容器:-图像:nginx:最新 imagePullPolicy:始终名称:“nginx”端口:-containerPort:80 EOF

kubectl apply -f nginx-deployment.yaml 输出应该类似于:

deployment.apps/alb-ingress-controller created 然后,让我们创建一个服务,以便我们可以公开 NGINX pod:

cat > nginx-service.yaml <<-EOF apiVersion: v1 kind: 服务元数据: annotations: alb.ingress.kubernetes.io/target-type: ip name: "nginx-service" namespace: "default" spec: ports: - 端口:80 目标端口:80 协议:TCP 类型:NodePort 选择器:应用程序:“nginx”EOF

kubectl apply -f nginx-service.yaml 输出将类似于:

deployment.extensions/nginx-deployment created 最后,让我们创建我们的入口资源:

cat > nginx-ingress.yaml <<-EOF apiVersion: extensions/v1beta1 kind: Ingress metadata: name: "nginx-ingress" namespace: "default" annotations: kubernetes.io/ingress.class: alb alb.ingress.kubernetes. io/scheme:面向互联网的标签:app:nginx-ingress 规范:规则:-http:paths:-path:/* backend:serviceName:“nginx-service” servicePort:80 EOF kubectl apply -f nginx-ingress.yaml

输出将是:

ingress.extensions/nginx-ingress created 一切完成后,您将能够通过运行以下命令获取 ALB URL:

kubectl get ingress nginx-ingress 此命令的输出将与此类似:

名称 主机 地址 端口 年龄 nginx-ingress * 5e07dbe1-default-ngnxingr-2e9-113757324.us-east-2.elb.amazonaws.com 80 9s

但我无法在此步骤中获取 ALB URL kubectl get ingress nginx-ingress

任何帮助..提前谢谢..

0 投票
1 回答
1198 浏览

laravel - 目标组 443 使用以下代码进行健康检查失败:[502]

我想在亚马逊上部署一个 Laravel 网站,所以我做了以下步骤:

  • 使用 Elastic Beanstalk 部署 Laravel 应用程序
  • 配置Route:53一个实例指向Ec2的Ip
  • 创建了具有两个侦听器的应用程序负载均衡器,一个在 80,一个在 443
  • 创建了 2 个目标组 Tg80 和 Tg443 并分别指定听众
  • 请注意,Tg443 具有有效的 SSL 证书

  • 将 Ec2 的安全组更改为负载均衡器的安全组

  • 将 Route:53 中的 A 实例更改为负载均衡器的实例

**结果: **

  • 该站点在带有http的端口80上完美运行,对于健康检查也是如此,我可以从任何浏览器正常访问该站点

  • 该站点在 https:443 上返回 [502 Bad Gateway]

  • 在(在 ssh 到实例之后)/var/log/httpd/error_log 我有以下错误/var/www/html/.htaccess: RewriteCond: bad flag delimiters

所以,我试过了,根据链接enforce-https-laravel

  • .htaccess按照链接中的说明在 laravel 应用程序中进行配置,请刷新所有内容 `php artisan config:cache,重试运行状况检查,但结果相同

  • 我删除.htaccess并配置了app/Providers/AppServiceProvider.php

  • 并添加ENFORCE_SSL=true.env然后php artisan config:cache如同一链接中所述,它是一种比.htaccess.

但结果相同

我不知道该怎么办或如何解决这个问题。 我希望能够使用 ssl 访问该站点。请帮忙。谢谢你。

在此处输入图像描述