目標____HTMLTAG_66__HTMLTAG_67___完成本課後,您將:___HTMLTAG_68__HTMLTAG_69__HTMLTAG_70___了解 etcd 在 Patroni 架構中的作用____HTMLTAG_71__HTMLTAG_721__HTMLTAG_72 etcd___HTMLTAG_73__HTMLTAG_74___使用 Raft 設定 etcd叢集共識___HTMLTAG_75__HTMLTAG_76___為etcd建立systemd服務____HTMLTAG_77__HTMLTAG_78___檢查etcd叢集的運作狀況____HTMLTAG_79__HTMLTAG_80___使用基本介绍 etcd___HTMLTAG_84__HTMLTAG_85___1.1。什么是 etcd? HTMLTAG_86__HTMLTAG_87___etcd 是使用 Raft 共識演算法的分散式、可靠的鍵值儲存。由CoreOS開發,目前是CNCF(雲端原生運算基金會)的專案。 HTMLTAG_88__HTMLTAG_89__HTMLTAG_90___主要功能:HTMLTAG_92__HTMLTAG_93__HTMLTAG_94___🔐 強一致___HTMLTA G_96:確保與Raft___HTMLTAG_97__HTMLTAG_98___🚀 快速:讀取的亞毫秒延遲___HTMLTAG_101__HTMLTAG_102___🔄🔄 103___分散式:執行多節點叢集quorum___HTMLTAG_105__HTMLTAG_106___📡 監視機制:更改的即時通知___HTMLTAG_109 HTMLTAG_110___🔒 TTL支援:自動金鑰過期(對領導者)鎖定)HTMLTAG_113__HTMLTAG_114___🌐 + HTTP API:輕鬆整合___HTMLTAG_117__HTMLTAG_118__HTMLTAG_119___1.2。 Patroni 架構中的 etcd___HTMLTAG_120__CODEBLOCK_0______HTMLTAG_121__HTMLTAG_122___etcd已儲存的檔案 :HTMLTAG_124__HTMLTAG_125__HTMLTAG_126__HTMLTAG_127/service/postgres/leader: 領導者鎖定 (TTL 30s)HTMLTAG_129__HTMLTAG_130__HTMLTAG_131/service/postgres/members/:節點資訊____HTMLT AG_133__HTMLTAG_134__HTMLTAG_135/service/postgres/config:叢集設定___HTMLTAG_137__HTMLTAG 138__HTMLTAG_139/service/postgres/initialize:引導狀態____HTMLTAG_141__HTMLTAG_142__HTML TAG_143/service/postgres/failover:故障轉移說明___HTMLTAG_145__HTMLTAG_146__HTMLTAG_147___2。下載並安裝 etcd___HTMLTAG_148__HTMLTAG_149___2.1。架構注意事項____HTMLTAG_150__HTMLTAG_151__HTMLTAG_152___叢集大小建議:_HTMLTAG_154__HTMLTAG_155 HTMLTAG_156__HTMLTAG_157___3個節點:生產建議,容差1故障___HTMLTAG_159__HTMLTAG_160__HTMLTAG_161___5個節點:高可用性,可容忍 2 次故障___HTMLTAG_163__HTMLTAG_164__HTMLTAG_165___7+節點:對於大多數用途而言過度使用案例___HTMLTAG_167__HTMLTAG_168__HTMLTAG_169__HTMLTAG_170___部署拓撲:HTMLTAG_172__CODEBLOC_1HTMLTAG_171:___HTMLTAG_172__CODEBLOC_1HTML 2(位於同一位置)保存資源。 ___HTMLTAG_176__HTMLTAG_177___2.2。在 Ubuntu/Debian 上安裝 etcd___HTMLTAG_178__HTMLTAG_179___在所有 3 個節點上執行.___HTMLTAG_182__HTMLTAG_183___步驟 1:下載 etcd binary___HTMLTAG_184__CODEBLOCK_2__HTMLTAG_185___輸出:___HTMLTAG_186__CODEBLOCK_3__HTMLTAG_187___步驟 2:建立 etcd 使用者和目錄____HTMLTAG_188__CODEBLOCK_49MLTAG.3。在 CentOS/RHEL 上安裝___HTMLTAG_190__CODEBLOCK_5__HTMLTAG_191___3。設定etcd叢集3個節點___HTMLTAG_192__HTMLTAG_193___3.1.網路拓撲___HTMLTAG_194__CODEBLOCK_6__HTMLTAG_195___3.2。建立設定檔____HTMLTAG_196__HTMLTAG_197___節點 1 (10.0.1.11) - /etc/etcd/etcd.conf___HTMLTAG_198__CODEBLOCK_7__HTMLTAG_199___節點 2 (10.0.1.12) - /etc/etcd/etcd.conf___HTMLTAG_200__CODEBLOCK_8__HTMLTAG_201___節點3 (10.0.1.13) - /etc/etcd/etcd.conf___HTMLTAG_202__CODEBLOCK_9__HTMLTAG_203______3.3。參數說明
HTMLTAG_206__HTMLTAG_207__HTMLTAG_208__HTMLTAG_209___參數___HTMLTAG_210__HTMLTAG_211___義大利語意義___HTMLTAG_212__HTMLTAG_213______HTMLTAG_2 14HTMLTAG_217__HTMLTAG_218___ETCD_NAMEHTMLTAG_220__HTMLTAG_221___成員的唯一名稱簇 HTMLTAG_222__HTMLTAG_223__HTMLTAG_224__HTMLTAG_225__HTMLTAG_226____ETCD_DATA_DIR___HTMLTAG_227__HTMLTAG_228__HTMLTAG_229___保存目錄data___H TMLTAG_230__HTMLTAG_231__HTMLTAG_232__HTMLTAG_233__HTMLTAG_234___ETCD_LISTEN_PEER_URLS___HTMLTAG_235__HTMLTAG_236URL偵聽對等通訊(連接埠第2380章第2379章到___HTMLTAG_254__HTMLTAG_255__HTMLTAG_256__HTMLTAG_257__HTMLTAG_258____ETCD_ADVERTISE_C LIENT_URLS___HTMLTAG_259__HTMLTAG_260__HTMLTAG_261___供客戶端連線的URL至____HTMLTAG_262__HTMLTAG_263__HTMLTAG_264__HT MLTAG_265__HTMLTAG_266____ETCD_INITIAL_CLUSTER____HTMLTAG_267__HTMLTAG_268__HTMLTAG_269___所有成員的清單引導___HTMLTA G_270__ETCD_INITIAL_CLUSTER_STATE___HTML TAG_275__HTMLTAG_276__HTMLTAG_277___新___HTMLTAG_279__HTMLTAG_280___(第一次)或___HT MLTAG_282___ HTMLTAG_283__HTMLTAG_284___現有___HTMLTAG_285__HTMLTAG_286 (新增成員)___ HTMLTAG_288__HTMLTAG_289______HTMLTAG_290__HTMLTAG_291__HTMLTAG_292____ETCD_INITIAL_CLUSTER_TOKEN___HTMLTAG_293_ _HTMLTAG_294__HTMLTAG_295___唯一叢集的令牌(避免混淆)混合)
4。建立 systemd 服務___HTMLTAG_302__HTMLTAG_303___建立檔案/etc/systemd/system/etcd.service on ALL 3節點:___HTMLTAG_308__CODEBLOCK_10__HTMLTAG_309__HTMLTAG_310___重新載入systemd並啟用服務:___HTMLTAG_312__CODEBLOCK_11355。啟動etcd叢集___HTMLTAG_314__HTMLTAG_315___5.1。在節點上啟動 etcd
:日誌數量條目___HTMLTAG_363__HTMLTAG_364__HTMLTAG_365___7。 etcdctl 基本指令____HTMLTAG_366__HTMLTAG_367___7.1。設定環境(選用)___HTMLTAG_368__CODEBLOCK_20__HTMLTAG_369___7.2.基本操作____HTMLTAG_370__HTMLTAG_371____放置/取得/刪除鍵___HTMLTAG_372__CODEBLOCK_21__3MLG_377721212127212121370373073373分字段的鍵結編號____HTMLTAG_374__CODEBLOCK_22__HTMLTAG_375___監視變更___HTMLTAG_376__CODEBLOCK_23__HTMLTAG_377___TTL鍵(用於領導者鎖定)___HTMLTAG_378__CODEBLOCMLK_249173_MLTAG_231.73。進階操作____HTMLTAG_380__HTMLTAG_381___交易(原子操作)____HTMLTAG_382__CODEBLOCK_25__HTMLTAG_383___快照備份____HTMLTAG_384__CODEBLOCK_26__HTMLTAG___快照備份____HTMLTAG_384__CODEBLOCK_26__HTMLTAG_385___8.實驗室:完全設定。群集___HTMLTAG_386__HTMLTAG_387___8.1。實驗目標___HTMLTAG_388__HTMLTAG_389__HTMLTAG_390___✅ 在 3 個節點上安裝 etcd___HTMLTAG_391__HTMLTAG_392___✅ 叢集設定___HTMLTAG_393__HTMLTAG_394___✅ 叢集設定___HTMLTAG_393__HTMLTAG_394______ML0ML測試基本操作___HTMLTAG_397__HTMLTAG_398___✅ 模擬節點失敗___HTMLTAG_399__HTMLTAG_400__HTMLTAG_401___8.2。逐步實驗指南___HTMLTAG_402__HTMLTAG_403___1。在所有節點上安裝 etcd___HTMLTAG_404__HTMLTAG_405___在第 2 節完成.___HTMLTAG_406__HTMLTAG_407___2。建立設定檔___HTMLTAG_408__HTMLTAG_409___在第 3 節完成.___HTMLTAG_410__HTMLTAG_411___3。建立 systemd 服務___HTMLTAG_412__HTMLTAG_413___在第 4 節實現.___HTMLTAG_414__HTMLTAG_415___4。啟動叢集___HTMLTAG_416__CODEBLOCK_27__HTMLTAG_417___5。驗證群集___HTMLTAG_418__CODEBLOCK_28__HTMLTAG_419___6。測試寫入/讀取___HTMLTAG_420__CODEBLOCK_29__HTMLTAG_421___7。測試領導者選舉___HTMLTAG_422__CODEBLOCK_30__HTMLTAG_423___8。測試資料持久性____HTMLTAG_424__CODEBLOCK_31__HTMLTAG_425___8.3。常見問題故障排除___HTMLTAG_426__HTMLTAG_427___問題 1:無法形成叢集___HTMLTAG_428__CODEBLOCK_32__HTMLTAG_429___問題 2:無法連線到 etcd___HTMLTAG_430__CODEBLOCK_33__HTMLTAG_431___問題 3:節點不會加入群集___HTMLTAG_432__CODEBLOCK_34__HTMLTAG_433___問題 4:裂腦或多位領導者___HTMLTAG_434__CODEBLOCK_35__HTMLTAG_4359。效能調整___HTMLTAG_436__HTMLTAG_437___9.1。 etcd調整參數___HTMLTAG_438__CODEBLOCK_36__HTMLTAG_439___9.2.監控etcd___HTMLTAG_440__HTMLTAG_441__HTMLTAG_442___要監控的關鍵指標___HTM LTAG_443___:___HTMLTAG_444__HTMLTAG_445__HTMLTAG_446___延遲(第99個百分位數<50毫秒)___HTMLTAG_447__HTMLTAG_448___磁碟fsync持續時間(< 10ms)___HTMLTAG_449__HTMLTAG_450___領導者變更(應該很少見)___HTMLTAG_451__HTMLTAG_452___資料庫大小___HTMLTAG_453__HTMLTAG_454___失敗的提案___H TMLTAG_455__HTMLTAG_456__HTMLTAG_457__HTMLTAG_458___檢查指標:____HTMLTAG_460__CODEBLOCK_37__HTMLTAG_461___10。摘要___HTMLTAG_462__HTMLTAG_463___要點___HTMLTAG_464__HTMLTAG_465___✅etcd 叢集:用於生產的 3節點叢集HA___HTMLTAG_468__HTMLTAG_469___✅ 連接埠:2379(客戶端)、2380(對等)___HTMLTAG_472__HTMLTAG_473___✅&nbw;共識:自動領導者選舉與資料複製___HTMLTAG_476__HTMLTAG_477___✅ Quorum:叢集需要 2/3 個節點_______MLHTMLTA14801HT鍵:用於 Patroni 領導者鎖定___HTMLTAG_484__HTMLTAG_485___✅etcdctl:用於管理和故障排除的 CLI工具___HTMLTAG_488__HTMLTAG_489___稍後檢查清單實驗室___HTMLTAG_490__HTMLTAG_491__HTMLTAG_492___etcd 叢集 3 個節點正在執行___HTMLTAG_493__HTMLTAG_494ML 1UMLTA___ML491147____ML&nbcii____ML 3 個成員___HTMLTAG_497__HTMLTAG_498___ 重要:同時啟動或在 30 秒內啟動,以便形成叢集。 ___HTMLTAG_320__HTMLTAG_321__HTMLTAG_322___終端 1 (節點1):___HTMLTAG_324__CODEBLOCK_12__HTMLTAG_325__HTMLTAG_326___2 (節點2):___HTMLTAG_328__CODEBLOCK_13__HTMLTAG_329__HTMLTAG_330___終端3 (節點3):___HTMLTAG_332__CODEBLOCK_1415.檢查日誌____HTMLTAG_334__CODEBLOCK_15__HTMLTAG_335__HTMLTAG_336___成功啟動日誌:____HTMLTAG_338__CODEBLOCK_16__HTMLTAG_339___6。檢查etcd叢集的運作狀況___HTMLTAG_340__HTMLTAG_341___6.1。檢查叢集成員___HTMLTAG_342__CODEBLOCK_17__HTMLTAG_343___6.2。檢查叢集運作狀況___HTMLTAG_344__CODEBLOCK_18__HTMLTAG_345___6.3。檢查端點狀態___HTMLTAG_346__CODEBLOCK_19__HTMLTAG_347__HTMLTAG_348___解釋輸出:___HTMLTAG_350__HTMLTAG_351__HTMLTAG_352__HTMLTAG_353_______ML_____D_____D____:D_____S_____S_____S_____S_____S_&_&&34____4_4_____74__74_74_7_7_70_70_77_70滿滿只有7_7_UUUS_U_U_U_U_UUU4U4U4444:___滿33332__HT目前為Leader___HTMLTAG_355__HTMLTAG_356__HTMLTAG_357___RAFT TERM:選舉任期(每次選舉增加)___HTMLTAG_359__HTMLTAG_360__HTMLTAG_361___HTMLTAG_359__HTMLTAG_360__HTMLTAG_361___HTFTFTFT INDEXetcdctl 端點運作狀況 --cluster 全部健康___HTMLTAG_501__HTMLTAG_502___ 有 1 個領導者和 1 個啟用者啟用___141416_7_ML_ML_ML*服務,並且將在重新啟動時自動啟動___HTMLTAG_505__HTMLTAG_506___ 防火牆允許連接埠 2379 和2380____HTMLTAG_507__HTMLTAG_508__HTMLTAG_509____目前架構___HTMLTAG_5103DEBLOCML課程___HTMLTAG_512__HTMLTAG_513___下一課將安裝 Patroni 並與設定的 etcd 叢集整合。