Redis搭建哨兵模式並且與spring結合
1.啟動一個主redis
./redis-server ../redis.conf
配置redis.conf設定守護執行緒為開啟
2.啟動一個從redis
./redis-server ../redis.conf
./redis-cli -h 127.0.0.1 -p 6380
SLAVEOF 127.0.0.1 6379
3.啟動一個哨兵
配置 sentinel.conf
1. port :當前 Sentinel服務執行的埠
2. dir : Sentinel服務執行時使用的臨時資料夾
3. sentinel monitor master001 192.168 . 110.101 6379 2 : Sentinel去監視一個名為 master001 的主redis例項,這個主例項的IP地址為本機地址 192.168 . 110.101 ,埠號為 6379 ,而將這個主例項判斷為失效至少需要 2 個 Sentinel程序的同意,只要同意Sentinel的數量不達標,自動failover就不會執行
4. sentinel down - after - milliseconds master001 30000 : 指定了Sentinel認為Redis例項已經失效所需的毫秒數。 當例項超過該時間沒有返回PING,或者直接返回錯誤,那麼Sentinel將這個例項標記為主觀下線。只有一個 Sentinel程序將例項標記為主觀下線並不一定會引起例項的自動故障遷移:只有在足夠數量的Sentinel都將一個例項標記為主觀下線之後,例項才會被標記為客觀下線,這時自動故障遷移才會執行
5. sentinel parallel - syncs master001 1 : 指定了在執行故障轉移時,最多可以有多少個從Redis例項在同步新的主例項,在從Redis例項較多的情況下這個數字越小,同步的時間越長,完成故障轉移所需的時間就越長
6. sentinel failover - timeout master001 180000 : 如果在該時間(ms)內未能完成failover操作,則認為該failover失敗
7. sentinel notification-script <master-name> <script-path> : 指定sentinel檢測到該監控的redis例項指向的例項異常時,呼叫的報警指令碼。該配置項可選,但是很常用
啟動sentinel
./redis-sentinel ../sentinel.conf &
4.spring整合
<bean id="jedisSentinelPool" class="redis.clients.jedis.JedisSentinelPool"> <constructor-arg index="0" value="mymaster"/> <constructor-arg index="1"> <set> <value>127.0.0.1:26379</value> </set> </constructor-arg> </bean>