【问题标题】:Create a redis sentinel cluster in Kubernetes, the redis master can not get the slave origin IP在Kubernetes中创建redis sentinel集群,redis master无法获取slave源IP
【发布时间】:2016-05-10 07:21:26
【问题描述】:

我使用 K8s 示例在 Kubernetes 上创建一个可靠、可扩展的 Redis。 https://github.com/kubernetes/kubernetes/tree/master/examples/redis

Redis master 需要获取 slave 的 origin IP 并注册到 sentinel。当主控失败时,哨兵将使用切换主控。

但是我的docker启动时没有iptables=false这个标志(它会创建一个类似SNAT的iptables),所以redis的slave源IP会是SNAT,而master会得到flannel0的IP,比如172.16.103.0。

我还将法兰绒网络添加到节点之间的容器连接中。

所以问题是“是否有任何方法可以在不删除 iptables 标志的情况下获取源 IP,或者以其他方式创建 Reliable redis 集群。”

【问题讨论】:

  • 链接失效@zhulinhong

标签: kubernetes redis-sentinel


【解决方案1】:

编辑:我已经找到了标志的神奇组合来让它工作。

1) 运行停止 docker 和引导 docker 进程

systemctl stop docker && pkill -f "docker-bootstrap" && sleep 10  

2) 删除iptables规则:

iptables -F && iptables -t nat -F  

3) 使用 ip-masq=false 选项运行 docker-daemon
4) 使用 ip-masq=true 选项运行你的 fanneld

对我来说,这使得所有三个 pod->pod、pod->ext 和 ext->service->pod 都能完美运行。

希望这对你们其他人有用!


(保留描述症状的初始反应)

我对指南有同样的问题。从站复制得很好,但主站无法正确检查从站状态,因为连接来自点零 ip。

Proto Recv-Q Send-Q Local Address           Foreign Address         State      

示例从站->从主站角度的主站连接(显示错误的从站 IP):

tcp   0      0 redis-master:6379       10.1.37.0:51674         ESTABLISHED

示例从站->从站角度的主站连接(显示主站的右侧 ip):

tcp   0      0 redis-03fdy:51674       10.1.90.2:6379          ESTABLISHED

这是来自 ps 的 redis 服务器命令。

主人:

root   12  0.1  0.2  26876  2352 ?   Sl   10:42   0:02 redis-server 10.1.90.2:6379

奴隶:

root   18  0.1  0.2  26876  2300 ?   Sl   10:48   0:00 redis-server 10.1.37.3:6379

【讨论】:

  • 我们看到了同样的情况,你有什么进展吗?
  • @AndySmith 是的,请查看我调整后的答案:)确保 flannel ip-masq 在所有节点上运行
  • 我尝试这种方式,但在容器中“ping”失败。
  • @zhulinhong 你确定 flannel 正在运行并使用相同的配置(例如我有 --etcd-endpoints=http://${MASTER_IP}:4001)?另外,当您启动 docker 时,您是从 flannel 子网和 mtu 开始的?您可以在任何节点上运行的容器上使用 docker logs $container_id 来获取有关可能出现问题的更多信息。我建议在法兰绒容器上这样做。
【解决方案2】:

我们设法通过在我们的 redis pod 中设置 hostNetworking: true 来解决这个问题。这意味着 redis 服务器没有获得容器 IP (172..),这绝对是一种解决方法,但可以解决问题。

【讨论】:

  • 我通过这种方式修复它。非常感谢。
【解决方案3】:

Here 是在 Kubernetes/Openshift OKD 中设置 Redis HA 主从集群的方法,无需使用 Helm,并且不需要哨兵

基本上你必须使用 configMap、StatefulSet 与 VolumeClaims 合作

【讨论】:

    猜你喜欢
    • 2016-09-28
    • 2020-03-15
    • 2020-03-08
    • 2016-04-30
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    相关资源
    最近更新 更多