1. 程式人生 > >Redis主從配置後,測試沒有反應,兩者沒連上

Redis主從配置後,測試沒有反應,兩者沒連上

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地址。