问题标签 [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.
amazon-web-services - 负载均衡器初始请求容量
我正在使用 AWS ALB LoadBalancer,我很好奇 ALB 无需扩展即可处理的初始请求容量?
这背后的原因是我是否需要预热我的负载均衡器
amazon-web-services - TTFB 和 ALB TargetResponseTime 之间的差异
我想知道是否有人可以给我一些建议。
我们最近决定迁移到 NextJS AWS (ECS Fargate),与我们当前的平台相比,我注意到 TTFB 很高。
我查看了 ALB 日志,报告的 TargetResponseTime(大约 1.3 秒)和 TTFB(大约 2.5 秒)之间似乎存在巨大差异。
这可能是负载均衡器中的某种延迟吗?如果是这样,我将如何进行调试?
两个托管服务提供商的应用程序都是相同的,我做了一个跟踪路由,以确保从我到应用程序不是网络延迟(实际上到达 AWS 更快)。
amazon-web-services - AWS 应用程序负载均衡器 (ALB) 基于主体的路由
在 AWS 中,我想通过检查每条消息中的标识字段来处理发布到 http 端点的消息,然后使用(例如)从该标识字段确定的自定义主机标头将它们路由到 AWS ALB,以便 ALB 规则可以然后转发到处理已识别消息类型的特定目标组。
我在想我可以让一个初始 ALB 接收消息,然后使用 lambda 函数作为可以进行消息检查的目标,检查标识字段,然后使用基于内容的主机头规则将消息路由到 ALB那个领域。
这是进行基于身体的路由的合理方法吗?或者,还有更好的方法?
提前致谢 :)
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
集并且它正在工作。
下面是我的入口资源清单文件。
在这方面的任何帮助都会很棒。谢谢。
amazon-web-services - AWS App Load-Balancer 的侦听器是否针对目标或目标组?
在 Amazon 对其Application Load Balancer的描述中,它们包括下图(我在有关该主题的其他材料中看到了该图):
但他们描述了监听器被配置为直接与目标组通信,而不是目标。如果是这种情况,从侦听器到它所针对的每个目标组不应该只有一个箭头吗?
amazon-web-services - LoadBalancer 和 Autoscaling 组:当 AZ 不可用时会发生什么?
我在应用程序负载均衡器后面有一个自动缩放组。它们都配置为对 2 个不同的 AZ 使用 2 个子网。
自动缩放组设置为仅配置 1 个实例(最小:1,最大:1,期望:1)
现在,如果 AZ 发生故障,负载均衡器将检测到实例不健康并停止向其发送 tarfic。
但是我假设 Autoscaling Group 会认为该实例是健康的,因此它不会在第二个 AZ 中创建新实例。
所以我的问题是有没有办法让负载均衡器通知自动缩放组终止失败 AZ 中的实例并在正常 AZ 中启动一个新实例?
我现在最好的做法是将 Autoscaling 组设置为例如配置 2 个实例,每个 AZ 中一个。但是有没有办法让它只使用 1 个实例?
谢谢。
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
任何帮助..提前谢谢..
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 访问该站点。请帮忙。谢谢你。