Mysql

啟動 ip 之前的 keepalived 延遲

  • April 9, 2021

在keepalived中啟動虛擬IP之前是否可以配置延遲?

背景:我有多個主/主 MySQL 設置。一次只使用一個Master。Keepalived 用於用於 mysql 流量的 VIP。當 VIP 切換到另一個 master 時,應該有 5 秒的延遲,VIP 才會再次出現。確保對方有足夠的時間完成最後的複制流量。

我收到了 Quentin Armitage 的回复:

沒有配置選項明確導致在新主機上配置 VIP 時出現延遲,但是我可以想到有幾種方法可以實現您想要的(當然延遲完全違背了目的VRRP 的目的是盡量減少 VIP 不可用的停機時間)。

選項1。

與維護相比,這將使中斷的停機時間更長(當我假設 keepalived 在現有主伺服器上關閉時)。

將您的 VRRP 實例配置為使用 VRRP 版本 3,advert_int 為 5 秒,並將您的兩個 VRRP 實例配置為分別使用優先級 1 和優先級 2。

如果 keepalived 在原始主伺服器上停止(我假設這是為了維護所做的),它將發送優先級 0 的廣告,並且由於另一個實例的優先級為 1,它將等待 (256 - 1) / 256 * 5 秒(即 4.98 秒)在接管主伺服器之前(將 advert_int 設置為 5.02 將使您獲得足夠接近 5 秒的精確延遲)。這樣做的缺點是,如果出現中斷,備份將需要 15 到 19.98 秒才能接管主伺服器。

選項 2

使用防火牆阻止對 VIP 的訪問,直到新主機準備好。

您可以使用 notify_backup 和 notify_master 腳本來執行此操作,但通知腳本的執行順序不可靠,因此您應該使用 notify_fifo 和腳本來讀取 keepalived.conf(5) 手冊中的 FIFO(請參閱 vrrp_notify_fifo 和 vrrp_notify_fifo_script)頁。在 keepalived 原始碼樹的 doc/samples 目錄中有一個 sample_notify_fifo.sh 腳本,它可能安裝在您的發行版的 /usr/share/doc/keepalived 之類的地方。

當在 FIFO 上接收到備份消息時,添加防火牆規則以將數據包丟棄到 VIP。當在 FIFO 上接收到主消息時,非同步執行一個休眠 5 秒的腳本,然後刪除防火牆規則。

https://groups.io/g/keepalived-users/topic/is_it_possible_to_configure/81962597

引用自:https://serverfault.com/questions/1059781