Рейтинг:0

кардиостимулятор - что не так с ipsrcaddr?

флаг cn

Я хочу реализовать «плавающий» IP между двумя узлами, используя pcs+corosync+pacemaker. Я прочитал десятки руководств и документации ClusterLabs, но, похоже, я сделал что-то не так. Помоги мне, пожалуйста.

Я хочу следующую вещь - плавающий IP и его маршрут SRC запускаются на узле1. Если узел 1 теряет сетевое подключение к узлу 2, узел 1 должен немедленно удалить плавающий IP-адрес и восстановить маршрут по умолчанию. node2 поднимает эти вещи. И наоборот, когда node1 возвращается. Статические IP-адреса должны быть целыми в любом случае.

узел 1 статический 192.168.80.21/24

node2 статический 192.168.80.22/24

плавающий IP 192.168.80.23/24

шлюз 192.168.80.1/24

Чистый 64-битный Debian 10 с последними обновлениями, стандартными кардиостимуляторами, без стороннего или пользовательского программного обеспечения

/etc/hosts на обоих узлах:

127.0.0.1 локальный хост.локальный домен локальный хост
192.168.80.21 узел1
192.168.80.22 узел2

# Следующие строки желательны для хостов с поддержкой IPv6
::1 локальный хост ip6-localhost ip6-loopback
ff02::1 ip6-все узлы
ff02::2 ip6-все маршрутизаторы

# ip р
по умолчанию через 192.168.80.1 dev ens192
10.10.10.2 dev gre_node2 ссылка на область ядра proto src 10.10.10.1 (на этот раз, я думаю, не имеет значения)
192.168.80.0/24 dev ens192 ссылка на объем

Служба pcsd запущена, corosync и кардиостимулятор включены в systemD, но в это время остановлены

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

На node1 делается следующее:

# # шт статус
Ошибка: кластер в данный момент не работает на этом узле


# шт кластер уничтожить
Отключение служб кардиостимулятора/коросинхронизации...
Уничтожение всех оставшихся служб...
Удаление всех файлов конфигурации кластера...


# pcs host auth node1 node2
Имя пользователя: хакластер
Пароль:
node2: Авторизованный
node1: Авторизованный


# Настройка кластера ПК my_cluster node1 node2 --force
Для хоста «node1» не указаны адреса, используется «node1»
Не указаны адреса для хоста «node2», используется «node2»
Уничтожение кластера на хостах: 'node1', 'node2'...
node1: успешно уничтоженный кластер
node2: успешно уничтоженный кластер
Запрос на удаление «настроек pcsd» с «node1», «node2»
node1: успешное удаление файла «Настройки pcsd»
node2: успешное удаление файла «Настройки pcsd»
Отправка «corosync authkey», «pacemaker authkey» на «node1», «node2»
node2: успешное распространение файла «corosync authkey»
node2: успешное распространение файла «ключ авторизации кардиостимулятора»
node1: успешное распространение файла «corosync authkey»
node1: успешное распространение файла «ключ авторизации кардиостимулятора»
Синхронизация SSL-сертификатов pcsd на узлах 'node1', 'node2'...
node1: успех
node2: успех
Отправка «corosync.conf» на «node1», «node2»
node1: успешное распространение файла «corosync.conf»
node2: успешное распространение файла «corosync.conf»
Кластер успешно настроен.

# pcs кластер start node1 node2 - OK
node2: Запуск кластера...
node1: Запуск кластера...


# набор свойств pcs stonith-enabled=false - OK 

# набор свойств pcs no-quorum-policy=ignore - OK

# статус ПК (на обоих узлах):

Имя кластера: my_cluster
Стек: коросинк
Текущий контроллер домена: node1 (версия 2.0.1-9e909a5bdd) — раздел с кворумом
Последнее обновление: вторник, 15 марта, 13:15:03 2022 г.
Последнее изменение: вторник, 15 марта, 13:15:00 2022, от root через cibadmin на узле 1.

настроено 2 узла
0 ресурсов настроено

В сети: [ узел1 узел2 ]

Нет ресурсов


Статус демона:
  коросинк: активен/отключен
  кардиостимулятор: активен/отключен
  pcsd: активен/включен

А теперь с чего начинаются мои заморочки — добавляем плавающий IP и маршрутизируем ресурсы SRC IP в кластер:

# ресурс pcs create virtip ocf:heartbeat:IPaddr2 ip=192.168.80.23 cidr_netmask=24 op monitor interval=30s
# ресурс pcs create virtsrc ocf:heartbeat:IPsrcaddr ipaddress=192.168.80.23 cidr_netmask=24 op monitor interval=30
# колокация ограничения количества компьютеров добавить virtip с помощью virtsrc
# порядок ограничения количества штук virtip, затем virtsrc
Добавление virtip virtsrc (вид: обязательно) (варианты: первое действие=начало, затем действие=начало)

# шт статус
Имя кластера: my_cluster
Стек: коросинк
Текущий контроллер домена: node1 (версия 2.0.1-9e909a5bdd) — раздел с кворумом
Последнее обновление: вторник, 15 марта, 13:17:34 2022 г.
Последнее изменение: вторник, 15 марта, 13:17:07 2022, от root через cibadmin на узле 1.

настроено 2 узла
настроено 2 ресурса

В сети: [ узел1 узел2 ]

Полный список ресурсов:

 virtip (ocf::heartbeat:IPaddr2): запущен node1
 virtsrc (ocf::heartbeat:IPsrcaddr): запущен node1

Неудачные действия с ресурсами:
* virtsrc_start_0 на node2 'не установлен' (5): call=10, status=complete, exitreason='Мы не обслуживаем [192.168.80.23], поэтому не можем сделать его предпочтительным исходным адресом',
    last-rc-change='Вт, 15 марта, 13:16:47 2022', queued=0ms, exec=21ms

Статус демона:
  коросинк: активен/отключен
  кардиостимулятор: активен/отключен
  pcsd: активен/включен

node1:~# ip r
по умолчанию через 192.168.80.1 dev ens192 src 192.168.80.23 onlink
10.10.10.2 dev gre_node2 прото-ссылка на область ядра src 10.10.10.1
192.168.80.0/24 dev ens192 ссылка на объем src 192.168.80.23

node2:~# ip r
по умолчанию через 192.168.80.1 dev ens192 onlink
10.10.10.1 dev gre_node1 прото-ссылка на область ядра src 10.10.10.2
192.168.80.0/24 dev ens192 прото-ссылка на область ядра src 192.168.80.22

node2:~# пинг 192.168.80.23
PING 192.168.80.23 (192.168.80.23) 56 (84) байт данных.
64 байта от 192.168.80.23: icmp_seq=1 ttl=64 время=0,154 мс
^ С

Вроде все в порядке, но теперь давайте эмулируем сетевой сбой и происходит хаос:

node1:~# ip link set ens192 down; спать 60; ip link set ens192 вверх
root@node1:~# ip r
10.10.10.2 dev gre_node2 прото-ссылка на область ядра src 10.10.10.1
192.168.80.0/24 dev ens192 прото-ссылка на область ядра src 192.168.80.21
root@node1: статус ~# ПК
Имя кластера: my_cluster
Стек: коросинк
Текущий контроллер домена: node1 (версия 2.0.1-9e909a5bdd) — раздел с кворумом
Последнее обновление: вторник, 15 марта, 13:32:56 2022 г.
Последнее изменение: вторник, 15 марта, 13:17:07 2022, от root через cibadmin на узле 1.

настроено 2 узла
настроено 2 ресурса

В сети: [ узел1 узел2 ]

Полный список ресурсов:

 virtip (ocf::heartbeat:IPaddr2): запущен node1
 virtsrc (ocf::heartbeat:IPsrcaddr): FAILED node1 (заблокирован)

Неудачные действия с ресурсами:
* virtsrc_start_0 на node2 'не установлен' (5): call=10, status=complete, exitreason='Мы не обслуживаем [192.168.80.23], поэтому не можем сделать его предпочтительным исходным адресом',
    last-rc-change='Вт, 15 марта, 13:16:47 2022', queued=0ms, exec=21ms
* virtsrc_stop_0 на node1 'неизвестная ошибка' (1): call=15, status=complete, exitreason='маршрут по умолчанию не существует',
    last-rc-change='Вт, 15 марта, 13:31:26 2022', в очереди=0 мс, exec=24 мс
* virtip_monitor_30000 на node1 'неизвестная ошибка' (1): call=7, status=complete, exitreason='[findif] failed',
    last-rc-change='Вт, 15 марта, 13:30:36 2022', queued=0ms, exec=0ms

Статус демона:
  коросинк: активен/отключен
  кардиостимулятор: активен/отключен
  pcsd: активен/включен


@node2:~# ip r
10.10.10.1 dev gre_node1 прото-ссылка на область ядра src 10.10.10.2
192.168.80.0/24 dev ens192 прото-ссылка на область ядра src 192.168.80.22
root@node2: статус ~# ПК
Имя кластера: my_cluster
Стек: коросинк
Текущий контроллер домена: node1 (версия 2.0.1-9e909a5bdd) — раздел с кворумом
Последнее обновление: вторник, 15 марта, 13:34:03 2022 г.
Последнее изменение: вторник, 15 марта, 13:17:07 2022, от root через cibadmin на узле 1.

настроено 2 узла
настроено 2 ресурса

В сети: [узел1 узел2]

Полный список ресурсов:

 virtip (ocf::heartbeat:IPaddr2): запущен node1
 virtsrc (ocf::heartbeat:IPsrcaddr): FAILED node1 (заблокирован)

Неудачные действия с ресурсами:
* virtsrc_start_0 на node2 'не установлен' (5): call=10, status=complete, exitreason='Мы не обслуживаем [192.168.80.23], поэтому не можем сделать его предпочтительным исходным адресом',
    last-rc-change='Вт, 15 марта, 13:16:47 2022', queued=0ms, exec=21ms
* virtsrc_stop_0 на node1 'неизвестная ошибка' (1): call=15, status=complete, exitreason='маршрут по умолчанию не существует',
    last-rc-change='Вт, 15 марта, 13:31:26 2022', в очереди=0 мс, exec=24 мс
* virtip_monitor_30000 на node1 'неизвестная ошибка' (1): call=7, status=complete, exitreason='[findif] failed',
    last-rc-change='Вт, 15 марта, 13:30:36 2022', queued=0ms, exec=0ms

Статус демона:
  коросинк: активен/отключен
  кардиостимулятор: активен/отключен
  pcsd: активен/включен

Что не так? Как заставить его работать правильно?

Ответить или комментировать

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