Redis集羣方案整理

方案彙總

  1. 主從模式(master/slaver)
  2. sentinel模式
  3. cluster模式
一、主從模式(master/slaver)
1、主從模式的必要性
  • 備份數據,這樣當一個節點損壞(指不可恢復的硬件損壞)時,數據因爲有備份,可以方便恢復。
  • 負載均衡,所有客戶端都訪問一個節點肯定會影響Redis工作效率,有了主從以後,查詢操作就可以通過查詢從節點來完成。
2、實戰總結經驗
  • 一個Master可以有多個Slaves。
  • 默認配置下,master節點可以進行讀和寫,slave節點只能進行操作,寫操作被禁止
  • 不要修改配置讓slave節點支持寫操作,沒有意義。 原因一,寫入的數據不會被同步到其他節點;原因二,當master節點修改同一條數據後,slave節點的數據會被覆蓋掉。
  • slave節點掛了不影響其他slave節點的讀和master節點的讀和寫,重新啓動後會將數據從master節點同步過來
  • master節點掛了以後,不影響slave節點的讀,Redis將不再提供寫服務,master節點啓動後Redis將重新對外提供寫服務。
  • master節點掛了以後,不會slave節點重新選一個master

對有密碼的情況說明一下,當master節點設置密碼時:

  • 客戶端訪問master需要密碼
  • 啓動slave需要密碼,在配置中進行配置即可
  • 客戶端訪問slave不需要密碼
3、主從模式的缺點

主從模式的缺點其實從上面的描述中可以得出:
簡言之:master掛掉,slave不會提升爲master
詳細之:master節點掛了以後,redis就不能對外提供寫服務了,因爲剩下的slave不能成爲master這個缺點影響是很大的,尤其是對生產環境來說,是一刻都不能停止服務的,所以一般的生產壞境是不會單單隻有主從模式的。所以有了下面的sentinel模式。

二、sentinel模式

sentinel的中文含義是哨兵、守衛。也就是說既然主從模式中,當master節點掛了以後,slave節點不能主動選舉一個master節點出來,那麼我就安排一個或多個sentinel來做這件事,當sentinel發現master節點掛了以後,sentinel就會從slave中重新選舉一個master

1. 實戰總結
  • sentinel模式是建立在主從模式的基礎上,如果只有一個Redis節點,sentinel就沒有任何意義
  • 當master節點掛了以後,sentinel會在slave中選擇一個做爲master,並修改它們的配置文件,其他slave的配置文件也會被修改,比如slaveof屬性會指向新的master
  • 當master節點重新啓動後,它將不再是master而是做爲slave接收新的master節點的同步數據
  • sentinel因爲也是一個進程也有掛掉的可能,所以sentinel也會啓動多個形成一個sentinel集羣。
  • 當主從模式配置密碼時,sentinel也會同步將配置信息修改到配置文件中,不許要擔心。
  • 一個sentinel或sentinel集羣可以管理多個主從Redis。
  • sentinel最好不要和Redis部署在同一臺機器,不然Redis的服務器掛了以後,sentinel也掛了。
  • sentinel監控的Redis集羣都會定義一個master名字,這個名字代表Redis集羣的master Redis。

當使用sentinel模式的時候,客戶端就不要直接連接Redis,而是連接sentinel的ip和port,由sentinel來提供具體的可提供服務的Redis實現,這樣當master節點掛掉以後,sentinel就會感知並將新的master節點提供給使用者。

2. 缺點

sentinel模式基本可以滿足一般生產的需求,具備高可用性。但是當數據量過大到一臺服務器存放不下的情況時,主從模式或sentinel模式就不能滿足需求了,這個時候需要對存儲的數據進行分片,將數據存儲到多個Redis實例中,就是下面要講的。

三、cluster模式

cluster的出現是爲了解決單機Redis容量有限的問題,將Redis的數據根據一定的規則分配到多臺機器。對cluster的一些理解:

  • cluster可以說是sentinel和主從模式的結合體,通過cluster可以實現主從和master重選功能,所以如果配置兩個副本三個分片的話,就需要六個Redis實例。
  • 因爲Redis的數據是根據一定規則分配到cluster的不同機器的,當數據量過大時,可以新增機器進行擴容。

這種模式適合數據量巨大的緩存要求,當數據量不是很大使用sentinel即可。

四、參考文章

https://blog.csdn.net/drdongshiye/article/details/84204392

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章