web-dev-qa-db-ja.com

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

これは古いdebiansysvinitを使用している場合は正常に機能しますが、Apacheの停止は非同期で行われるため、systemdで競合の問題が発生します。そのため、ハートビートが非常に高速に戻るときに「/etc/init.d/Apache2 stop」暗号を発行すると、Apache2は引き続き使用できます。アクティブであるため、FSのアンマウントは失敗します。

この問題を解決するための多くの回避策を知っていますが、sysvinitに戻らなくても「クリーンな」方法があるかどうかを知りたいです。

Systemd自体(Debian 8上)は古き良きinitスクリプトを使用しているだけです。

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)

これはsystemdの問題ではありません。 Systemdsの「systemctl」もデフォルトでは非同期的に機能しません。それが--no-blockオプションはです。また、ハートビートでそのようなコマンドを発行するときは、おそらくsystemd-toolsをまったく使用していません。

1
Marco