服務器配置:(centos7)redis
服務器IP | 安裝組件 | 節點 | 備註 |
---|---|---|---|
192.168.27.210 | redis-5.0.5 | master | 一主兩從架構 |
192.168.26.112 | redis-5.0.5 | slave | |
192.168.26.206 | redis-5.0.5 | slave |
最新版下載地址到各結點:Wget http://download.redis.io/releases/redis-5.0.5.tar.gz
解壓壓縮包並配置:
切換用戶(生產環境少用ROOT用戶操做)
[jerry@master data]$ sudo chown -R jerry.root redis-5.0.5
Cd /data/redis-5.0.5/src
make
192.168.27.210配置文件:vim /data/redis-5.0.5/redis-m-7000.conf
bind 0.0.0.0
port 7000
logfile "7000.log"
dbfilename "dump-7000.rdb"
daemonize yes
rdbcompression yesvim
192.168.26.112配置:
Cd /data/redis-5.0.5/src
makecentos
[jerry@BDDB redis-5.0.5]$ vim /data/redis-5.0.5/redis-s-7000.conf
bind 0.0.0.0
port 7000
logfile "7000.log"
dbfilename "dump-7000.rdb"
daemonize yes
rdbcompression yes
slaveof 192.168.27.210 7000服務器
192.168.26.206配置:
Cd /data/redis-5.0.5/src
make
bind 0.0.0.0
port 7000
logfile "7000.log"
dbfilename "dump-7000.rdb"
daemonize yes
rdbcompression yes
slaveof 192.168.27.210 7000
分別啓動各結點:
[jerry@master src]$ ./redis-server ../redis-m-7000.conf
[jerry@BDDB src]$ sudo ln -s /data/redis-5.0.5/src/redis-server /usr/bin/redis-server
[jerry@BDDB src]$ redis-server ../redis-s-7000.conf
[jerry@DGIDC src]$ sudo ln -s /data/redis-5.0.5/src/redis-server /usr/bin/redis-server
[jerry@DGIDC src]$ redis-server ../redis-s-7000.conf
[jerry@DGIDC src]$ ss -tnl
看下三臺服務器主從狀態信息:
接着咱們建立鍵值,測試主從是否同步:
三個結點咱們都建立一個連接,方便咱們使用。
[jerry@master src]$ sudo ln -s /data/redis-5.0.5/src/redis-cli /usr/bin/redis-cli
[jerry@BDDB src]$ sudo ln -s /data/redis-5.0.5/src/redis-cli /usr/bin/redis-cli
[jerry@DGIDC src]$ sudo ln -s /data/redis-5.0.5/src/redis-cli /usr/bin/redis-cli
觀察主從信息狀態:
info
重啓主後服務器觀察發現未保存的數據將丟失:
結論:
使用主從模式時應注意master節點的持久化操做,matser節點在未使用持久化的狀況詳情下若是宕機,並自動從新拉起服務,從服務器會出現丟失數據的狀況。數據丟失的緣由:由於master服務掛了以後,重啓服務後,slave節點會與master節點進行一次完整的重同步操做,因此因爲master節點沒有持久化,就致使slave節點上的數據也會丟失掉。因此在配置了Redis的主從模式的時候,應該打開主服務器的持久化功能。
測試使用哨兵模式,自動監視Master節點,當前掛掉後,自動將Slaver節點變爲Master節點:
而後手動切換從(26.206):
127.0.0.1:7000> slaveof 192.168.26.112 7000
127.0.0.1:7000> set name tom
小結:架構