美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题
轉載請注明出處哈:http://carlosfu.iteye.com/blog/2254154
?? ?
由于演講時間有限,有關Redis-Cluster,演講者沒做太多介紹,簡單的介紹了一些Redis-Cluster概念作用和遇到的兩個問題,我們在Redis-Cluster也有很多運維經驗,將來的文章會介紹。
?
但是講演者反復強調,不要聽信網上對于Redis-Cluster的毀謗(實踐出真知),對于這一點我很贊同,我們從Redis-Cluster beta版 RC1~4 到現在的3.0-release均沒有遇到什么大問題(線上維護600個實例)。
?
一、Redis-Cluster
有關Redis-Cluster的詳細介紹有很多這里就不多說了,可以參考:
1.?redis-cluster研究和使用
2.?Redis Cluster 3.0.5集群實踐
3.?本博客的一些Redis-Cluster的介紹(未更新完畢)
4. Redis設計與實現那本書(作者:黃建宏):非常的推薦看這本書。
總之Redis-Cluster是一個無中心的分布式Redis存儲架構,解決了Redis高可用、可擴展等問題。
?
?
?
?
二、兩個問題:
?
1. Redis-Cluster主從節點不要在同一個機器部署
? ?(1) 以我們的經驗看redis實例本身基本不會掛掉,通常是機器出了問題(斷電、機器故障)、甚至是機架、機柜出了問題,造成Redis掛掉。
? ?(2) 如果Redis-Cluster的主從都在一個機器上,那么如果這臺機器掛了,主從全部掛掉,高可用就無法實現。(如果full converage=true,也就意味著整個集群掛掉)
? ?(3) 通常來講一對主從所在機器:不跨機房、要跨機架、可以在一個機柜。
?
2. Redis-Cluster誤判節點fail進行切換
? ?(1) Redis-Cluster是無中心的架構,判斷節點失敗是通過仲裁的方式來進行(gossip和raft),也就是大部分節點認為一個節點掛掉了,就會做fail判定。
? ?(2) 如果某個節點在執行比較重的操作(flushall, slaveof等等)(可能短時間redis客戶端連接會阻塞(redis單線程))或者由于網絡原因,造成其他節點認為它掛掉了,會做fail判定。
? ?(3) Redis-Cluster提供了cluster-node-timeout這個參數(默認15秒),作為fail依據(如果超過15秒還是沒反應,就認為是掛掉了),具體可以參考這篇文章:Redis-Cluster的FailOver失敗案例分析
? ? ? ? 以我們的經驗看15秒完全夠用。
? ?
?
三、未來要介紹的問題:
?
1. Redis-Cluster客戶端實現Mget操作。
2.?Redis-Cluster--Too many Cluster redirections異常。
3. Redis-Cluster無底洞問題解析。
4. 兩個Redis-Cluster集群,meet操作問題后的惡果。
5.?Redis-Cluster配置之full converage問題。
6.?Redis-Cluster故障轉移測試。
7. Redis-Cluster常用運維技巧。
8. Redis-Cluster一鍵開通。
9. Redis-Cluster客戶端jedis詳解。
?
四、附贈一些不錯的資料:
總結
以上是生活随笔為你收集整理的美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美团在Redis上踩过的一些坑-4.re
- 下一篇: 使用Memcache缓存mysql数据库