目標___HTMLTAG_1__HTMLTAG_2___學完本課,您將了解:___HTMLTAG_3__HTMLTAG_4__HTMLTAG_5___Patroni 是什麼以及它如何運作____HTMLTAG_6__HTMLTAG_7___DCS(分散式儲存) -等等。什麼是 Patroni? ___HTMLTAG_17__HTMLTAG_18___簡介___HTMLTAG_19__HTMLTAG_20___Patroni 是由 Zalando 開發的 PostgreSQL 開源 HA(高可用性)範本。它自動化 PostgreSQL叢集管理,包括:____HTMLTAG_21__HTMLTAG_22__HTMLTAG_23__HTMLTAG_24____領導者選舉:自動選擇主節點____HTMLTAG_26__H TMLTAG_27__HTMLTAG_28___自動故障轉移:專案過渡為主時自動備援失敗___HTMLTAG_30__HTMLTAG_31__HTMLTAG_32___設定管理___HT MLTAG_33___:集中設定管理___HTMLTAG_34__HTMLTAG_35__HTMLTAG_36___健康檢查:監控相關節點的健康狀況(續)___HTMLTAG_38__ HTMLTAG_39__HTMLTAG_40___Patroni架構___HTMLTAG_41__HTMLTAG_42__HTMLTAG_43______HTMLTAG_44__HTMLTAG_45___Patroni架構是管理 PostgreSQL 叢集的熱門選擇。 ___HTMLTAG_47__HTMLTAG_48__HTMLTAG_49___Patroni如何運作工作___HTMLTAG_50__HTMLTAG_51__HTMLTAG_52__HTMLTAG_53___開始:每個Patroni實例連接到DCS(etcd)___HTMLTAG_55__HTMLTAG_ 56__HTMLTAG_57___領導者選舉:節點競爭成為領導者DCS___HTMLTAG_59__HTMLTAG_60__HTMLTAG_61___角色分配:贏得領導者鎖的節點將把PostgreSQL 升為主___HTMLTAG_63__HTMLTAG_64__HTMLTAG_65___健康監控:Patroni 持續檢查:___HTMLTAG_67__HTMLTAG_68___Postgre連結性___HTMLTAG_73__HTMLTAG_74__HTMLTAG_75__HTMLTAG_76__HTMLTAG_77___自動故障轉移:如果領導者發生故障,Patroni會自動:___HTMLTAG_79__HTMLTAG_80___偵測問題___HTMLTAG_81__HTMLTAG_82___選擇最適合的副本___HTMLTAG_83__HTMLTAG_84___將新副本提升為主___HTMLTAG_85__HTMLTAG_86___更新剩餘副本HTMLTAG_87__HTMLTAG_88__HTMLTAG_89__HTMLTAG_90__HTMLTAG_91___元件主要___HTMLTAG_92__HTMLTAG_93___Patroni守護程式___HTMLTAG_94__HTMLTAG_95__HTMLTAG_96___在每個__HTMLTAG_96___ PostgreSQL 節點上執行____HTMLTAG_97__HTMLTAG_98___管理 PostgreSQL 的生命週期____HTMLTAG_99__HTMLTAG_100___實作運行狀況檢查___HTMLTAG_101__HTMLTAG_102___RESTDCS___HTMLTAG___HTMLTAG_101__HTMLTAG_102___REST__DCS___HTMLTAG___HTMLTAG_101__HTMLTAG_102___REST__15HTMLTAG____1031 API____HTMLTAG_106__HTMLTAG_107__HTMLTAG_108___健康檢查端點:http://node:8008/health___HTMLTAG_110__HTMLTAG_111__HTMLTAG_112___端點讀:___1313313點讀:___112___ de:8008/read-only___HTMLTAG_114__HTMLTAG_115__HTMLTAG_116___主端點:http://node:8008/master(已棄用)或___HTMLTAGpri_119/12012G12G12G19________HTMLTAG_121__HTMLTAG_122__HTMLTAG_123___patronictl___HTMLTAG_124__HTMLTAG_125__HTMLTAG_126___用於叢集管理的 CLI工具___HTMLTAG_127__HTMLTAG_128___指令:清單、切換、故障轉移、重新初始化、重新啟動、重新載入___HTMLTAG_129__HTMLTAG_130__HTMLTAG_131___2。 DCS - 分散式設定儲存___HTMLTAG_132__HTMLTAG_133___DCS 角色___HTMLTAG_134__HTMLTAG_135___DCS 是 Patroni 叢集的協調中心,儲存:___HTMLTAG_136__HTMLTAG_137__HTMLTAG_138___HTMLTAG_136__HTMLTAG_137__HTMLTAG_138139_____ key:有關哪個節點是領導者的資訊(基於 TTL)___HTMLTAG_141__HTMLTAG_142__HTMLTAG_143___設定:設定 PostgreSQL 和Patroni___HTMLTAG_145__HTMLTAG_146__HTMLTAG_147___成員資訊:節點清單cluster___HTMLTAG_149__HTMLTAG_150__H TMLTAG_151___故障轉移/切換狀態:切換狀態____HTMLTAG_153__HTMLTAG_154__HTMLTAG_155___比較公共DCS變數
___HTMLTAG_158__HTMLTAG_159__HTMLTAG_160__HTMLTAG_161___計算函數___HTMLTAG_162__HTMLTAG_163___etcd___HTMLTAG_164__HTMLTAG_165___Consul___MLTAG_166167G1662___ r語言語言___HTMLTAG_17 5__HTMLTAG_176__HTMLTAG_177___轉到___HTMLTAG_178__HTMLTAG_179___轉到___HTMLTAG_180__HTMLTAG_181____Java___HTMLTAG_182__HTMLTAG_183__HTMLTAG_18 4__HTMLTAG_185__HTMLTAG_186___共識___HTMLTAG_187__HTMLTAG_188__HTMLTAG_189___Raft____HTMLTAG_190__HTMLTAG_191____Raft___TAG_192__19 類似(類似Paxos)___HTMLTAG_194__HTMLTAG_195__HTMLTAG_196__HTMLTAG_197__HTMLTAG_198___API____HTMLTAG_199__HTMLTAG_200__HTMLTAG_201 ___gRPC、HTTP___HTMLTAG_202__HTMLTAG_203___HTTP、DNS___HTMLTAG_204__HTMLTAG_205___自訂協定____HTMLTAG_206__HTMLTAG_207__HTMLT___ AG_208__HTMLTAG_209__HTMLTAG_210____設定____HTMLTAG_211__HTMLTAG_212__HTMLTAG_213___簡單____HTMLTAG_214__HTMLTAG_215___中心平均值___HTMLTAG_216__HTMLTAG_217___複雜雜項___HTMLTAG_218__HTMLTAG_219__HTMLTAG_220__HTMLTAG_221__HTMLTAG_222___效能___HTMLTAG_223_ _____HTMLTAG_224__HTMLTAG_225___高___HTMLTAG_226__HTMLTAG_227___高___HTMLTAG_228__HTMLTAG_229___中平均____HTMLTAG_230 __HTMLTAG_231__HTMLTAG_232__HTMLTAG_233__HTMLTAG_234____文檔____HTMLTAG_235__HTMLTAG_236__HTMLTAG_237___良好___HTMLTA G_238__HTMLTAG_239___非常好___HTMLTAG_240__HTMLTAG_241___平均___HTMLTAG_242__HTMLTAG_243__HTMLTAG_244__HTMLTAG_245__H TMLTAG_246___使用___HTMLTAG_247__HTMLTAG_248__HTMLTAG_249___Kubernetes、Patroni___HTMLTAG_250__HTMLTAG_251___服務網格、 HA___HTMLTAG_252__HTMLTAG_253___Hadoop、卡夫卡___HTMLTAG_254__HTMLTAG_255__HTMLTAG_256__HTMLTAG_257___
___HTMLTAG_259__HTMLTAG_260___推薦:etcd 適用於大多數情況,因為簡單且高效能。 ___HTMLTAG_262__HTMLTAG_263___etcd -分散式鍵值儲存____HTMLTAG_264__HTMLTAG_265__HTMLTAG_266___功能main:___HTMLTAG_268__HTMLTA G_269__HTMLTAG_270___強一致(CAP定理:CP)____HTMLTAG_271__HTMLTAG_272___分散式且高可用____HTMLTAG_273__HTMLTAG_274___快速(亞毫秒延遲)___HTMLTAG_275__HTMLTAG_276___簡單 API___HTMLTAG_277__HTMLTAG_278___即時更新的監視機制___HTMLTAG_279__HTMLTAG_280__HTMLTAG_281__HTMLTAG_281__HT中的資料結構帕特羅尼:___HTMLTAG_284__CODEBLOCK_0__HTMLTAG_285___3。共識演算法 - Raft___HTMLTAG_286__HTMLTAG_287___什麼是 Raft? ___HTMLTAG_288__HTMLTAG_289___Raft 是一種比 Paxos 更容易理解的共識演算法,確保:___HTMLTAG_290__HTMLTAG_291__HTMLTAG_292__HTMLTAG_293___安全:回傳false結果___HTMLTAG_295__HTMLTAG_296__HTMLTAG_297___活躍性_:總是取得進展(當大多數節點處於活動狀態時)___HTMLTAG_299__HTMLTAG_300__HTM LTAG_301___一致性:所有節點都看到相同的狀態____HTMLTAG_303__HTMLTAG_304__HTMLTAG_305___角色Raft___HTMLTAG_306__HTMLTAG_307__HT MLTAG_308__HTMLTAG_309___Leader:____HTMLTAG_311__HTMLTAG_312___處理所有客戶端請求____HTMLTAG_313__HTMLTAG_314___複製傳入日志條目追隨者___HTMLTAG_315__HTMLTAG_316___在term___HTMLTAG_317__HTMLTAG_318__HTMLTAG_319__HTMLTAG_320__HTMLTAG_321___Follower___HTML TAG_322___:___HTMLTAG_323__HTMLTAG_324___被動,只接收leader的請求___HTMLTAG_325__HTMLTAG_326___如果沒有收到心跳,則成為候選人____HTMLTAG_327__HTMLTAG _328__HTMLTAG_329__HTMLTAG_330__HTMLTAG_331____候選人_:____HTMLTAG_333__HTMLTAG_334___候選人的追蹤者逾時___HTMLTAG_335__ HTMLTAG_336___請求其他人投票節點___HTMLTAG_337__HTMLTAG_338___如果您贏得選舉→領導者___HTMLTAG_339__HTMLTAG_340__HTMLTAG_341______HTMLTAG_342__HT MLTAG_343___領導者流程選舉___HTMLTAG_344__HTMLTAG_345___
___HTMLTAG_347__HTMLTAG_348___領導者選舉流程對於確保一致性至關重要以及分散式系統的可用性。 ___HTMLTAG_349__HTMLTAG_350__HTMLTAG_351__HTMLTAG_352__HTMLTAG_353___選舉詳細資料__HTMLTAG_354___:____HTMLTAG_355__HTMLTAG_356__HTMLTAG_357121121121116972(_____ 50-300ms)期間未收到心跳隨機)___HTMLTAG_358__HTMLTAG_359___轉換為候選人,增加任期數____HTMLTAG_360__HTMLTAG_361___為自己投票____HTMLTAG_362__HTMLTAG_363___向所有節點發送questVote RPC___HTMLTAG_364__HTMLTAG_365___如果收到多數票(n/2 + 1):___HTMLTAG_366__HTMLTAG_367___成為Leader____HTMLTAG_368__HTMLTAG_369___立即發送心跳即___HTMLTAG_370__HTMLTAG_371 __HTMLTAG_372__HTMLTAG_373___如果逾時或失敗:___HTMLTAG_374__HTMLTAG_375___返回Follower或開始選舉新___HTMLTAG_376__HTMLTAG _377__HTMLTAG_378__HTMLTAG_379__HTMLTAG_380___法定人數與多數____HTMLTAG_381__HTMLTAG_382__HTMLTAG_383___法定人數___HT MLTAG_384___:系統運作所需的最小節點數動態___HTMLTAG_385__CODEBLOCK_1__HTMLTAG_386__HTMLTAG_387___公式:法定人數= 下限(n/2) + 1___HTMLTAG_389__HTMLTAG_390__HTMLTAG_391___範例為 3節點:___HTMLTAG_393__HTMLTAG_394__HTMLTAG_395___✅ 395___✅ 395___✅ 395___✅個節點處於活動狀態:叢集運作良好___HTMLTAG_396__HTMLTAG_397___✅ 2 個節點處於活動狀態:叢集正常運作(滿足法定人數)___HTMLTAG_398__HTMLTAG_399___❌ 1 活動節點:叢集停止(無仲裁)____HTMLTAG_400__HTMLTAG_401__HTMLTAG_402__HTMLTAG_403____建議:始終最佳化使用奇數節點(3、57)。 ___HTMLTAG_405__HTMLTAG_406___4。 Patroni中的Leader選舉___HTMLTAG_407__HTMLTAG_408___Leader Lock機制___HTMLTAG_409__HTMLTAG_410___Patroni使用DCS實作分散式鎖定:___HTMLTAG_411__HTMLTAG_412__HTMLTAGader_413___ Lock屬性:___HTMLTAG_415__CODEBLOCK_2__HTMLTAG_416___領導者選舉過程___HTMLTAG_417__HTMLTAG_418__HTMLTAG_419___步驟1:競爭條件___HTMLTAG_420__HTMLTAG_421__CODEBLOCK_3______HTMLTAG_422__HTMLTAG_423___步驟 2:取得鎖定嘗試____HTMLTAG_424__HTMLTAG_425__CODEBLOCK_4__4MLTAG_424__HTMLTAG_425__CODEBLOCK_4__414G_425__4141_425__ 3:角色分配____HTMLTAG_428__HTMLTAG_429__CODEBLOCK_5__HTMLTAG_430__HTMLTAG_431___步驟4:維護___HTMLTAG_432__HTMLTAG_433__CODEBLOCK_6__HTMLTAG_434___最佳選擇標準副本____HTMLTAG_435__HTMLTAG_436___故障轉移時,Patroni根據下列條件選擇副本:___HTMLTAG_437__HTMLTAG_438__HTMLTAG_439__HTMLTAG_440___複製狀態:___HTMLTAG_442__HTMLTAG_443__HTMLTAG_4444___HTMLTAG_442__HTMLTAG_443__HTMLTAG_44444___41U444___流式___ >存檔中恢復___HTMLTAG_447__HTMLTAG_448__HTMLTAG_449__HTMLTAG_450__HTMLTAG_451__HTMLTAG_452____時間線____MLTATAGTM_453___:___52____ LTAG_454__HTMLTAG_455__HTMLTAG_456___XLog位置:___HTMLTAG_458__HTMLTAG_459___副本的LSN最接近主___HTMLTAG_460__HTMLTAG_461___資料遺失最多___HTMLTAG____資料遺失__HTMLTAG_463__HTMLTAG_464__HTMLTAG_465__HTMLTAG_466___無複製lag:___HTMLTAG_468__HTMLTAG_469__HTMLTAG_470___pg_stat_laglication.replay_lag = 0___HTMLTAG_471__HTMLTAG_472__HTMLTAG_473__HTMLTAG_474__HTMLTAG_475__HTMLTAG_476___明確候選:設定配置___HTMLTAG_478__HTMLTAG_479__HT489__ TAG_481___優先權標籤:___HTMLTAG_483__CODEBLOCK_7__HTMLTAG_484__HTMLTAG_485___錢包範例:___HTMLTAG_487__CODEBLOCK_8855。故障轉移機制___HTMLTAG_489__HTMLTAG_490___自動故障轉移過程___HTMLTAG_491__HTMLTAG_492__HTMLTAG_493___時間軸詳細資料:___H TMLTAG_495__HTMLTAG_496______HTMLTAG_497__HTMLTAG_498__HTMLTAG_499___自動故障轉移流程____HTMLTAG_500__HTMLTAG_501__HTMLTAG_50 2__HTMLTAG_503___詳細故障轉移步驟詳情___HTMLTAG_504__HTMLTAG_505__HTMLTAG_506___步驟1:偵測故障___HTMLTAG_507__HTMLTAG_508__CODEBLOCK _9______HTMLTAG_509__HTMLTAG_510___步驟2:領導者鎖定過期___HTMLTAG_511__HTMLTAG_512__CODEBLOCK_10__HTMLTAG_513__HTMLTAG_514___第3 步驟:副本促銷____HTMLTAG_515__HTMLTAG_516__CODEBLOCK_11__HTMLTAG_517__HTMLTAG_518___第 4 步驟:重新設定___HTMLTAG_519__HTMLTAG_520__CODEBLOCK_12HTMLTAG_519__HTMLTAG_520__CODEBLOCK_12HT1 5:追蹤者重新指向____HTMLTAG_523__HTMLTAG_524__CODEBLOCK_13__HTMLTAG_525___監控故障轉移____HTMLTAG_526__HTMLTAG_52 7__HTMLTAG_528___重要指標_:____HTMLTAG_530__HTMLTAG_531__HTMLTAG_532__HTMLTAG_533___patroni_primary_timeline_:偵測時間軸變更___HTMLTAG_535__HTMLTAG_536__HTMLTAG_537___patroni_xlog_location:追蹤 WAL位置___HTMLTAG_539__HTMLTAG_540__HTMLTAG_541___patroni_replication_lag:滯後於先前故障轉移____HTMLTAG_543__HTML TAG_544__HTMLTAG_545___patroni_failover_count:計算故障轉移次數___HTMLTAG_547__HTMLTAG_548__HTMLTAG_549___6。裂腦問題____HTMLTAG_550__HTMLTAG_551___什麼是裂腦? ___HTMLTAG_552__HTMLTAG_553__HTMLTAG_554___定義_:≥2個節點認為自己是Primary,記錄不同資料→資料的情況分歧。 ___HTMLTAG_556__HTMLTAG_557___原因___HTMLTAG_558__HTMLTAG_559__HTMLTAG_560__HTMLTAG_561__HTMLTAG_562__HTMLTAG_563___網路分區___HTMLTAG_564__HTMLTAG_565______HTMLTAG_566__HTMLTAG_567__HTMLTAG_568______HTMLTAG_569__HTMLTAG_570___網路分區____HTMLTAG _571__HTMLTAG_572__HTMLTAG_573__HTMLTAG_574___DCS分區:etcd集群split____HTMLTAG_576__HTMLTAG_577__HTMLTAG_ 578___網路速度慢:心跳逾時,但節點仍處於活動狀態___HTMLTAG_580__HTMLTAG_581__HTMLTAG_582___的後果裂腦___HTMLTAG_583__HTMLTAG_58 4___

___HTMLTAG_586__HTMLTAG_587___裂腦的後果___HTMLTAG_588__HTMLTAG_589______HTMLTAG_591_ __帕特羅尼的裂腦預防___HTMLTAG_592__HTMLTAG_593__HTMLTAG_594___機制1:基於DCS的鎖定(主要)___HTMLTAG_595__HTMLTAG_596__CODEBLOCK_14______H TMLTAG_597__HTMLTAG_598___機制2:領導者金鑰驗證____HTMLTAG_599__HTMLTAG_600__CODEBLOCK_15__HTMLTAG_601__HTMLTAG_602___機制3:時間軸分歧檢定測___HTMLTAG_603__HTMLTAG_604__CODEBLOCK_16___
法定人數要求___HTMLTAG_606__HTMLTAG_607___etcd with 3節點:___HTMLTAG_610__CODEBLOCK_17__HTMLTAG_611__HTMLTAG_612___場景2:完全隔離____HTMLTAG_613__HTMLTAG_614__CODEBLOCK_18__HTMLTAG_615___看門狗定時器(進階保護)___HTMLTAG_616__HTMLTAG_617__HTMLTAG_618___硬體看門狗___MLG_ 619___:___HTMLTAG_620__CODEBLOCK_19__HTMLTAG_621__HTMLTAG_622___活動動態:___HTMLTAG_624__HTMLTAG_625__HTMLTAG_626___HTMLTAG_624__HTMLTAG_625__HTMLTAG_626______Patroni踢看門狗設備每 10 秒____HTMLTAG_627__HTMLTAG_628___如果 Patroni 掛起或失去 DCS → 停止踢___HTMLTAG_629__HTMLTAG_630___逾時後 →看門狗重新啟動整個節點___HTMLTAG_631__HTMLTAG_632___防止「殭屍主」情況___HTMLTAG_633__HTMLTAG_634__HTMLTAG_635___最佳避免腦裂的做法___HTMLTAG_636__HTMLTAG_637__HTTAG_637__HTTAG_636__HTMLTAG_637__HTTAG_637__HTTAG_637___ DCS:不同可用區中的 etcd 叢集____HTMLTAG_641__HTMLTAG_642__HTMLTAG_643___監控 DCS 運作狀況:當 etcd不正常時發出警報健康___HTMLTAG_645__HTMLTAG_646__HTMLTAG_647___網路冗餘:節點之間有多個網路路徑___HTMLTAG_649__HTMLTAG_650__HTMLTAG_651____MLTAG_649__HTMLTAG_650__HTMLTAG_651____ML正確逾時____MLG____ML _HTMLTAG_654__CODEBLOCK_20__HTMLTAG_655__HTMLTAG_656__HTMLTAG_657___啟用看門狗_:硬體保護層___HTMLTAG_659__HTMLTAG_660_____MLG_660__1UG1659_____V___ML_660__6AG_663__HTMLTAG_664__CODEBLOCK_21__HTMLTAG_665___從裂腦中恢復___HTMLTAG_666__HTMLTAG_667___如果發生裂腦:___HTMLTAG_668__HTMLTAG_669__HTMLTAG_670_____ 1:識別___HTMLTAG_671__HTMLTAG_672__CODEBLOCK_22__HTMLTAG_673__HTMLTAG_674___第2步:選擇主要____HTMLTAG_675__HTMLTAG_676__HTMLTAG_677__H TMLTAG_678___選擇更多重要資料的節點___HTMLTAG_679__HTMLTAG_680___或具有較高資料的節點時間軸___HTMLTAG_681__HTMLTAG_682__HTMLTAG_683__HTMLTAG_684___步驟3:重建分叉副本___HTMLTAG_685__HTMLTAG_686__CODEBLOCK_23__HTMLTAG_687__HTMLTAG_688___步驟 4:驗證____HTMLTAG_689__HTMLTAG_690__CODEBLOCK_24__HTTAG_24__17G_26911。摘要___HTMLTAG_692__HTMLTAG_693___關鍵要點___HTMLTAG_694__HTMLTAG_695___✅ Patroni:HA 模板自動化 PostgreSQL管理叢集___HTMLTAG_698__HTMLTAG_699___✅ DCS (etcd):分散式協調、儲存配置與領導者鎖定____HTMLTAG_702__HTMLTAG_703___✅ Raft共識___HTMLTAG _705___:確保etcd中的一致性和領導者選舉___HTMLTAG_706__HTMLTAG_707___✅ Leader選舉:自動、快速(約 30-40 秒),基于 TTL鎖定___HTMLTAG_710__HTMLTAG_711___✅故障轉移:在主副本時自動提升最佳副本失敗___HTMLTAG_71 4__HTMLTAG_715___✅ 腦裂預防:DCS仲裁+TTL鎖定+看門狗____HTMLTAG_718__HTMLTA G_719___一般架構____HTMLTAG_720__HTMLTAG_721__HTMLTAG_722__HTMLTAG_723__HTMLTAG_724___一般架構案例____HTMLTAG_ 725__HTMLTAG_726__HTMLTAG_727__HTMLTAG_728___複習問題____HTMLTAG_729__HTMLTAG_730__HTMLTAG_731___Patroni 与纯流媒体有何不同复制? ___HTMLTAG_732__HTMLTAG_733___為什麼需要 DCS?无法使用数据库存储状态? ___HTMLTAG_734__HTMLTAG_735___5 個節點的叢集中的法定人數是多少? ___HTMLTAG_736__HTMLTAG_737___Patroni 在故障轉移時選擇要提升哪一個副本? ___HTMLTAG_738__HTMLTAG_739___腦裂發生,Patroni 如何防止它? __HTMLTAG_740__HTMLTAG_741___PostgreSQL 中的時間軸是什麼意思? ___HTMLTAG_742__HTMLTAG_743___TTL 30 秒是什麼意思?为什么不设置 TTL = 5 秒? ___HTMLTAG_744__HTMLTAG_745__HTMLTAG_746___準備下一課____HTMLTAG_747__HTMLTAG_748___第 4 課將引導您準備基礎結構:____HTMLTAG_749__HTMLTAG_750__HTMLTAG_751___ 3虛擬機器/伺服器____HTMLTAG_752__HTMLTAG_753___網路設定、防火牆___HTMLTAG_754__HTMLTAG_755___SSH 金鑰、時間同步____HTMLTAG_756__HTMLTAG_757___必要的依賴項__HTMLMLTAGML_758