由于演講時間有限,有關Redis-Cluster,演講者沒做太多介紹,簡單的介紹了一些Redis-Cluster概念作用和遇到的兩個問題,我們在Redis-Cluster也有很多運維經驗,将來的文章會介紹。
但是講演者反複強調,不要聽信網上對于Redis-Cluster的毀謗(實踐出真知),對于這一點我很贊同,我們從Redis-Cluster beta版 RC1~4 到現在的3.0-release均沒有遇到什麼大問題(線上維護600個執行個體)。
一、Redis-Cluster
有關Redis-Cluster的詳細介紹有很多這裡就不多說了,可以參考:
4. Redis設計與實作那本書(作者:黃建宏):非常的推薦看這本書。
總之Redis-Cluster是一個無中心的分布式Redis存儲架構,解決了Redis高可用、可擴充等問題。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauIDO2ADNjlzNhZTYi1yNyEmYtgjYzMTL3kzMl1iYwITY3QjMk9CXxEjM58CXyETMw8CX05WZth2YhRHdh9CXkF2bsBXdvwVbvNmLllXZ0lmLywGZvw1LcpDc0RHaiojIsJye.jpg)
二、兩個問題:
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判定。
以我們的經驗看15秒完全夠用。
三、未來要介紹的問題:
1. Redis-Cluster用戶端實作Mget操作。
3. Redis-Cluster無底洞問題解析。
4. 兩個Redis-Cluster叢集,meet操作問題後的惡果。
5. Redis-Cluster配置之full converage問題。
7. Redis-Cluster常用運維技巧。
8. Redis-Cluster一鍵開通。
9. Redis-Cluster用戶端jedis詳解。
四、附贈一些不錯的資料:
<a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzA3MjAyNzE1OQ==&mid=400257806&idx=1&sn=c5d5675b6ae442b08186ff5607adf1f7&3rd=MzA3MDU4NTYzMw==&scene=6#wechat_redirect">【運維實踐】魚與熊掌:使用redis-cluster需要注意些什麼?</a>
<a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=208733458&idx=1&sn=691bfde670fb2dd649685723f7358fea&3rd=MzA3MDU4NTYzMw==&scene=6#rd">Codis作者黃東旭細說分布式Redis架構設計和踩過的那些坑們</a>
本文轉自 lirulei90 51CTO部落格,原文連結:http://blog.51cto.com/lee90/2057976,如需轉載請自行聯系原作者