配置redis主從分離的步驟總結如下:
1:複制三份配置檔案redis.conf.分别命名為:reids6379.conf redis6380.conf redis 6381.conf
2:修改redis6379.conf
(1)port 6379
(2)pidfile /var/run/redis_6379.pid
(3)logfile "redis6379.log"
(4)dbfilename dump6379.rdb
重點是這裡:
bind 127.0.0.1 修改為 bind: 0.0.0.0
3:redis6380.conf 和 redis6381.conf根據上述第二個步驟修改即可。
重點依然是這裡:
bind 127.0.0.1 修改為 bind 127.0.0.1 121.196.209.29(目前6380端口所在機器的ip)
bind 127.0.0.1 修改為 bind 127.0.0.1 121.196.209.29(目前6381端口所在機器的ip)
4:分别啟動6379 6380 6381三個redis服務。
5:啟動成功後分别用戶端指令連結redis伺服器
6:檢視一下目前上台redis伺服器的關系:指令:info replication
可以看到都是mater角色。這個時候需要從中取出兩台作為slave
指令如下:SLAVEOF MASTERIP MASTERPORT
就可以将其設定為master的兩個從機
到此就是實作了redis伺服器的一主兩備。主從分離的配置
那麼這個時候如果在master存入資料。那麼兩個slave會自動同步master的資料。實作資料的同步
有兩個問題需要注意:
第一:如果master主機挂了後,兩個slave正常運作,那麼master重新再啟動。他依然是master角色,但是如果slave從機挂了再
重新啟動。就需要重新執行指令:slaveof masterip masterport變成master的slave
第二:如果master有密碼比如:requirepass 123456,那麼slave的配置檔案中需要添加一行:masterauth 123456
ok! 總結一下自己配置需要的問題。加深了解
第三:如果master主機挂了。那麼也可以在剩餘的slave中選擇一個作為master。選擇一個slave。執行指令
slaveof no one.
第四:修改bind 127.0.0.1 ::1 為 bind 0.0.0.0 ::1
reids預設這裡配置的是127.0.0.1.意思大概就是隻接受本地的請求。這樣外網如果想要請求就一直報錯。端口6379無法telnet通。
這個坑真是搞了好久。
第五:就是開啟防火牆。并為其開通6379端口。首先檢視linux系統是cteros6還是7以上版本。我的是7以上的版本
通過指令行:lsb_release -a即可查到版本号:
如果是高版本的那麼防火牆的有關開啟關閉指令就有所變化,通過網上查詢我總結了如下的指令即可開啟防火牆并開通對外網
通路的端口:
1:systemctl status firewalld 結果:Active: inactive (dead) 檢視防火牆狀态
2: systemctl start firewalld 結果:Failed to start firewalld.service: Unit is masked 開啟防火牆,如果失敗辨別被鎖定。
3:systemctl unmask firewalld 結果: Removed symlink /etc/systemd/system/firewalld.service 解鎖鎖定
4:systemctl start firewalld 結果:active (running) 開啟防火牆 ,成功。狀态running
5: firewall-cmd --zone=public --add-port=6379/tcp --permanent 結果:success 對外開通6379端口
6:firewall-cmd --reload 結果:success 重新加載防火搶政策
7: firewall-cmd --zone=public --query-port=6379/tcp 結果:yes 查詢6379端口開啟狀态 yes 辨別已開啟
之後本地應用就可以通過jedis通路伺服器的redis