Redis-sentinel哨兵模式集羣方案

安裝redis
wget http://download.redis.io/releases/redis-3.2.1.tar.gz
tar -xzf redis-3.2.1.tar.gz
cd redis-3.2.1
make && make instal
redis



在/usr/local/ 下新建一個目錄redis-sentinel,而後在此目錄下新建7501/ 7502/ 7503/ 7504/ 7505/ 7506/ 7507/七個目錄。
mkdir /usr/local/redis-sentinel
mkdir /usr/local/redis-sentinel/{7501,7502,7503,7504,7505,7506,7507}
app



將redis安裝目錄下的reids.conf,拷貝到前4個目錄下,分別命名爲:redis-7501.conf redis-7502.conf redis-7503.conf redis-7504.conf(名字無所謂只是爲了區分)
cp /root/redis-3.2.1/redis.conf /usr/local/redis-sentinel/7501/redis-7501.conf
cp /root/redis-3.2.1/redis.conf /usr/local/redis-sentinel/7502/redis-7502.conf
cp /root/redis-3.2.1/redis.conf /usr/local/redis-sentinel/7503/redis-7503.conf
cp /root/redis-3.2.1/redis.conf /usr/local/redis-sentinel/7504/redis-7504.conf
ide


修改配置文件內容(以redis-7501.conf爲例)
daemonize yes
pidfile /var/run/redis_7501.pid
port 7501
bind 10.10.172.191 #可選,默認就處理全部請求。
logfile "./redis-7501.log"
dir "/usr/local/redis-sentinel/7501"
測試

#redis配置密碼的話,須要如下配置
masterauth "123456"
requirepass "123456"
appendonly yes
ui



將redis安裝目錄下的sentinel.conf拷貝到7505/ 7506/和7507/目錄下分別命名: sentinel-7505.conf sentinel-7506.conf sentinel-7507.conf
cp /root/redis-3.2.1/sentinel.conf /usr/local/redis-sentinel/7505/sentinel-7505.conf
cp /root/redis-3.2.1/sentinel.conf /usr/local/redis-sentinel/7506/sentinel-7506.conf
cp /root/redis-3.2.1/sentinel.conf /usr/local/redis-sentinel/7507/sentinel-7507.conf
spa


修改配置文件(以sentinel-7505.conf爲例)
daemonize yes
port 7505
日誌

#指定工做目錄
dir "/usr/local/redis-sentinel/7505"no
logfile "./sentinel.log"
orm

#指定別名 主節點地址 端口 哨兵個數(有幾個哨兵監控到主節點宕機執行轉移)
sentinel monitor mymaster 10.10.172.191 7501 2
server

#若是哨兵3s內沒有收到主節點的心跳,哨兵就認爲主節點宕機了,默認是30秒
sentinel down-after-milliseconds mymaster 3000
blog

#選舉出新的主節點以後,能夠同時鏈接從節點的個數
sentinel parallel-syncs mymaster 1

#若是10秒後,master仍沒活過來,則啓動failover,默認180s
sentinel failover-timeout mymaster 10000

#配置鏈接redis主節點密碼
sentinel auth-pass mymaster 123456



啓動redis和sentinel

分別啓動4個redis實例

redis-server /usr/local/redis-sentinel/7501/redis-7501.conf 

redis-server /usr/local/redis-sentinel/7502/redis-7502.conf  

redis-server /usr/local/redis-sentinel/7503/redis-7503.conf  

redis-server /usr/local/redis-sentinel/7504/redis-7504.conf


而後分別登錄7502 7503 7504三個實例,動態改變主從關係,成爲7501的slave


redis-cli -h 192.168.111.146 -p 7502 -a 123456

192.168.111.146:7502> SLAVEOF 127.0.0.1 7501


能夠事先直接修改從實例redis文件追加slaveof 192.168.111.146 7501

192.168.111.146:7501> info replication

# Replication

role:master

connected_slaves:3

slave0:ip=10.10.172.191,port=7502,state=online,offset=127,lag=0

slave1:ip=10.10.172.191,port=7503,state=online,offset=127,lag=0

slave2:ip=10.10.172.191,port=7504,state=online,offset=127,lag=1

master_repl_offset:127

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:126



之後臺啓動模式啓動兩個sentinel(哨兵): 

redis-sentinel /usr/local/redis-sentinel/7505/sentinel-7505.conf

redis-sentinel /usr/local/redis-sentinel/7506/sentinel-7506.conf

redis-sentinel /usr/local/redis-sentinel/7507/sentinel-7507.conf


測試

登錄到 master:


# redis-cli -h 10.10.172.191 -p 7501 -a 123456

192.168.111.146:7501> info Replication  #列出Master的信息

192.168.111.146:7501> set name "zhangsan"

# redis-cli -h 10.10.172.191 -p 7502 -a 123456

192.168.111.146:7502> get name

"zhangsan"

192.168.111.146:7502> set age 24

(error) READONLY You can't wri

te against a read only slave.


目前7501是master, 咱們強制kill掉 7501 的進程之後,查看sentinel打出的日誌信息: 

 ps -ef|grep redis

image.png

kill 7927

 tail -fn 10 /usr/local/redis-sentinel/7505/sentinel.log

image.png

能夠看到master從7501轉到7504


image.png

相關文章
相關標籤/搜索