Pacemaker 通過 admin_epoch, epoch, num_updates 三元組版本號管理 CIB 配置一致性。本文基於實測數據,詳細解析版本遞增規則、網絡分區下的合併行為、以及資源代理(RA)開發的關鍵注意點。
| 字段 | 含義 | 遞增觸發條件 |
|---|---|---|
| admin_epoch | 管理員時代,人工干預標識 | 極少變更,用於廢棄舊配置 |
| epoch | 配置時代 | 持久化配置變更(cluster屬性、資源定義、節點forever屬性) |
| num_updates | 更新計數 | 狀態變更(節點存活、資源啟停、reboot屬性) |
比較規則:元組字典序比較,admin_epoch > epoch > num_updates。節點加入時,版本最高者成為配置來源,覆蓋其他節點。
epoch=48304, num_updates=4, admin_epoch=2crm_attribute --type crm_config -s set1 --name foo1 -v "1" # epoch: 48304 → 48305, num_updates: 4 → 0
重複設置相同值,版本號不變。
crm_attribute -N hostname -l forever -n foo2 -v 2 # epoch +1
crm_attribute -N hostname -l reboot -n foo3 -v 2 # num_updates +1
風險:未獲 quorum 分區的配置可能覆蓋有效配置。
規律:DC 協商會導致 epoch +1;分區恢復傾向保留分區前 DC。
mysql_REPL_INFO)crm_attribute 返回碼並重試(參考 PostgreSQL RA 實現)