【发布时间】:2021-09-20 23:19:43
【问题描述】:
我使用 Amazon ECS 在应用程序负载均衡器后面部署了一个 redis 容器。尽管容器正在运行并准备好接受连接,但健康检查似乎失败了。它似乎失败了,因为健康检查是HTTP,而redis当然不是http服务器。
# Possible SECURITY ATTACK detected. It looks like somebody is sending
POST or Host: commands to Redis. This is likely due to an attacker
attempting to use Cross Protocol Scripting to compromise your Redis
instance. Connection aborted.
很公平。
我认为经典负载平衡器会很好,因为我可以显式 ping TCP。将redis与ALB一起使用是否可行?
【问题讨论】:
-
您能解释一下为什么要在负载均衡器后面运行 Redis 吗?通常,如果您要在一组 Redis 节点之间进行平衡,那么在这种情况下,您应该在 Redis 客户端而不是负载平衡器中执行此操作。
-
@AndyShinn 我不需要负载平衡,但我想要一个静态点来访问 redis 实例,这样我就可以将它传递给 Web 应用程序配置。负载均衡器 dns 可以完成此任务。动态端口映射非常适合在单个集群中部署多个非生产 redis 实例。
-
你是如何解决这个问题的,@bluescores?
-
@San 这是几年前的事了,我不能告诉你!不过,据我所知,ALB 是第 7 层负载均衡器,这意味着它们仅处理 HTTP/HTTPS。网络负载均衡器在第 4 层 (TCP) 上运行,并且可能像我试图做的那样放置在 Redis 前面。作为第 4 层的 NLB 是无上下文的,它只是路由 TCP 流量而不评估或检查数据包。您还可以将 TCP(或 HTTP/HTTPS)用于带有 NLB 的健康检查协议,这应该会成功,因为 RESP 使用 TCP 客户端/服务器连接。
标签: amazon-web-services docker redis amazon-ecs amazon-alb