配置環境:
OS: CentOS6.1 x86 * 4
Software: redis-2.6.9
內存: 16G
CPU: E5606 @ 2.13GHz *2
------------------
IP分佈情況:
Redis Sentinel : 192.168.7.46
Redis server主 : 192.168.7.44
Redis server從1: 192.168.7.40
Redis server從2: 192.168.7.142
下面均以尾部表示IP,如 44、46....
結構如圖:
配置過程中,如果沒有4臺機器,那隻要2臺也可以,其中一臺運行Sentinel,另一臺運行3個不同端口的redis服務即可。
集羣最小單位爲:1個Sentinel、2個redis;
------------------
開始:
1.1 啓動Redis-server服務
#redis的安裝配置就不介紹了,不清楚的可以先google,redis的配置文件可以直接用。
#啓動 Redis server服務 (IP 44、40、142)
redis-server /usr/local/redis-2.6.9/redis.conf &
#配置40、142爲從庫,分別執行
redis-cli slaveof 192.168.7.44 6379
#查看主上的主從狀態
redis-cli -h 192.168.7.44 -p 6379 info Replication
#可以看到從狀態
#隨意查看一臺從的主從狀態
redis-cli -h 192.168.7.40 -p 6379 info Replication
------------------
1.2啓動Redis Sentinel (ip:46)
# Sentinel 的配置文件爲sentinel.conf 複製以下配置,修改IP地址即可。
cat /usr/local/redis-2.6.9/sentinel.conf
sentinel monitor test1 192.168.7.40 6379 1 #修改IP地址,IP可以是集羣中的任意一個IP地址。
sentinel down-after-milliseconds test1 5000 #默認1s檢測一次,這裏配置超時5000毫秒爲宕機。
sentinel failover-timeout test1 900000
sentinel can-failover test1 yes
sentinel parallel-syncs test1 2
#啓動 Redis Sentinel
redis-server /usr/local/redis-2.6.9/sentinel.conf --sentinel &
# Sentinel默認端口爲26379 ,Sentinel終端打印 : * slave 從庫信息 @ master-name 主庫信息
# 以上信息表明Sentinel 已經啓動成功,並且已經識別到當前的主從情況。
# 但是這個只會在終端上顯示,如果你關閉當前終端,就無法顯示。
# 用命令可以更直接顯示當前狀態。
# 查詢master狀態
redis-cli -h 192.168.7.46 -p 26379 info Sentinel
#通過這裏可以獲取到主IP地址
redis-cli -h 192.168.7.46 -p 26379 info sentinel| awk -F ',' '/status/ {print $3}'| awk -F '=' '{print
$2}'
# 查詢slave狀態
redis-cli -h 192.168.7.46 -p 26379 sentinel slaves test1
//test1是sentinel.conf中配置的
#圖中顯示了幾個從庫(name數量),從庫的IP地址和狀態,主庫的IP地址和狀態。
#還有‘runid’ ,redis的從接管主沒有優先級的參數可以配置,默認使用runid的大小來競爭主庫,所以這裏也可以預測下一個主是哪臺
#這裏看下一個主爲142. 優先級這個以後作者應該會更新吧。
------------------
1.3演示故障
#目前狀態:
#
Redis Sentinel : 192.168.7.46
#
Redis server主 : 192.168.7.44
#
Redis server從1: 192.168.7.40
#
Redis server從2: 192.168.7.142
#關閉Redis server主 : 192.168.7.44
redis-cli -h 192.168.7.44 -p 6379 shutdown
#查看Sentinel狀態
redis-cli -h 192.168.7.46 -p 26379 info Sentinel
#可以看到Redis server主的IP地址已經變成192.168.7.142。
#查看192.168.7.40的狀態,如果配置正常,它的主爲142
# OK 自動切換已經實現了。
# 如果不是主宕機,而是從宕機,那麼不會發生切換行爲,只會把宕機的那臺從集羣中剔除。
# 已宕機的機器,如果再次加入集羣,只要它成爲了當前主的從機,則Sentinel會自動發現,並將其加入集羣成員。
# 可以自己動手實驗下。