标签: aws-elb

"目标组"与AWS中的"自动扩展组"有何不同?

我对条款及其用法有点困惑.你能帮我理解它们如何与Load Balancers一起使用吗?

我提到aws-doc徒劳无功:(

amazon-ec2 amazon-web-services aws-elb

20
推荐指数
4
解决办法
9352
查看次数

ELB健康检查历史/日志

我有一个 ELB(以几个 Auto Scaling 组作为目标组的网络负载均衡器),其定期运行状况检查失败(即某些实例将被标记为不运行状况,然后在几分钟后恢复)。健康检查是一个简单的静态页面(即/health_check)。

时间似乎是在主机网络负载较重(从 S3 下载大文件)的同时,但我想了解更多信息(例如,它们未通过 https 中提到的主动健康检查或被动健康检查: //docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-health-checks.html)。

但是,我无法从 ELB 找到健康检查历史记录或日志。我的所有搜索发现都是关于 ELB 的访问日志 ( https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-access-logs.html ),它与实际的用户请求有关。

此健康检查历史记录/日志可以在任何地方访问吗?

amazon-web-services amazon-elb aws-elb

13
推荐指数
1
解决办法
3993
查看次数

是否可以选择将 http 流量重定向到 aws 网络负载均衡器中的 https

在经典负载均衡器 (CLB) 和应用程序负载均衡器 (ALB) 中,可以选择将所有 http 流量重定向到 https 侦听器。

我没有找到将 tcp 端口 80 流量从 NLB(网络负载均衡器)重定向到 tls 端口 443 的选项

任何帮助深表感谢。

amazon-web-services aws-elb

12
推荐指数
3
解决办法
2万
查看次数

Kubernetes和AWS:将LoadBalancer设置为使用预定义的安全组

正如标题所说,我正在寻找一种方法来强制LoadBalancer服务在AWS中使用预定义的安全组.我不想手动编辑Kubernetes为ELB创建的安全组的入站/出站规则.我无法在文档中找到任何内容,也没有找到任何在线其他地方运行的内容.这是我目前的模板:

apiVersion: v1
kind: Service
metadata:
  name: ds-proxy
spec:
  type: LoadBalancer
  ports:
  - port: 8761 # the port that this service should serve on
    targetPort: 8761
    protocol: TCP
  selector:
    app: discovery-service
Run Code Online (Sandbox Code Playgroud)

amazon-web-services kubernetes aws-elb

11
推荐指数
1
解决办法
7315
查看次数

ECS 滚动更新可能导致 502 Bad Gateway

我一直在 DAEMON 模式下测试 ECS 的滚动更新,但我无法避免偶尔出现“502 Bad Gateway”响应。这是我为测试所做的工作,这似乎指出了排水策略过程中的一个错误。

首先,我用 Kotlin/Jersey 编写了一个最小的 hello-world 程序来响应 curl GET(源代码)。我每约 300 毫秒循环一次到达终点:

 while [ 1 ]; do curl -s http://...us-east-2.elb.amazonaws.com/helloWorld | ts '[%Y-%m-%d %H:%M:%S]'; echo ""; sleep 0.3; done
Run Code Online (Sandbox Code Playgroud)

接下来,我推送一个新的容器镜像(使用相同的标签),它会产生稍微不同的响应(110 与 1010),以便我可以观察推出进度。最后我强制更新服务:

aws ecs update-service --service service-helloworld-jersey --cluster cluster-helloworld-jersey --force-new-deployment
Run Code Online (Sandbox Code Playgroud)

我的服务中有两项任务,最低健康百分比为50% 。Bash 循环在滚动更新期间产生以下输出 - 在某些时候有两个输出,一个带有“110”(旧代码),另一个带有“1010”(新代码),这是在其中一个容器具有已更新,另一个仍未更新:

在此处输入图片说明

如果您将 Bash 控制台上的事件与 AWS 控制台中的事件相关联(两者都是 NTP 时间同步的),您可以看到大约 9:04:39,尽管“耗尽”,我们仍在使用旧代码/容器事件应该发生在 9:04:28 之后,我在下面用红色突出显示。在 9:04:39 任务最终停止,这与循环中的“502 Bad Gateway”响应相关。

在此处输入图片说明

我的结论是 ELB 没有正确排出最后一个目标,这导致了我们看到的错误。

如果有人有任何想法如何进一步诊断或配置不同,请告诉我。


通过将 ELB 的注销延迟从 10 秒增加到 30 秒,我能够避免任何服务中断。

在此处输入图片说明

amazon-ecs aws-elb

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

Kubernetes 入口 websockets 连接问题

使用 KOPS 在 AWS 上部署 k8s。我已经创建了 nginx 入口https://github.com/kubernetes/ingress-nginx nginx-ingress-controller 图像:quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.18.0

一切都已启动并正在运行,我可以使用由 nginx 服务创建的 aws 经典负载均衡器从外部访问应用程序。

最近我们开始研究 websockets。我在 k8s 中部署了我的服务并尝试从外部访问。

我为我的应用程序创建了服务和入口。Ingress 现在指向负载均衡器(在 json 文件下方)。

我在 aws 中创建了 route53 条目并尝试连接到该条目,但是当我尝试通过 chrome 浏览器从我的客户端应用程序连接时出现以下错误

WebSocket 连接到“wss://blockchain.aro/socket.io/?EIO=3&transport=websocket”失败:WebSocket 握手期间出错:意外响应代码:400

我尝试创建应用程序负载均衡器,但无法连接到 wss://<host>

错误:

WebSocket 连接到“wss://blockchain.aro/socket.io/?EIO=3&transport=websocket”失败:WebSocket 握手期间出错:意外响应代码:400

const config: SocketIoConfig = { url: 'wss://blockchain.aro',
  options: { autoConnect: false, transports: ['websocket']} };


Ingress:

   "annotations": {
      "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"extensions/v1beta1\",\"kind\":\"Ingress\",\"metadata\":{\"annotations\":{},\"name\":\"blockchain\",\"namespace\":\"adapt\"},\"spec\":{\"rules\":[{\"host\":\"blockchain.aro\",\"http\":{\"paths\":[{\"backend\":{\"serviceName\":\"blockchain\",\"servicePort\":8097},\"path\":\"/\"},{\"backend\":{\"serviceName\":\"blockchain\",\"servicePort\":8097},\"path\":\"/socket.io\"},{\"backend\":{\"serviceName\":\"blockchain\",\"servicePort\":8097},\"path\":\"/ws/\"}]}}],\"tls\":[{\"hosts\":[\"blockchain.aro\"],\"secretName\":\"blockchain-tls-secret\"}]}}\n",
      "nginx.ingress.kubernetes.io/proxy-read-timeout": "3600",
      "nginx.ingress.kubernetes.io/proxy-send-timeout": "3600"
    }
Run Code Online (Sandbox Code Playgroud)

包含tlssecretnamerules在入口文件中。我尝试创建,ApplicationLoadbalancer但我也无法与之建立联系。

websocket kubernetes aws-elb nginx-ingress

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

AWS ALB - 您必须从至少两个可用区中指定子网

对于 ALB - “您必须从至少两个可用区指定子网。”

对于 NLB - “您可以从一个或多个可用区指定子网。”

强制执行 2 个可用区作为 ALB 的 MUST 要求而不是 NLB 的原因是什么?

amazon-ec2 amazon-web-services aws-elb aws-alb

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

无法将认知身份验证添加到 aws 负载均衡器 (ELB)

我正在尝试按照https://docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-authenticate-users.html?icmpid=docs_elbv2_console向我的负载均衡器添加认知身份验证。

当我设置身份验证过程时,我只有“oidc”类型,但我期望“cognito”类型: 在此输入图像描述

当我尝试其余的 api 时,我遇到了同样的问题

操作类型“authenticate-cognito”必须是“redirect、fixed-response、forward、authenticate-oidc”之一

认知不可用。

我是否缺少一些权限?我是 AmazonCognitoPowerUser

amazon-cognito aws-elb

7
推荐指数
2
解决办法
1677
查看次数

Aws-elb健康检查在302代码失败

您好我在7070端口创建了ALB侦听器443和目标组实例(not-ssl)

我可以访问instanceip:7070没有问题,但https://开头ELB的DNS名称不能访问..比如健康检查也失败,302码

ALB侦听器端口https和实例是http协议,

当我使用https:// dns-name浏览时,它会重定向到http:// elb-dns-name

amazon-web-services aws-elb

6
推荐指数
1
解决办法
8822
查看次数

使用 UDP ECS 服务对 NetworkLoadBalancer 进行健康检查

我正在尝试部署仅使用 UDP 端口的 ECS 服务。通过 NetworkLoadBalancers 添加了对 UDP 负载平衡的支持,因此我部署了我的服务,允许为我的任务动态分配主机端口,并使用适当的侦听器和目标组设置 NLB。

我遇到的问题是NLB显然必须进行健康检查,并且必须基于 TCP。对于健康检查端口,您可以保留默认的“目标”端口(这适用于动态主机端口分配),或者您可以指定一个端口。我不能做的是为 TCP 公开的端口与我的负载均衡器目标 UDP 端口不同。我可以让我的容器在同一个端口上同时侦听用于生产的 UDP 和用于健康检查的 TCP,但即使 Docker 很好地支持它,任务定义似乎也不允许这样做。

这似乎会使 UDP NLB 对 ECS 服务无用,除非我遗漏了什么?我想出的唯一替代方法是使用静态配置的主机端口,以便我可以在受控主机端口上为 TCP 公开第二个端口,并将其作为 NLB 运行状况检查的目标。问题是我们现在已经失去了 ECS 的所有可扩展性优势,因为无法在一个实例上运行多个任务。

udp amazon-ec2 amazon-web-services amazon-ecs aws-elb

6
推荐指数
1
解决办法
772
查看次数