Cluster
在 systemd 中使用心跳
我正在使用一個簡單的設置,心跳處理一個由 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。