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

第 8 課:詳細的 Patroni 配置

深入分析 patoni.yml 檔案中的每個部分:叢集的引導、PostgreSQL 參數、身份驗證、標籤和約束。

🔒 DevSecOps — 第 8 課 第 8 課:詳細的 Patroni 設定

PostgreSQL 與 Patroni 和 PostgreSQL 高可用性etcd

第 2 部分:安裝與安裝設定

xdev.asia

目標___HTMLTAG_66__HTMLTAG_67___完成本課程後,您將:HTMLTAG_68__HTMLTAG_69__HTMLTAG_70___深入了解文件的每個部分patroni.yml___HTMLTAG_72__HTMLTAG_73__HTMLTAG_74___配置引導程式選項___HTMLTAG_75__HTMLTAG_76___調整PostgreSQL 參數以實作 HA___HTMLTAG_77__HTMLTAG_78___配置驗證和安全性___HTMLTAG_79__HTMLTAG_80___使用標記與約束___HTMLTAG_81__HTMLTAG_82___最佳化計時參數___HTMLTAG_____83__HTMLTAG841115184_____HT。 Patroni 設定概述___HTMLTAG_86__HTMLTAG_87___1.1。配置層___HTMLTAG_88__HTMLTAG_89___Patroni 有許多設定層:HTMLTAG_90__CODEBLOCK_0__HTMLTAG_91__HTMLTAG_92___優先順序:命令列>環境]設定檔> D___ML4U:命令行>靜態與動態設定___HTMLTAG_96__HTMLTAG_97__HTMLTAG_98___靜態設定(在patroni.yml___HTM LTAG_101_):___HTMLTAG_102__HTMLTAG_103__HTMLTAG_104___節點特定設定(名稱、位址)___HTMLTAG_105__HTMLTAG_106___etcd連線資訊___HTMLTAG_107__HTMLTAG_108___資料目錄、bin目錄___HTMLTAG_109__HTMLTAG_110___需要重新啟動才能套用變更___HTMLTAG_111__HTMLTAG_112__HTMLTAG_113__HTMLTAG_114___動態設定(在DCS):__HTMLTA___11861181186721185621218218572120 PostgreSQL參數___HTMLTAG_119__HTMLTAG_120___引導程式設定____HTMLTAG_121__HTMLTAG_122____TTL、loop_wait、retry_timeout___HTMLTAG_123__HTMLTAG_124______可以更新執行時間:___12G_25編輯配置___HTMLTAG_126__HTMLTAG_127__HTMLTAG_128__HTMLTAG_129___2。部分:範圍和命名空間___HTMLTAG_130__HTMLTAG_131___2.1。範圍(群集名稱)___HTMLTAG_132__CODEBLOCK_1______HTMLTAG_133__HTMLTAG_134___範圍是DCS中叢集的唯一名稱.___HTMLTAG_136__HTMLTAG_137是DCS中叢集的唯一名稱.___HTMLTAG_136__HTMLTAG_137__HTMLTAG_138_____HTMLTAG_137__HTMLTAG_138_____HTMLTAG_137__HTMLTAG_138___意義:___HTMLTAG_140__HTMLTAG_141__HTMLTAG_142___同一叢集中的所有節點必須具有相同的範圍____HTMLTAG_144__HTMLTAG_145__HTMLTAG_146___DC密鑰,前綴為範圍:/service/postgres/...___HTMLTAG_148__HTMLTAG_149__HTMLTAG_150___允許相同 etcd叢集上有多個叢集____HTMLTAG_151__HTMLTAG_152__HTMLTAG_153__HTMLTAG_154___最佳做法:___HTMLTAG_156__CODEBLOCK_2__HTMLTAG_157___2.2。命名空間____HTMLTAG_158__CODEBLOCK_3__HTMLTAG_159__HTMLTAG_160___命名空間是DCS中所有密鑰的前綴.___HTMLTAG_162__HTMLTAG_163__HTMLTAG_密且完整的密鑰鑰結構:___HTMLTAG_166__CODEBLOCK_4__HTMLTAG_167__HTMLTAG_168___多個簇範例:___HTMLTAG_170__CODEBLOCK_5__HTMLTAG_171___3。部分:節點資訊___HTMLTAG_172__HTMLTAG_173___3.1。節點名稱____HTMLTAG_174__CODEBLOCK_6__HTMLTAG_175__HTMLTAG_176___要求:____HTMLTAG_178__HTML TAG_179__HTMLTAG_180___在叢集中唯一____HTMLTAG_181__HTMLTAG_182___引導後恆定___HTMLTAG_183__HTMLTAG_184___應使用主機名稱或FQDN

例如命名 c約定:___HTMLTAG_190__CODEBLOCK_7__HTMLTAG_191___3.2。主機資訊

___CODEBLOCK_8__HTMLTAG_193___Patroni 自動偵測主機名,但可以在必要時覆寫。 ___HTMLTAG_194__HTMLTAG_195___4。部分:REST API___HTMLTAG_196__HTMLTAG_197___4.1。基本組態___HTMLTAG_198__CODEBLOCK_9__HTMLTAG_199__HTMLTAG_200___參數:___HTMLTAG_202__HTMLTAG_203__HTMLTAG_204__HTMLTAG_202__HTMLTAG_203__HTMLTAG_204__HTMLTAG_205____list0. all介面)___HTMLTAG_207__HTMLTAG_208__HTMLTAG_209___connect_address:其他節點用於連接的位址____HTMLTAG_2 11__HTMLTAG_212__HTMLTAG_213___4.2.驗證____HTMLTAG_214__CODEBLOCK_10__HTMLTAG_215__HTMLTAG_216___何時需要驗證? :__HTMLTAG_218__HTMLTAG_219__HTMLTAG_220___REST API公開互聯網___HTMLTAG_221__HTMLTAG_222___合規性要求___HTMLTAG_223__HTMLTAG_224___多租戶環境___HTMLTAG_225__HTMLTAG_226 _HTMLTAG_227__HTMLTAG_228___與curl一起使用:___HTMLTAG_230__CODEBLOCK_11__HTMLTAG_231___4.3。 SSL/TLS___HTMLTAG_232__CODEBLOCK_12__HTMLTAG_233__HTMLTAG_234___產生自簽名憑證:___HTMLTAG_236__CODEBLOCK_13__HTMLTAG_23REST___HTMLTAG_236__CODEBLOCK_13__HTMLTAG_23REST___4.4. API端點___HTMLTAG_238__HTMLTAG_239__HTMLTAG_240___運行狀況檢查端點:___HTMLTAG_242__CODEBLOCK_1 4__HTMLTAG_243__HTMLTAG_244___管理端點:

CODEBLOCK_15__HTMLTAG_247___5。部分:引導___HTMLTAG_248__HTMLTAG_249___5.1。 DCS設定____HTMLTAG_250__CODEBLOCK_16__HTMLTAG_251__HTMLTAG_252___TTL(生存時間):___HTMLTAG_254__CODEBLOCK_17__HTMLTAG_255_____MLG_255__6HTTAG_255__1TAG_255__610G_255_____間___HTMLTAG_257__HTMLTAG_258___如果領導者未在TTL內續訂→鎖定過期___HTMLTAG_259__HTMLTAG_260__HTMLTAG_261___權衡:__HTMLTAG_263__HT​​MLTAG:HTMLTAG_263__HTTAG_263__4124263__41_263__4124263__4ML低 TTL(10 秒):快速故障轉移,但誤報風險____HTMLTAG_265__HTMLTAG_266___高 TTL(60秒):較穩定,但時間較長停機時間____HTMLTAG_267__HTMLTAG_268__HTMLTAG_269__HTMLTAG_270__HTMLTAG_271___推薦__HTMLTAG_272:30秒___HTMLTAG_273__HTMLTAG_273__HT TAG_275__HTMLTAG_276___loop_wait:HTMLTAG_278__CODEBLOCK_18__HTMLTAG_279__HTMLTAG_280___運行狀況檢查之間的時間間隔___HTMLTAG_281__HTMLTAG_281 G_282___領導者更新鎖定每loop_wait秒___HTMLTAG_285__HTMLTAG_286__HTMLTAG_287___推薦:10秒(1/3TM的TTL)H_288:10秒(1/3TM LTAG_289__HTMLTAG_290__HTMLTAG_291__HTMLTAG_292___retry_timeout:____HTMLTAG_294__CODEBLOCK_19__HTMLTAG_295__HTMLTAG_296___DCS操作逾時___HTMLTAG_297__HTMLTAG_298___如果 DCS 在逾時內未回應 →考慮失敗___HTMLTAG_299__HTMLTAG_300__HTMLTAG_301___推薦:10秒___HTMLTAG_303__HTMLTAG_304__HTMLTAG_305__HTMLTAG_306_____大滯後:___HTMLTAG_308__CODEBLOCK_20__HTMLTAG_309__HTMLTAG_310___有資格升級的最大複製延遲___HTMLTAG_311__HTMLTAG_312___有滯後的副本>閾值將是明智的副本g 選擇為主___HTMLTAG_313__HTMLTAG_314__HTMLTAG_315___0 = 無限制(可以升級任何副本)_HTMLTAG_317__HTMLTAG_318__HTMLTAG_319______推薦___MLTAG_320_______實現零資料遺失首選項___HTMLTAG_321__HTMLTAG_322__HTMLTAG_323__HTMLTAG_324___synchronous_mode___HTMLTAG_325 _:_HTMLTAG_326__CODEBLOCK_21__HTMLTAG_327__HTMLTAG_328__HTMLTAG_329____false
:非同步複製(預設)HTMLTAG_331__HTMLTAGML_332HTMLTAGMLG13___4___ML 4:啟用同步複製____HTMLTAG_335__HTMLTAG_336__HTMLTAG_337___synchronous_mode_strict
:嚴格同步模式(如果不同步則不會寫入)待機)HTMLTAG_339__HTMLTAG_34014140141420145____20140140140145_20140145。 PostgreSQL 引導參數___HTMLTAG_342__CODEBLOCK_22__HTMLTAG_343__HTMLTAG_344___use_pg_rewind:HTMLTAG_346__CODEBLOCK_23__HTMLTAG1_347HTMLTAGML48HT______48]啟用自動恢復___HTMLTAG_349__HTMLTAG_350___更快恢復重新加入叢集___HTMLTAG_351__HTMLTAG_352__HTMLTAG_353___需要:wal_log_hints = on或資料校驗和___HTMLTAG_357__HTMLTAG_358__HTMLTAG_359__HTMLTAG_360___use_slots___HTMLTAG_361 __:__HTMLTAG_362__CODEBLOCK_24__HTMLTAG_363__HTMLTAG_364___動態建立複製槽____HTMLTAG_365__HTMLTAG_366___防止複製時刪除WAL滯後___HTMLTAG_367__HTMLTAG_368__HTMLTAG_369____推薦:正確___HTMLTAG_371__HTMLTAG_372__HTMLTAG_373___5.3。 initdb 選項___HTMLTAG_374__CODEBLOCK_25__HTMLTAG_375__HTMLTAG_376___常用選項:HTMLTAG_378__HTMLTAG_379__HTMLTAG_380__HTMLTAG_381___1]ML_HT (UTF8推薦)HTMLTAG_383__HTMLTAG_384__HTMLTAG_385___locale:系統區域設定___HTMLTAG_387__HTMLTAG_388__HTM LTAG_389___data-checksums:啟用頁面校驗和(偵測損壞)HTMLTAG_391__HTMLTAG_392__HTMLTAG_393___auth-host___HTM LTAG_394:主機連線的預設驗證方法____HTMLTAG_395__HTMLTAG_396__HTMLTAG_397___auth-local:本地的預設驗證方法連線 HTMLTAG_399__HTMLTAG_400__HTMLTAG_401__HTMLTAG_402___注意:initdb僅當引導集群時間為 head 時運行。 HTMLTAG_406__HTMLTAG_407___5.4。 pg_hba 設定___HTMLTAG_408__CODEBLOCK_26__HTMLTAG_409__HTMLTAG_410___最佳實務:HTMLTAG_412__HTMLTAG_413__HTMLTAG_414✅使用scram-sha-256(大多數安全)HTMLTAG_417__HTMLTAG_418✅ 特定 IP 位址/子網路___HTMLTAG_419__HTMLTAG_420✅為不同目的分開使用者___HTMLTAG_421__HTMLTAG_422❌避免信任方法___HTMLTAG_425__HTMLTAG 426❌避免0.0.0.0/0除非必要___HTMLTAG_429__HTMLTAG_430__HTMLTAG_431___5.5。鞋子任務___HTMLTAG_441__HTMLTAG_442__HTMLTAG_443___application:應用程式資料庫使用者___HTMLTAG_445__HTMLTAG_446__HTMLTAG_447___monitoring:Prometheus匯出程序,等___HTMLTAG_449__HTMLTAG_450__HTMLTAG_451___複製:已由Patroni處理____HTMLTAG_453__HTMLTAG_454__HTMLTAG_455___5.6。引導後腳本___HTMLTAG_456__CODEBLOCK_28__HTMLTAG_457__HTMLTAG_458___post_bootstrap:在引導叢集後執行(僅在主資料庫上)post_in _462__HTMLTAG_463__HTMLTAG_464___範例腳本(/etc/patroni/scripts/post_bootstrap.sh):___HTMLTAG_46896DEBL_F__469___MLTAG_4689667_469____MLTAG_4689。部分:PostgreSQL___HTMLTAG_470__HTMLTAG_471___6.1。連線設定___HTMLTAG_472__CODEBLOCK_30__HTMLTAG_473__HTMLTAG_474___listen:PostgreSQL監聽的介面connect_address:複製連線位址proxy_address:虛擬 IP (HAProxy、pgBouncer)___HTMLTAG_480__HTTAG_481___12。資料與二進位目錄___HTMLTAG_482__CODEBLOCK_31__HTMLTAG_483__HTMLTAG_484___注意:___HTMLTAG_486__HTMLTAG_487__HTMLTAG_4 88__HTMLTAG_489___data_dir:放置保存資料庫檔案___HTMLTAG_491__HTMLTAG_492__HTMLTAG_493___bin_dir:儲存PostgreSQL 二進位檔案的位置(psql、pg_ctl 等)___HTMLTAG_495__HTMLTAG_496__HTMLTAG_497___config_dir:如果設定檔在其他位置資料目錄____HTMLTAG_4999__HTMLTAG_50011630001175000117500011750001%。驗證____HTMLTAG_502__CODEBLOCK_32__HTMLTAG_503__HTMLTAG_504___replication:串流複製的使用者超級使用者:Patroni 用於管理PostgreSQLrewind:使用者pg_rewind(可選,可以使用超級使用者)___HTMLTAG_510__HTMLTAG_511__HTMLTAG_512___安全最佳實務:機密將密碼管理器中。 ___HTMLTAG_514__HTMLTAG_515___6.4。運行時參數____HTMLTAG_516__CODEBLOCK_33__HTMLTAG_517__HTMLTAG_518___記憶體大小指南:___HTMLTAG_520__CODEBLOCK_34__HTMLTAG_521___6.5。其他 pg_hba 條目___CODEBLOCK_35__HTMLTAG_523___與bootstrap.pg_hba.___HTMLTAG_526__HTMLTAG_527___MLTAG_5276.6 中的條目合併。回呼腳本___HTMLTAG_528__CODEBLOCK_36__HTMLTAG_529__HTMLTAG_530___on_role_change 範例:HTMLTAG_532__CODEBLOCK_37__HTMLTAG_533___MLTAG_533___6.7。自訂設定檔___HTMLTAG_534__CODEBLOCK_38__HTMLTAG_535___包含自訂設定檔.HTMLTAG_536__HTMLTAG_537__HTMLTAG_538___範例 HTMLTAG_539(custom.conf):___HTMLTAG_542__CODEBLOCK_39__HTMLTAG_543___6.8。故障轉移時刪除資料目錄___HTMLTAG_544__CODEBLOCK_40__HTMLTAG_545__HTMLTAG_546___小心:如果恢復失敗,請刪除資料目錄。 ___HTMLTAG_548__HTMLTAG_549___7。部分:標籤___HTMLTAG_550__HTMLTAG_551___7.1。故障轉移標籤
tags:
nofailover: false
noloadbalance: false
clonefrom: false
nosync: false

無故障轉移:____HTMLTAG_556__CODEBLOCK_42__HTMLTAG_557__HTMLTAG_558___用例:副本僅用於報告,分析.___HTMLTAG_5601HTMLTAG_TM561 AG_562___noloadbalance:___HTMLTAG_564__CODEBLOCK_43__HTMLTAG_565__HTMLTAG_566___用例:節點正在維護或已維護問題._HTMLTAG_568__HTMLTAGML 9__HTMLTAG_570___複製自:HTMLTAG_572__CODEBLOCK_44__HTMLTAG_573__HTMLTAG_574___HT:指定節點備份__HHTMLTAG_57611UHTMLTAG_575:指定節點備份__HHTMLTAG_57675MLTAG4 AG_578___nosync:__HTMLTAG_580__CODEBLOCK_45__HTMLTAG_581__HTMLTAG_582___用例:資料中心中的非同步複製其他.HTMLTAG]584__HTMLTAG1257.275757570____TAG.自訂標記___HTMLTAG_586__CODEBLOCK_46__HTMLTAG_587__HTMLTAG_588___用例:___HTMLTAG_590__HTMLTAG _591__HTMLTAG_592___監控與標記___HTMLTAG_593__HTMLTAG_594___自訂故障轉移邏輯___HTMLTAG_595__HTMLTAG_596___地理路由____HTM LTAG_597__HTMLTAG_598____多租戶識別____HTMLTAG_599__HTMLTAG_600__HTMLTAG_601___7.3.優先權標記____HTMLTAG_602__CODEB LOCK_47__HTMLTAG_603__HTMLTAG_604___範例叢集:___HTMLTAG_606__CODEBLOCK_48__HTMLTAG_607___8。部分:看門狗___HTMLTAG_608__HTMLTAG_609___8.1。基本看門狗設定___HTMLTAG_610__CODEBLOCK_49__HTMLTAG_611__HTMLTAG_612___模式:HTMLTAG_614__HTMLTAG_615__HTMLTAG_616__HTMLTAG_617417615__HTMLTAG_616__HTMLTAGML17____47____4 19__HTMLTAG_620__HTMLTAG_621___自動:如果可用則使用___HTMLTAG_623__HTMLTAG_624__HT MLTAG_625___必需:如果看門狗不可用則失敗___HTMLTAG_627__HTMLTAG_628__HTMLTAG_629___8.2。硬體看門狗___HTMLTAG_630__HTMLTAG_631__HTMLTAG_632___檢查看門狗可用性:___HTMLTAG_634__CODEBLOCK_50______HTM LTAG_635__HTMLTAG_636___載入看門狗module:__HTMLTAG_638__CODEBLOCK_51__HTMLTAG_639__HTMLTAG_640___向postgres 使用者授予存取權限:____HTMLTAG_642__CODEBLOCK_52__HTMLTAG_643___8.3。為什麼要使用看門狗? ___HTMLTAG_644__HTMLTAG_645__HTMLTAG_646___腦裂預防:___HTMLTAG_648__HTMLTAG_649__HTMLTAG_650___Patroni 掛起,但 PostgreTAG_649__HTMLTAG_650___Patroni 掛起,但 PostgreTAG_649__HTMLTAG_650___Patroni 掛起,但 PostgreSQL 仍掛起執行問題:VMLTAG152D___ML_SQL 2_ML但節點活著___HTMLTAG_653__HTMLTAG_654___看門狗重新啟動節點→防止殭屍主要____HTMLTAG_655__HTMLTAG_656__HTMLTAG_657__HTMLTAG_658___流程_____657__HTMLTAG_658___流程___HTMLTAG_____________HT部分:同步複製___HTMLTAG_662__HTMLTAG_663___9.1。啟用同步模式

bootstrap:
dcs:
synchronous_mode: true
synchronous_mode_strict: false
synchronous_node_count: 1
HTMLTAG_665__HTMLTAG_666___synchronous_mode:啟用同步複製synchronous_mo de_strict:主伺服器拒絕不同步的寫入待機synchronous_node_count:同步待機數量(≥1)HTMLTAG_672__HTMLTAG_673______9.2。同步模式變體____HTMLTAG_674__HTMLTAG_675__HTMLTAG_676___異步(預設):HTMLTAG_678__CODEBLOCK_55__HTMLTAG_679__HTMLTAG_678__CODEBLOCK_55__HTMLTAG_679__HTMLTAG_680_______81__HTMLTAG_682___如果主資料庫發生故障,則有資料遺失的風險___HTMLTAG_683__HTMLTAG_684__HTMLTAG_685__HTMLTAG_686___同步:HTMLTAG_688__CODEBLOC_56119688__CO個備用資料庫確認___HTMLTAG_691__HTMLTAG_692___如果沒有備用資料庫則降級為非同步___HTMLTAG_693__HTMLTAG_694__HTMLTAG_695__HT MLTAG_696___嚴格同步:HTMLTAG_698__CODEBLOCK_57__HTMLTAG_699__HTMLTAG_700___REFUSE 不同步写入待机____HTMLTAG_701__HTMLTAG_702____零数据丢失保证____HTMLTAG_703__HTMLTAG_704____风险可用性影响___HTMLTAG_705__HTMLTAG_706__HTMLTAG_707___9.3。多個同步備用資料庫CODEBLOCK_58__HTMLTAG_709___PostgreSQL 18 支援:HTMLTAG_710__CODEBLOCK_59__HTMLTAG_711___10。完整設定範例___HTMLTAG_712__HTMLTAG_713___10.1。生產級 patoni.yml___HTMLTAG_714__CODEBLOCK_60__HTMLTAG_715___10.2。環境變數___HTMLTAG_716__CODEBLOCK_61__HTMLTAG_717__HTMLTAG_718___在systemd中載入:HTMLTAG_720__CODEBLOCK_62__HTMLTAG_721___HTMLTAG_720__CODEBLOCK_62__HTMLTAG_721___HTMLTAG_720__CODEBLOCK_62__HTMLTAG_721___HTMLTAG_720__CODEBLOCK_62__HTMLTAG_721___HT11。摘要___HTMLTAG_722__HTMLTAG_723___要點___HTMLTAG_724__HTMLTAG_725✅ 設定層:命令列 >環境>設定檔> DCS___HTMLTAG_728__HTMLTAG_729✅ 靜態設定:節點特定,需重新啟動___HTMLTAG 732__HTMLTAG_733✅ 動態配置:叢集範圍內,更新通過patronictl edit-config___HTMLTAG_737__HTMLTAG_738__HTMLTAG_739✅Bootstrap:一次性初始化設定___HTMLTAG_742 HTMLTAG_743✅ 標籤:控制故障轉移行為與節點角色___HTMLTAG_746__HTMLTAG_747✅&nbsp______HTMLTAG 748___同步複製:持久性與持久性之間的平衡可用性____HTMLTAG_750__HTMLTAG_751___最佳實務清單___HTMLTAG_752__HTMLTAG_753__HTMLTAG_754 使用環境變數密碼___HTMLTAG_755__HTMLTAG_756___啟用use_pg_rewind和wal_log_hints: on___HTMLTAG_760__HTMLTAG_761__HTMLTAG_762___設定適當的ttl,loop_wait,HTMLTAGtime_765___loop_wait,HTMLTAGtime_7672 ut___HTMLTAG_768__HTMLTAG_769__HTMLTAG_770 設定 maximum_lag_on_failover 零資料loss___HTMLTAG_773__HTMLTAG_774____MLTAG_774 initdb___HTMLTAG_777__HTMLTAG_778 設定通知回呼腳本___HTMLTAG_779__HTMLTAG_780___設定看門狗腦裂預防___HTMLTAG_781__HT MLTAG_782 使用scram-sha-256 驗證___HTMLTAG_785__HTMLTAG_786___記錄自訂標記及其意義___HTMLTAG_787__HTMLTAG_788___設定檔定期備份___HTMLTAG_789__HTMLTAG_790__HTMLTAG_791___準備第9課____HTMLTAG_792__HTMLTAG_793___第9課將使用標準設定首次引導叢集取得:HTMLTAG_794__HTMLTAG_795__HTMLTAG_796___S在 3 個節點上啟動 Patroni___HTMLTAG_797__HTMLTAG_798___驗證叢集形成____HTMLTAG_799__HTMLTAG_800___測試基本操作____HTMLTAG_801__HTMLTAG_802___解決常見問題____HTMLTAG_803HTMLTAG_803