一、報錯:
* MASTER <-> SLAVE sync started
# Error condition on socket for SYNC: No route to host
解決:
詳情見: https://blog.csdn.net/qq_28538407/article/details/81878609
主從復制時,如果主機狀態如下:
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
主機中的connected_slaves為0,說明主從復制並沒有成功。。
查看從機的redis的log(錯誤一般都是記錄在從機log),之前已經創建並指定了log的路徑,如下:
vim /usr/local/redis/log
查出問題如下:
* MASTER <-> SLAVE sync started # Error condition on socket for SYNC: No route to host
關閉主機的防火牆,注意:是主機的防火牆,然后再重啟服務就可以了。
在centos7中,systemctl stop firewalld即可關閉防火牆。其他版本可通過service iptables stop關閉防火牆。
1.關閉防火牆:
[root@localhost ~]# systemctl stop firewalld
2.查看redis進程:
[root@localhost ~]# ps -ef |grep -i redis
root 3667 1 1 16:17 ? 00:00:00 redis-server 0.0.0.0:6379
3.關掉進程:
[root@localhost ~]# kill -9 3667
4.最后重啟redis服務以及客戶端。
[root@localhost ~]# redis-server /usr/local/redis/etc/redis.conf
[root@localhost ~]# redis-cli
127.0.0.1:6379> info
完成主從復制。
在linux中安裝、部署環境時,出了問題一定要多看log。
參考資料:
https://blog.csdn.net/qq_28538407/article/details/81878609
二、報錯:
# Creating Server TCP listening socket 0.0.0.0:6379: bind: Address already in use
解決2:
跟上面的解決報錯一的過程差不多。查看redis進程,關掉進程,最后重啟redis服務。
三、報錯:
Error condition on socket for SYNC: Connection refused
* Connecting to MASTER 192.168.0.103:6379
解決3:
redis主服務器綁定了127.0.0.1,那么跨服務器IP的訪問就會失敗,從服務器用IP和端口訪問主的時候,主服務器發現本機6379端口綁在了127.0.0.1上,也就是只能本機才能訪問,外部請求會被過濾。所以需要修改redis-master的redis.conf,注釋掉bind 127.0.0.1,添加:
bind 0.0.0.0
參考資料: https://blog.csdn.net/chwshuang/article/details/54929277