Tencent / Tendis

Tendis is a high-performance distributed storage system fully compatible with the Redis protocol.
http://tendis.cn
Other
2.92k stars 319 forks source link

不支持redis的replica-announce-ip配置项,导致容器部署时主从复制失败(unknown node) #183

Open 0Jvang opened 2 years ago

0Jvang commented 2 years ago
  1. 节点握手

    redis-cli -p 9094 -h 192.168.0.11
    127.0.0.1:9094> cluster meet 192.168.0.12 9094
    127.0.0.1:9094> cluster meet 192.168.0.13 9094
    127.0.0.1:9094> cluster meet 192.168.0.14 9094
    127.0.0.1:9094> cluster meet 192.168.0.15 9094
    127.0.0.1:9094> cluster meet 192.168.0.16 9094
  2. 握手节点执行cluster nodes没问题

    redis-cli -p 9094 -h 192.168.0.11 cluster nodes
    20f8df612b19c879c92149458856ec08af50d459 192.168.0.11 myself,master - 0 1606964903000 0 connected 0-5461
    4233f87b9899774feb71bcef1cfeec964de0535b 192.168.0.12 master - 0 1606964902996 1 connected 5462-10922
    f9d8c3f6679badc6366087d498f005849ad3b14d 192.168.0.13 master - 0 1606964904598 2 connected 10923-16383
    b072bdd0f3d6cf75edcee1345da0d33f59177da0 192.168.0.14 master - 0 1606964902996 1 connected
    c980e1e23d20e9169aca0cbe7751d8a76b73859f 192.168.0.15 master - 0 1606964904598 2 connected 
    cd3c5da6415d5c1d125961e0f78badd162c7f7d3 192.168.0.16 master - 0 1606964894000 3 connected
  3. 其余节点执行cluster nodes有问题,只有一个节点,且为容器内地址

    redis-cli -p 9094 -h 192.168.0.12 cluster nodes
    42b8c5ff796d0df3f0995e23fed71b6999b74b48 172.18.0.2:9098@19098 myself,master - 0 0 0 connected
  4. 没有其他节点,导致主从复制失败

    redis-cli -p 9094 -h 192.168.0.12 cluster replicate 20f8df612b19c879c92149458856ec08af50d459
    (error) ERR:18,msg:Unknown node: 20f8df612b19c879c92149458856ec08af50d459
raffertyyu commented 2 years ago

我这边暂时没有办法重现这个问题,方便提供更多的比如docker网络配置信息或者重现步骤吗。

0Jvang commented 2 years ago

我这边暂时没有办法重现这个问题,方便提供更多的比如docker网络配置信息或者重现步骤吗。

docker用的网桥模式,被动握手方日志里有报错或警告,说无法连接172.18.0.2(主动握手方的容器ip)

takenliu commented 2 years ago

关注一下每个节点配置的bind参数是啥,比如bind配置 127.0.0.1,0.0.0.0,192.168.0.,172.18.0.几种情况下,其它节点是否能够连接过来是有区别的。

0Jvang commented 2 years ago

bind是0.0.0.0。我的理解是如果要其它节点能连过来,那bind应该配宿主机ip也就是192.168.0.*,但这样tendis是无法启动的