在docker中搭建的redis主從集群時,從服務器上的redis日志報錯:
32677:S 08 Feb 16:14:38.947 * Connecting to MASTER 172.168.10.70:637932677:S 08 Feb 16:14:38.948 * MASTER <-> SLAVE sync started32677:S 08 Feb 16:14:38.948 # Error condition on socket for SYNC: Connection refused32677:S 08 Feb 16:14:39.950 * Connecting to MASTER 172.168.10.70:637932677:S 08 Feb 16:14:39.950 * MASTER <-> SLAVE sync started32677:S 08 Feb 16:14:39.950 # Error condition on socket for SYNC: Connection refused32677:S 08 Feb 16:14:40.952 * Connecting to MASTER 172.168.10.70:637932677:S 08 Feb 16:14:40.952 * MASTER <-> SLAVE sync started32677:S 08 Feb 16:14:40.953 # Error condition on socket for SYNC: Connection refused解決方案: 在redis主服務器上的redis.conf中修改bind字段,將
bind 127.0.0.1修改為
bind 0.0.0.0又或者直接注釋掉bind字段
# bind 127.0.0.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地址。
新聞熱點
疑難解答