健康检查以从 Google TCP 负载均衡器检测 Redis 主服务器

健康检查以从 Google TCP 负载均衡器检测 Redis 主服务器

我正在尝试设置一个 google TCP 内部负载均衡器。此负载均衡器背后的实例组由监听端口 6379 的 redis-server 进程组成。在这些 redis 实例中,只有一个是主实例。

问题:添加 TCP 健康检查来检测 redis 主服务器并让 lb 将所有流量仅转移到 redis 主服务器。

方法:为端口 6379 添加了 TCP 健康检查。为了将命令发送role到 redis-server 进程并解析响应,我使用了健康检查中提供的可选参数。请查看屏幕截图这里

结果:所有健康检查均失败。如果我删除可选的请求/响应参数,则所有健康检查均会通过。

调试

  1. 使用 netcat 连接到 lb 并发出命令,它会按预期发送以(对于主) 和(对于从属)role开头的响应。*3*5
  2. 登录实例并停止 redis-server 进程。开始监听端口 6379,用于nc -l -p 6379检查健康检查中实例端究竟收到了什么。它确实收到了role\r\n
  3. 在步骤 2 之后,重新启动 redis-server 并MONITOR在 redis-cli 中运行命令,以查看此进程收到的命令日志。这里没有日志role。这意味着,实例正在通过 tcp 接收数据(role\r\n),但进程 redis-cli 未收到数据(按照MONITOR命令),或者发生了其他事情。请帮忙。

相关内容