Используя heartbeat с systemd

Я использую простую установку с heartbeat, обрабатывающим совместно используемую файловую систему, реализованную с drbd и подаваемую через апача. Я использую/etc/ha.d/haresources для определения ха ресурс, этот путь:

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

Это хорошо работает при использовании старого debian sysvinit, но имеет проблему гонки с systemd, потому что остановка апача сделана асинхронно, поэтому когда проблема heartbeat "/etc/init.d/apache2 останавливает" сценарий, в то время как это возвращается очень быстро, apache2 может все еще быть активным и следовательно размонтирование сбоев FS.

Я знаю, что много обходных решений решает эту проблему, но я хотел бы знать, существует ли "чистый" путь, не имея необходимость возвращаться к sysvinit

1
задан 20 September 2015 в 15:28
1 ответ

Сам 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)

Это не проблема systemd. Systemds 'systemctl' также по умолчанию не работает асинхронно. Для этого предназначена опция - no-block . Вы также, вероятно, вообще не используете systemd-tools при выполнении подобных команд в тактовом импульсе.

1
ответ дан 4 December 2019 в 00:00

Теги

Похожие вопросы