Redis主從配置後,測試沒有反應,兩者沒連上
阿新 • • 發佈:2019-02-13
Redis主從配置異常解決:Error condition on socket for SYNC: Connection refused
在Docker中搭建的Redis主從叢集時,從伺服器上的redis日誌報錯:
32677:S 08 Feb 16:14:38.947 * Connecting to MASTER 172.168.10.70:6379
32677:S 08 Feb 16:14:38.948 * MASTER <-> SLAVE sync started
32677:S 08 Feb 16:14:38.948 # Error condition on socket for SYNC: Connection refused
32677:S 08 Feb 16:14:39.950 * Connecting to MASTER 172.168.10.70:6379
32677:S 08 Feb 16:14:39.950 * MASTER <-> SLAVE sync started
32677:S 08 Feb 16:14:39.950 # Error condition on socket for SYNC: Connection refused
32677:S 08 Feb 16:14:40.952 * Connecting to MASTER 172.168.10.70:6379
32677:S 08 Feb 16:14:40.952 * MASTER <-> SLAVE sync started
32677:S 08 Feb 16:14:40.953 # Error condition on socket for SYNC: Connection refused
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
解決方案:
在redis主伺服器上的redis.conf中修改bind欄位,將
bind 127.0.0.1
- 1
- 1
修改為
bind 0.0.0.0
- 1
- 1
又或者直接註釋掉bind欄位
# bind 127.0.0.1
- 1
- 1
原因:
如果redis主伺服器綁定了127.0.0.1,那麼跨伺服器IP的訪問就會失敗,從伺服器用IP和埠訪問主的時候,主伺服器發現本機6379埠綁在了127.0.0.1上,也就是隻能本機才能訪問,外部請求會被過濾,這是 Linux的網路安全策略管理的。如果bind的IP地址是172.168.10.70,那麼本機通過localhost和127.0.0.1、或者直接輸入命令redis-cli登入本機redis也就會失敗了。只能加上本機ip才能訪問到。
所以,在研發、測試環境可以考慮bind 0.0.0.0,線上生產環境建議繫結IP地址。