Cluster

在 systemd 中使用心跳

  • October 11, 2015

我正在使用一個簡單的設置,心跳處理一個由 drbd 實現並通過 apache 提供服務的共享文件系統。我正在使用 /etc/ha.d/haresources 來定義 ha 資源,這樣:

server1 drbddisk::myfs \
Filesystem::/dev/drbd/by-res/myfs::/mnt/myfs::ext4::noatime \
IPaddr::10.0.0.254/24/eth0 apache2

如果使用舊的 debian sysvinit,這可以正常工作,但是 systemd 存在競爭問題,因為停止 apache 是非同步完成的,所以當心跳發出“/etc/init.d/apache2 stop”scrypt 時它會很快返回,apache2 仍然可以處於活動狀態,因此解除安裝 FS 失敗。

我知道很多解決這個問題的方法,但我想知道是否有一種“乾淨”的方式,而不必恢復到 sysvinit

Systemd 本身(在 Debian 8 上)只是使用舊的初始化腳本。

user@server:~> systemctl status apache2
apache2.service - LSB: Apache2 web server
  Loaded: loaded (/etc/init.d/apache2)
  Active: active (running) since Mon 2015-02-12 13:24:34 CEST; 7 weeks 8 days ago
 Process: 24775 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
 Process: 9475 ExecReload=/etc/init.d/apache2 reload (code=exited, status=0/SUCCESS)
 Process: 24799 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)

這不是系統問題。預設情況下,Systemds ‘systemctl’ 也不能非同步工作。這就是--no-block選項的用途。在 heartbeat 中發出類似的命令時,您也可能根本沒有使用 systemd-tools。

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