1. 程式人生 > >Redis搭建哨兵模式並且與spring結合

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>