redis主從複製可將主節點數據同步給從節點,從節點此時有倆個做用:redis
存在問題:數據庫
因此要實現這些功能,redis-sen就能夠解決vim
準備三個redis實例,一主倆從架構
# 主配置 vim redis-6379.conf # 插入數據 port 6379 daemonize yes logfile "6379.log" dbfilename "dump-6379.rdb" dir "/var/redis/data/"
#從節點配置 vim redis-6380.conf #插入數據 port 6380 daemonize yes logfile "6380.log" dbfilename "dump-6380.rdb" dir "/var/redis/data/" slaveof 127.0.0.1 6379 // 從屬主節點 # 從節點配置 vim redis-6381.conf #插入數據 port 6381 daemonize yes logfile "6380.log" dbfilename "dump-6380.rdb" dir "/var/redis/data/" slaveof 127.0.0.1 6379 // 從屬主節點
啓動主節點3d
redis-server redis-6379.conf #登陸客戶端 redis-cli -p 6380 # 檢測是否通訊 ping # 輸出爲pong則爲正常
注意問題:這裏若是啓動客戶端顯示code
Could not connect to Redis at 127.0.0.1:6379: Connection refusedserver
解決方法:建立mkdir /var/redis/data/blog
啓動倆個slave(從)節點進程
redis-server redis-6380.conf redis-server redis-6381.conf # 登陸客服端驗證 與上述主節點驗證方法同樣
檢測主從的狀態是否正常ip
redis-cli -p 6379 info replication # 輸出內容以下爲正常 # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=qsmaster,status=ok,address=127.0.0.1:6380,slaves=2,sentinels=3
注意:
若是發現實驗不成功,需刪掉全部的配置文件,重新來過
準備三個配置文件,哨兵文件
vim redis-26379.conf # 名字隨意起, #插入內容 port 26379 dir /var/redis/data/ logfile "26379.log" sentinel monitor qsmaster 127.0.0.1 6379 2 sentinel down-after-milliseconds qsmaster 30000 sentinel parallel-syncs qsmaster 1 sentinel failover-timeout qsmaster 180000 daemonize yes #第二個哨兵 vim redis-26380.conf port 26380 dir /var/redis/data/ logfile "26380.log" sentinel monitor qsmaster 127.0.0.1 6379 2 sentinel down-after-milliseconds qsmaster 30000 sentinel parallel-syncs qsmaster 1 sentinel failover-timeout qsmaster 180000 daemonize yes #第三哨兵 vim redis-26381.conf port 26381 dir /var/redis/data/ logfile "26381.log" sentinel monitor qsmaster 127.0.0.1 6379 2 sentinel down-after-milliseconds qsmaster 30000 sentinel parallel-syncs qsmaster 1 sentinel failover-timeout qsmaster 180000 daemonize yes
啓動三個哨兵
redis-sentinel redis-26379.conf redis-sentinel redis-26380.conf redis-sentinel redis-26381.conf
注意!!若是發現實驗不成功,需刪掉全部的哨兵配置文件,重新來過
注意!!若是發現實驗不成功,需刪掉全部的哨兵配置文件,重新來過
檢查哨兵狀態
redis-cli -p 26379 info sentinel 信息以下爲正常 # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=qsmaster,status=ok,address=127.0.0.1:6380,slaves=2,sentinels=3
模擬哨兵自動進行主從切換
# 查看進程信息 ps -ef |grep redis # 殺死6379的進程 kill -9 6379的進程號 # 查看6380和6381的身份信息,看是否進行主從切換 redis-cli -p 6380 info replication redis-cli -p 6381 info replication # 手動啓動6379掛掉的數據庫,看是否會被哨兵,添加進信息主從集羣 redis-server redis-6379.conf redis-cli -p 6379 info replication