У меня есть два маршрутизатора Linux (RHEL 7), участвующих в резервной конфигурации VRRP, предоставляемой пакетом keepalived версии 2.0.20. Эти два маршрутизатора использовали RHEL 6 и поддержку активности версии 2.0.16, но мы недавно обновили их до вышеупомянутых версий.
Перед обновлением у меня был сценарий, который я мог запустить на резервном маршрутизаторе, который заставил бы маршрутизатор взять на себя роль главного маршрутизатора. Сценарий извлекает значение приоритета текущего главного маршрутизатора, затем увеличивает свой собственный приоритет до 1 выше, а затем перезапускает службу поддержки активности. Это приведет к тому, что резервный маршрутизатор станет главным.
Сценарий определит значение текущего главного маршрутизатора, выполнив следующие команды:
kill -s $(keepalived --signum=DATA) $(cat /var/run/keepalived.pid)
vrrpPriority='more /tmp/keepalived.data | grep -m1 "Master priority" | awk '{print $4}''
Теперь, когда мы обновились, похоже, что первая команда больше ничего не делает. Кажется, что команда выполняется без ошибок, но я никогда не получаю сгенерированный файл в /tmp/keepalived.data. Таким образом, вторая команда не выполняется, поскольку этот файл не существует.
Есть ли лучший или другой способ определить значение приоритета текущего главного маршрутизатора?
Другое отличие состоит в том, что когда мы работали в RHEL 6, keepalived выполнялся как сценарий выскочки, тогда как сегодня keepalived работает как служба systemd. Все остальные аспекты поддержки активности работают правильно.
Я смог заставить это работать. В процессе устранения неполадок я обнаружил, что selinux не позволяет Keepalived сбрасывать свое состояние в каталог / tmp. После проработки проблем с selinux и создания необходимой политики selinux он начал работать, как ожидалось.