已安装 2 个 Redis 实例,其中一个为主实例。运行良好,没有任何问题。
我现在正尝试让我的 HAProxy/keepalived 节点处理某种故障转移。
1) 这可能吗 - 将一个节点设置为主节点,另一个节点设置为备份节点?这是我对 MySQL 节点所做的操作:
服务器 192.168.32.33 192.168.32.33:3306 检查备份 服务器 192.168.32.34 192.168.32.34:3306 检查
2) 如果是,是否有更新的文档?我已关注 HAProxy 博客上的文档,如下所示:
ServerFault 文章:Redis 哨兵 + HAProxy 故障转移
但节点显示为关闭,即使我可以通过 CLI 和其他客户端使用它们:
HA Proxy Web 界面中发生故障的 Redis 节点的快照
使用 CLI,如果我在 tcp-checks 中发出命令,则响应与 conf 中的预期返回相匹配。(注意:我们尚未在 Redis 节点上启用身份验证)。
这是我的 haproxy.cfg - 从 MySQL 部分的最后一行开始
服务器 192.168.32.34 192.168.32.34:3306 检查 默认 REDIS 模式 tcp 连接超时4秒 服务器超时30秒 客户端超时 30s 前端 ft_redis 绑定*:6379名称redis default_backend bk_redis 后端bk_redis 选项 tcp-check tcp-检查发送PINGrn tcp-check 期望字符串 +PONG tcp-check 发送信息复制rn tcp-check 期望字符串角色:master tcp-check 发送 QUITrn tcp-check 期望字符串 +OK 服务器 Site2DB3 192.168.32.36:6379 检查 1s 服务器 Site1DB3 192.168.22.36:6379 检查内部 1s
答案1
PINGrn
应该读
PING\r\n
其他 tcp 检查消息也一样。您发送的不是 ,PINGrn
而是PING\r\n
无效命令,这将引发错误,从而导致 UP 检查失败。
答案2
另外,请确保在 tcp-check 发送后转义空格,例如:
tcp-check send info\ replication\r\n
答案3
对于具有身份验证的 REDIS,添加以下内容:
tcp-check send AUTH\ xxx_xxx\r\n