本文進行哨兵機制的測試,在一個單板上搭建三個Redis服務進行測試。
服務類型 | 是否主服務器 | ip地址 | 端口號 |
---|---|---|---|
Redis | 是 | 10.31.35.192 | 6377 |
Redis | 否 | 10.31.35.192 | 6378 |
Redis | 否 | 10.31.35.192 | 6379 |
Sentinel | 10.31.35.192 | 26377 | |
Sentinel | 10.31.35.192 | 26378 | |
Sentinel | 10.31.35.192 | 26379 |
首先創建三個目錄分別爲redis,redis2,redis3,每個目錄中放置redis安裝包,解壓編譯
##
配置主從複製
- 配置Redis主從服務器
修改每個工程中對應的redis.conf中的port端口號爲6377,6378,6379
例如
把Redis的6377作爲master服務器,6378,6379作爲slave服務器
6377服務不需要設置
6378和6379服務中在redis.conf中添加 slaveof 10.31.35.192 6377
啓動三個服務
./redis-server …/redis.conf
此時主從服務配置成功
通過客戶端連接redis主服務(./redis-cli -p 6377 -h 10.31.35.192),通過info replication查詢集羣狀態,可以看出該節點爲主節點,有兩個從服務節點
通過客戶端連接redis主服務(./redis-cli -p 6378 -h 10.31.35.192),通過info replication查詢集羣狀態,可以看出該節點爲從節點,且主節點爲up狀態
通過客戶端連接redis主服務(./redis-cli -p 6379 -h 10.31.35.192),通過info replication查詢集羣狀態,可以看出該節點爲從節點,且主節點爲up狀態
測試主從節點
在主節點上創建新的key,set newKey newValue,然後在從節點上進行獲取
可以看出主從複製就這麼easy的配置成功了
配置哨兵
在三個服務中sentinel.conf文件中配置sentinel monitor mymaster 10.31.35.192 6377 2
啓動sentinel服務
./redis-sentinel …/sentinel.conf
三個sentinel節點監聽的都是主節點10.31.35.192 6377
此時如果關閉掉master節點,則sentinel會重新推選出一個master節點出來
[root@host-10-31-35-192 src]# ./redis-cli -p 6378 -h 10.31.35.192
10.31.35.192:6378> info replication
role:slave
master_host:10.31.35.192
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:50665
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:ac30e1ac9fe7b436a594e73b2a8c0ac1586f9c60
master_replid2:454f224815f3d5618fd51c321581476a6865ecd9
master_repl_offset:50665
second_repl_offset:4493
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:673
[root@host-10-31-35-192 src]# ./redis-cli -p 6379 -h 10.31.35.192
10.31.35.192:6379> info replication
role:master
connected_slaves:1
slave0:ip=10.31.35.192,port=6378,state=online,offset=63259,lag=1
master_replid:ac30e1ac9fe7b436a594e73b2a8c0ac1586f9c60
master_replid2:454f224815f3d5618fd51c321581476a6865ecd9
master_repl_offset:63676
second_repl_offset:4493
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:63676
可以看出6379節點被推選爲master節點
同時redis.conf由slaveof 10.31.35.192 6377修改爲replicaof 10.31.35.192 6379
sentinel切換master的整個過程