问题标签 [aws-nlb]
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.
websocket - AWS NLB + NGINX Ingress + websockets == 502 Bad Gateway or Bad Handshake
入口控制器配置(以下文件没有更改)
服务
入口
尝试各种 CLI websocket 客户端:
如果我从服务代理端口,一切正常:
SSL 信息
amazon-ec2 - 将一个 terraform 模块的输出引用到另一个模块时出错
我是 terraform 的新手,并尝试在 terraform v0.14.0 中创建一个项目,该项目将执行以下步骤:
- 创建多台 ec2 机器(一台为主,其余为子)
- 创建 NLB 和 terget 组
- 通过引用步骤 1(ec2 模块)的输出变量,将子 ec2 实例私有 ip 附加到目标组。
但是当我运行 terraform 计划时,我收到以下消息。这可以解决吗?或任何其他一次性提供这些资源的方法?
#项目级main.tf
#NLB 模块 main.tf
amazon-ec2 - EKS ingress-nginx 和 NLB 与 https 重定向
我最近遇到了 nlb 的问题,在 lb 上使用带有 https 终止的 nlb 与重定向 http=>https 和 EKS 上的 ingress-nginx 一起工作是一次冒险。
现在,我想将 X-Forwarded 标头传递给 pod,但这会破坏 http=>https 重定向,我在 http 请求上得到 400。
在服务上,我尝试将服务与 http 或 tcp 协议,同样的事情。
将service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*"
标头添加到服务中,在所有目标上激活代理协议 v2,并use-proxy-protocol: 'true'
在 nginx 的 configmap 中激活会通过 308 重定向破坏 http-snippet:
有没有人有办法让它可以使用带有所有好的标题和重定向工作的nlb?
编辑评论请求添加完整的工作配置
amazon-web-services - 如何使用 AWS 上的网络负载均衡器公开在 IPv6 协议上运行的应用程序
我有一个在端口 7071 上运行的应用程序,当我这样做时:-
netstat -aon | grep 7071
我得到: -
tcp6 :::7071 3204/java (snipped)
我能够使用 tcp:7071 创建一个目标组并且主机返回健康,我为此创建了一个双栈 NLB(面向互联网)。
仍然当我尝试在另一个 AWS 账户的 EC2 实例中访问它时,连接超时:-
telnet dualstack.name.elb.eu-west-2.amazonaws.com 80
安全组允许 80 的所有流量,包括 ipv6。
我们有四个 AWS 账户,它们服务于不同的环境(开发、测试、测试版、生产)。由于许可证限制,正在运行的应用程序只能有一个实例。因此我们需要将此应用程序公开给其他 AWS 帐户,这就是此设置(不起作用)的原因。
请帮忙。
terraform - 如何配置 AWS 网络负载均衡器以使用 Terraform 保留客户端 IP 地址?
AWS 控制台允许将 NLB 目标组配置为保留客户端 IP 地址:
但是,此设置在 Terraform 的负载均衡器目标组中似乎不可用: https ://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_target_group
如何通过 Terraform 启用此选项,还是不支持?
保留客户端 IP 地址是负载均衡器目标组的“属性”部分中的一个选项。其他选项有代理协议 v2、粘性、注销时连接终止和注销延迟。Terraform LB 目标组包括proxy_protocol_v2
、stickiness
和deregistration_delay
,但不包括其他两个选项(据我所知)。
amazon-web-services - AWS NLB 如何保留客户端源 IP 地址
我在玩 NLB。一个特点是它可以保留客户端源IP。我测试了它并且它有效。但是,有没有人想知道它是如何工作的?
假设我的家用 PC 是 HTTP 请求的客户端,它位于公共 IP 1.1.1.1 后面
NLB 在公共端的 IP 为 2.2.2.2。目标组中真正的 webserver 是私有 IP 192.168.0.10 的实例。该实例也在公有子网中,它的弹性 IP 为 2.2.2.10。
我通过服务器上的数据包捕获 (tcpdump) 确认我看到来自 1.1.1.1 的请求。我看到响应也回到了 1.1.1.1。但是,我家用 PC 的 Wireshark 会显示往返 2.2.2.2 的流量,而不是 2.2.2.10……这怎么可能?
从路由的角度来看,服务器会收到来自 1.1.1.1 的请求,并将响应发送回给它。响应将遍历 IGW,而不是 NLB,因此在 Internet 上时将具有 2.2.2.10。我的电脑会拒绝连接,因为响应来自不同的 IP (2.2.2.10) 而不是原始 IP (2.2.2.2)。
NLB 是否以某种方式与 IGW 相关联,在这种情况下,IGW 会知道 SNAT 对 2.2.2.2 而不是 2.2.2.10 的响应?
谢谢,迪凡
kubernetes - Kubernetes/EKS 滚动更新导致停机
我们为部署到 EKS 的服务有以下配置,但每当我们进行部署时,它都会导致大约 120 秒的停机时间。
当我直接转发到新 pod 时,我可以成功地向它发出请求,因此 pod 本身看起来很好。似乎是没有路由流量的 AWS NLB 或与网络相关的东西,但我不确定,我不知道在哪里进一步调试。
我尝试了几件事无济于事:添加 a readinessProbe
,尝试增加initialDelaySeconds
to 120
,尝试切换到IP
ELB 目标,而不是instance
ELB 目标类型,尝试减少 NLB 的健康检查间隔,但实际上并没有被应用,并且保持为 30 秒。
任何帮助将不胜感激!
wcf - WCF 客户端可以发起 TLS 通信 (netTCP) 吗?
我有一个运行 .Net 4.8 的 WCF 客户端,我想通过使用 TLS 侦听器的 AWS 网络负载均衡器连接到我们的 WCF 服务。问题是我无法通过它连接。当我在 NLB 中使用 TCP 侦听器时,我可以正确连接。
我就这个问题联系了 AWS 支持,经过一番调查,他们确认我的 NLB 配置没有问题,并建议我的 WCF 客户端必须启动与 NLB 的 TLS 侦听器的 TLS 通信,才能通过 TLS 正确通信。
但根据我的研究,WCF 服务是规定客户端安全要求的服务。在此Microsoft 资源的第一行中提到了这一点。有没有办法强制我的 WCF 客户端启动 TLS 通信?
我的客户端代码中已经有:
在我的客户端配置文件中,我在绑定配置中有这个。
此外,当我在 TCP 侦听器上成功通信期间检查数据包时,在 TCP 握手之后,客户端和服务在启动 TLS 通信之前交换了一些信息。不确定这是否重要,但我只想说明这一点。
我需要 WCF 客户端的行为类似于配置为使用 TLS 的浏览器,它是启动与正在与之通信的后端实体的 TLS 通信的人。(例如网络服务器、负载均衡器等)
有没有办法强制我的 WCF 客户端启动 TLS 通信?
kubernetes - 网络负载均衡器而不是负载均衡器
我正在 kubernetes 中创建服务。如何将 Classic Load Balancer 更改为 Network Load Balancer?我正在为它提供的外部客户端 IP 转向网络负载均衡器。我使用 AWS。这是我的配置:
netty - 由于没有 PSH 标志,AWS 的代理协议 v2 中断应用程序
我有一个使用 Netty 构建的网络应用程序。该应用程序位于 Amazon 网络负载均衡器之后。
我现在希望能够检索原始客户端 IP 地址,因此我打开了网络负载平衡器上的代理协议 v2 设置。
不幸的是,这样做会破坏应用程序。
可以使用 nc 或 telnet 之类的方式通过终端与应用程序进行交互。
在连接到应用程序时,用户通常会收到一条欢迎消息,然后提示您输入查询以与应用程序交互。
当代理协议 v2 打开时,在连接时,欢迎消息不再写入客户端,而是客户端看到如下内容:
捕获网络数据包我注意到代理协议 v2 关闭时(应用程序工作正常)和它打开时(应用程序工作不正常)之间的区别
当 Proxy 协议 v2 关闭时,数据包交互可以总结如下:
而当Proxy协议v2开启时,包交互可以总结如下:
从上图可以看出,当Proxy Protocol v2开启时,包交换在第三次交换处停止,服务器从不发送第4次包交换,其中包含[PSH, ACK]
Proxy Protocol v2关闭时的信息。
知道为什么会这样吗?为什么[PSH, ACK]
开启代理协议 v2 时,永远不会发送带有标志的数据包?以及有关如何解决此问题的任何提示?