Chuyển đến nội dung chính

第 23 課:Redis HA — 哨兵與群集模式

在 Kubernetes 上部署 Redis HA 有兩種模式:Sentinel(主副本)和 Cluster(分片)、快取策略、持久化、監控和最佳實踐。

🔒 DevSecOps — 第 23 課 第 23 課:REDIS HA — 哨兵與叢集 模式

使用 Kubernetes HA 在本地部署微服務

第 5 部分:訊息佇列 HA(RabbitMQ、Kafka、Redis)

xdev.asia

🎯 課程目標__HTMLTAG_68___
  • ✅ 了解 Redis Sentinel 與叢集模式 — 何時使用
  • ✅ 在 Kubernetes 上部署 Redis Sentinel HA
  • ✅ 部署Redis叢集模式(分片)
  • ✅ 持久化設定:RDB 與 AOF
  • ✅ 快取策略與最佳實務
  • ✅ 使用 Prometheus 監控 Redis

第 1 部分:REDIS HA — SENTINEL 與 CLUSTER

程式碼區塊_0

___HTMLTAG_89__HTMLTAG_90___功能___HTMLTAG_91__HTMLTAG_92___哨兵模式___HTMLTAG_93__HTMLTAG_94___叢集模式___HTMLTAG_95__HTMLTAG_96___ ___HTMLTAG_99__HTMLTAG_100___資料分佈___HTMLTAG_101__HTMLTAG_102___Master上的所有資料___HTMLTAG_103__HTMLTAG_104___分片(雜湊槽)___HTMLTAG_105__HTMLTAG_106___ ___HTMLTAG_107__HTMLTAG_108___最大資料集大小___HTMLTAG_109__HTMLTAG_110___單節點RAM____HTMLTAG_111__HTMLTAG_112___所有主控RAM的總和____HTMLTAG_113__HTMLTAG_114___ ___HTMLTAG_115__HTMLTAG_116___讀取擴充____HTMLTAG_117__HTMLTAG_118___讀取副本____HTMLTAG_119__HTMLTAG_120___每個分片的讀取副本____HTMLTAG_121__HTMLTAG_122___ ___HTMLTAG_123__HTMLTAG_124___寫入縮放____HTMLTAG_125__HTMLTAG_126___僅限單一母版___HTMLTAG_127__HTMLTAG_128___多個母版(水平)___HTMLTAG_129__HTMLTAG_130______ ___HTMLTAG_131__HTMLTAG_132___故障轉移___HTMLTAG_133__HTMLTAG_134___Sentinel 法定投票___HTMLTAG_135__HTMLTAG_136___內建(Ggossip 協定)___HTMLTAG_137__HTMLTA_138______ ___HTMLTAG_139__HTMLTAG_140___多鍵操作___HTMLTAG_141__HTMLTAG_142___支援___HTMLTAG_143__HTMLTAG_144___僅相同的雜湊槽 ({tag})___HTMLTAG_1455__HTMLTAG_146___ ___HTMLTAG_147__HTMLTAG_148___複雜性___HTMLTAG_149__HTMLTAG_150___簡單___HTMLTAG_151__HTMLTAG_152___更複雜___HTMLTAG_153__HTMLTAG_154______ ___HTMLTAG_155__HTMLTAG_156___最適合___HTMLTAG_157__HTMLTAG_158___快取、會話(< 32GB)____HTMLTAG_159__HTMLTAG_160___大資料集,高寫入吞吐量__HTMLTAG_161__HTMLTAG_162___

第 2 部分:部署 REDIS SENTINEL HA

2.1。使用 Bitnami Helm Chart 安裝

___程式碼區塊_1___

2.2。自訂值檔案(詳細資訊)

___程式碼區塊_2___

程式碼區塊_3


第 3 部分:部署 REDIS 叢集模式

程式碼區塊_4

程式碼區塊_5


第 4 部分:持久性 — RDB 與 AOF

___HTMLTAG_182__HTMLTAG_183___功能___HTMLTAG_184__HTMLTAG_185___RDB(快照)___HTMLTAG_186__HTMLTAG_187___AOF(僅附加文件)___HTMLTAG_188__HTMLTAG_189___AOF(僅附加文件)___HTMLTAG_188__HTMLTAG_189___ ___HTMLTAG_194__HTMLTAG_195___機制___HTMLTAG_196__HTMLTAG_197___時間點快照___HTMLTAG_198__HTMLTAG_199___記錄每個寫入操作___HTMLTAG_200__HTMLTAG_201___兩者20MLGMLG1_20_20_201___20UML ___HTMLTAG_204__HTMLTAG_205___資料遺失____HTMLTAG_206__HTMLTAG_207___直到最後一個快照___HTMLTAG_208__HTMLTAG_209___~1秒(每秒appendfsync)___HTMLTAG_210__1UHT_ML01112201021_210__12GML ___HTMLTAG_214__HTMLTAG_215___恢復速度___HTMLTAG_216__HTMLTAG_217___快速(載入二進位檔案)___HTMLTAG_218__HTMLTAG_219___先使用較慢(重播作業)___HTMLTAG_220__HTMLTA12311212320___ ___HTMLTAG_224__HTMLTAG_225___磁碟 I/O___HTMLTAG_226__HTMLTAG_227___週期性突發(分叉)___HTMLTAG_228__HTMLTAG_229___連續(小寫入)___HTMLTAG_230__HTMLTAG131413230_____ ___HTMLTAG_234__HTMLTAG_235___檔案大小___HTMLTAG_236__HTMLTAG_237___緊湊____HTMLTAG_238__HTMLTAG_239___較大(重寫幫助)___HTMLTAG_240__HTMLTAG_241___兩個檔案(重寫幫助)___HTMLTAG_240__HTMLTAG_241___兩個檔案_ML ___HTMLTAG_244__HTMLTAG_245___最適合___HTMLTAG_246__HTMLTAG_247___快取(可接受的損失)___HTMLTAG_248__HTMLTAG_249___會話儲存(最小損失)___HTMLTAG_250_HTMLTAG_249___會話儲存(最小損失)___HTMLTAG_250_HTMLTAG_251____MLG1251______HT

程式碼區塊_6


第 5 部分:快取策略

程式碼區塊_7

程式碼區塊_8


第 6 部分:應用程式連線

程式碼區塊_9


第 7 部分:監控

程式碼區塊_10

程式碼區塊_11


💡 重點

    ___HTMLTAG_270__HTMLTAG_271___Sentinel:簡單 HA,單主,適合 < 32GB datasets ___HTMLTAG_274__HTMLTAG_275___叢集:水平縮放,多主,適用於大型資料集 ___HTMLTAG_278__HTMLTAG_279___持久性:用於生產的 RDB + AOF,平衡耐用性與效能 ___HTMLTAG_282__HTMLTAG_283___maxmemory-policy:最受歡迎的用於快取的 allkeys-lru ___HTMLTAG_286__HTMLTAG_287___快取旁置:建議模式,寫入時無效 ___HTMLTAG_290__HTMLTAG_291___監視器:快取命中率 > 90%、記憶體使用情況、驅逐

🎯 練習

練習 1:Redis 哨兵故障轉移

  • 部署 Redis Sentinel 3 節點
  • 向master寫入數據,殺死master pod
  • 驗證 Sentinel 提升副本,資料完好__HTMLTAG_306___

練習 2:基準

  • 執行 redis 基準測試:SET/GET 100,000 個鍵
  • 比較延遲:有/沒有持久性__HTMLTAG_314___
  • 監控記憶體碎片率

📚 下一篇文章

在第24課:Istio服務網格架構中,我們將學習服務網格並部署Istio進行微服務通訊。