Haproxy
停止前始終保存 HAProxy 伺服器狀態
我們有時使用管理套接字禁用 HAProxy 中的特定伺服器(在 RedHat 7 上執行,但在本地編譯,因為 RedHat 不提供 1.8),我們希望在伺服器重新啟動時保持狀態。我們將 HAProxy 設置為從帶有 的文件中載入其狀態
server-state-file
,但我們需要記住每次進行更改時都保存狀態文件。有沒有一種好方法可以確保每次伺服器停止時都保存狀態?如果 systemd 有
ExecPreStop=
,我們可以在/etc/systemd/system
不修改分佈式單元文件的情況下將其從文件中包含在內,但 systemd 開發人員表示他們認為不需要該指令。
我們最終創建了一個“假”服務,只有一個依賴於的停止操作,
haproxy.service
因此它將ExecStop
在 HAProxy 停止之前執行。haproxy-state.service:
[Unit] Description=Save HAProxy State Before Service Stop After=haproxy.service Requires=haproxy.service [Service] Type=oneshot RemainAfterExit=true ExecStop=/bin/sh -c "/usr/bin/socat /run/haproxy/control.socket - <<< \"show servers state\" > /var/lib/haproxy/last_state" [Install] WantedBy=multi-user.target haproxy.service
它需要在之後,所以它會 在之前
haproxy.service
停止。它需要這樣才能在 HAProxy 執行時始終啟動。WantedBy
這並不完美,因為如果在 systemd 停止下一個服務之前有很長的暫停,狀態可能會改變,但這是我們將承擔的風險。