天天看點

redis主從複制讀寫分離總結

配置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服務。

redis主從複制讀寫分離總結
redis主從複制讀寫分離總結
redis主從複制讀寫分離總結

5:啟動成功後分别用戶端指令連結redis伺服器

redis主從複制讀寫分離總結
redis主從複制讀寫分離總結
redis主從複制讀寫分離總結

6:檢視一下目前上台redis伺服器的關系:指令:info replication

redis主從複制讀寫分離總結

可以看到都是mater角色。這個時候需要從中取出兩台作為slave

指令如下:SLAVEOF MASTERIP  MASTERPORT

就可以将其設定為master的兩個從機  

redis主從複制讀寫分離總結

到此就是實作了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即可查到版本号:

redis主從複制讀寫分離總結

如果是高版本的那麼防火牆的有關開啟關閉指令就有所變化,通過網上查詢我總結了如下的指令即可開啟防火牆并開通對外網

通路的端口:

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