Просмотрите текущее состояние Keepalived

Смотрите на эту страницу, она документирует пошаговый процесс. Это выглядит действительно сложным, но я много раз делал это без проблемы.

http://www.sslshopper.com/move-or-copy-an-ssl-certificate-from-a-windows-server-to-another-windows-server.html

Обновление: Найденный другой ссылкой, которая является точно тем же процессом, только без снимков экрана: http://www.webhostingtalk.com/showthread.php?t=403531

6
задан 24 June 2015 в 07:59
6 ответов

Вы можете использовать команду notify для записи файла состояния.

       # for ANY state transition.
       # "notify" script is called AFTER the
       # notify_* script(s) and is executed
       # with 3 arguments provided by keepalived
       # (ie don’t include parameters in the notify line).
       # arguments
       # $1 = "GROUP"|"INSTANCE"
       # $2 = name of group or instance
       # $3 = target state of transition
       #     ("MASTER"|"BACKUP"|"FAULT")
       notify /path/notify.sh

Создать сценарий уведомления, например:

#!/bin/bash
# notify.sh

echo $1 $2 is in $3 state > /var/run/keepalive.$1.$2.state

И сценарий получения состояния, например:

#!/bin/bash
# getstate.sh

cat /var/run/keepalive.*.*.state
7
ответ дан 2 December 2019 в 23:59

Дамп текущего состояния может быть сделан путем отправки USR2 сигнал к родительский процесс keepalived :

kill -USR2 `cat /var/run/keepalived.pid`

Посмотрите результат в /tmp/keepalived.stats.

Примечание: , если SELinux используется ( CentOS 7), он не позволяет писать в этот файл. Это может быть обходное решение с этим:

touch /tmp/keepalived.stats
chmod go+w /tmp/keepalived.stats
semanage fcontext -a -t keepalived_var_run_t /tmp/keepalived.stats
restorecon /tmp/keepalived.stats
1
ответ дан 2 December 2019 в 23:59

Считывание текущего статуса через SNMP оказалось для меня самым надежным. Чтобы включить это, вы должны запустить keepalived с поддержкой snmp:

  • добавить -x к параметрам deamon (см. / Etc / sysconfig / keepalived в системах на базе RedHat)

и установить snmpd.

Затем вы можете надежно запросить статус через

snmpget -Oq -Ov -v2c -cpublic localhost KEEPALIVED-MIB::vrrpInstanceState.1

Это также можно сделать через скрипты уведомления, но они не всегда срабатывают, в результате чего файл состояния не синхронизируется с реальностью.

6
ответ дан 2 December 2019 в 23:59

В версии 1.3.0 в keepalived добавлен интерфейс DBus, который можно включить с помощью параметра enable_dbus в блоке global_defs файла конфигурации. (Однако интерфейс должен быть включен с помощью параметра сборки - enable-dbus во время configure , что может быть не так, если вы используете двоичный пакет.)

Вы можете получить доступ к интерфейсу DBus с помощью любого клиента / библиотеки DBus (например, dbus-send , gdbus , qdbus ). В качестве примера я использую systemd busctl , потому что у него очень хороший интерфейс:

# busctl tree org.keepalived.Vrrp1
└─/org
  └─/org/keepalived
    └─/org/keepalived/Vrrp1
      ├─/org/keepalived/Vrrp1/Instance
      │ └─/org/keepalived/Vrrp1/Instance/eth0
      │   └─/org/keepalived/Vrrp1/Instance/eth0/1
      │     └─/org/keepalived/Vrrp1/Instance/eth0/1/IPv4
      └─/org/keepalived/Vrrp1/Vrrp

Доступны два интерфейса, глобальный org.keepalived.Vrrp1.Vrrp на / org / keepalived / Vrrp1 / Vrrp :

# busctl introspect org.keepalived.Vrrp1 /org/keepalived/Vrrp1/Vrrp org.keepalived.Vrrp1.Vrrp
NAME                      TYPE      SIGNATURE RESULT/VALUE FLAGS
.CreateInstance           method    ssuu      -            -
.DestroyInstance          method    s         -            -
.PrintData                method    -         -            -
.PrintStats               method    -         -            -
.ReloadConfig             method    -         -            -
.VrrpReloaded             signal    -         -            -
.VrrpStarted              signal    -         -            -
.VrrpStopped              signal    -         -            -

И для каждого экземпляра VRRP, интерфейс org.keepalived.Vrrp1.Instance на путях согласно этому шаблону / org / keepalived / Vrrp1 / Instance / / / org.keepalived.Vrrp1.Instance . Для экземпляра IPv4 VRRP с идентификатором 1 на eth1 с именем my-instance , мы получаем следующее:

# busctl introspect org.keepalived.Vrrp1 /org/keepalived/Vrrp1/Instance/eth0/1/IPv4 org.keepalived.Vrrp1.Instance
NAME                          TYPE      SIGNATURE RESULT/VALUE   FLAGS
.SendGarp                     method    -         -              -
.Name                         property  s         "my-instance"  emits-change
.State                        property  (us)      2 "Master"     emits-change
.VrrpStatusChange             signal    u         -              -

Чтобы получить состояние этого конкретного экземпляра, мы можем использовать следующую команду

# busctl get-property org.keepalived.Vrrp1 /org/keepalived/Vrrp1/Instance/br_vrrp/67/IPv4  org.keepalived.Vrrp1.Instance State
(us) 2 "Master"

. Возвращаемое свойство - СТРУКТУРА, с кодом состояния и понятным для человека именем. Состояния: 0 «Инициализация» , 1 «Резервное копирование» , 2 «Главный» , 3 «Ошибка» , 4 «Перейти к мастеру» и 98 «Перейти к ошибке» . Последние три состояния являются внутренними и официальными состояниями RFC 2338.

Если вы используете несколько процессов keepalived и устанавливаете параметр instance , или если вы используете функцию сетевого пространства имен с пространством имен префикс пути изменяется / org / keepalived / Vrrp1 / / .

2
ответ дан 2 December 2019 в 23:59

Если вы введете команду:

journalctl -u keepalived

, у него будет перечисленное состояние:

Jul 12 13:45:52 vmt007 Keepalived_vrrp[14335]: VRRP_Instance(VI_INT) Entering MASTER STATE

на стороне ведомого вы увидите:

Jul 12 13:45:51 vmt008 Keepalived_vrrp[3569]: VRRP_Instance(VI_INT) Entering BACKUP STATE
4
ответ дан 2 December 2019 в 23:59

Я использую эту простую строку:

service keepalived status | tail -1

Извините, но это не сработает, если в последней строке возникнут ошибки.

0
ответ дан 29 May 2020 в 11:48

Теги

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