Вопрос или проблема
В настоящее время я планирую настроить кластер Active-Standby HA, используя два узла. У каждого узла есть два сетевых интерфейса, которые добавлены как 10.0.2.0 (ring0) и 192.168.0.0 (ring1). Для тестирования я отключил stonith и кворум.
Я обратился к следующей документации для Red Hat 8, чтобы добавить новую ссылку в кластер: https://docs.redhat.com/ko/documentation/red_hat_enterprise_linux/8/html/configuring_and_managing_high_availability_clusters/proc_changing-links-in-multiple-ip-cluster-clusternode-management#proc_changing-links-in-multiple-ip-cluster-clusternode-management
После добавления новой ссылки мой модифицированный corosync.conf выглядит следующим образом:
totem {
version: 2
cluster_name: gisang-cluster
transport: knet
crypto_cipher: aes256
crypto_hash: sha256
}
nodelist {
node {
name: gisang-node01-hb
nodeid: 1
ring1_addr: 10.0.2.15
ring0_addr: 192.168.0.101
}
node {
name: gisang-node02-hb
nodeid: 2
ring1_addr: 10.0.2.23
ring0_addr: 192.168.0.102
}
}
quorum {
provider: corosync_votequorum
two_node: 1
}
logging {
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
timestamp: on
}
Я подготовил три случая, чтобы проверить, правильно ли функционирует RRP.
Первый случай:
- Запустить кластер с Node1 и Node2.
- Выключить (отключить) сетевой интерфейс ring0 у любого из узлов Node1 или Node2.
- Убедиться, что кластер продолжает работать.
Второй случай:
- Запустить кластер с Node1 и Node2.
- Выключить (отключить) сетевой интерфейс ring0 у любого из узлов Node1 или Node2.
- Использовать команду
pcs cluster sync
, чтобы подтвердить, происходит ли общение через ring1.
Третий случай:
- Кластер находится в остановленном состоянии.
- Выключить (отключить) сетевой интерфейс ring0 у любого из узлов Node1 или Node2.
- Запустить кластер с Node1 и Node2.
Результаты:
-
Первый случай:
Все прошло как я ожидал. Используя pcs status, я подтвердил, что ресурсы кластера функционируют правильно без каких-либо ошибок. -
Второй случай:
Была отображена следующая ошибка. Хотя ring0 был отключен, я ожидал, что конфигурационная информация будет синхронизироваться через ring1, но это не сработало как было задумано.root@gisang-node01:/home# pcs cluster sync gisang-node01-hb: Succeeded Unable to connect to gisang-node02-hb, check if pcsd is running there or try setting higher timeout with --request-timeout option (Failed to connect to gisang-node02-hb port 2224 after 2180 ms: No route to host) Error: Unable to set corosync config: Unable to connect to gisang-node02-hb, check if pcsd is running there or try setting higher timeout with --request-timeout option (Failed to connect to gisang-node02-hb port 2224 after 2180 ms: No route to host)
-
Третий случай:
Кластер вообще не запустился. Я надеялся, что кластер запустится через ring1, даже если ring0 был отключен.root@gisang-node01:/home# pcs cluster start --all gisang-node01-hb: Starting Cluster... gisang-node02-hb: Unable to connect to gisang-node02-hb, check if pcsd is running there or try setting higher timeout with --request-timeout option (Failed to connect to gisang-node02-hb port 2224 after 38661 ms: No route to host) Error: unable to start all nodes gisang-node02-hb: Unable to connect to gisang-node02-hb, check if pcsd is running there or try setting higher timeout with --request-timeout option (Failed to connect to gisang-node02-hb port 2224 after 38661 ms: No route to host)
Почему RRP не работает как ожидалось, и как я могу решить эту проблему? Или я неправильно понимаю функциональность RRP и подхожу к этому неверно?
Ответ или решение
Для решения проблемы с Redundant Ring Protocol (RRP) в контексте использования Pacemaker и Corosync, необходимо тщательно рассмотреть теоретическую основу, практические примеры и возможные решения проблемы, с которой вы столкнулись. Давайте рассмотрим все аспекты данной ситуации.
Теория
В системах высокой доступности (HA) использование избыточных сетевых путей, таких как RRP, позволяет обеспечить бесперебойное функционирование кластера в случае отказа одного из сетевых интерфейсов. Corosync, как основа для коммуникационного слоя Pacemaker, поддерживает RRP, что дает возможность использовать несколько сетевых интерфейсов для повышения устойчивости к отказам. Это достигается за счет распределения сетевого трафика между двумя или более физическими сетями (названными ring0 и ring1 в вашем случае).
Основные элементы конфигурации Corosync:
- totem: Блок, определяющий параметры транспортного уровня, такие как безопасность (crypto_cipher, crypto_hash) и способ транспортировки (например, knet).
- nodelist: Список узлов кластера, где каждому узлу присвоен уникальный nodeid и указаны адреса для каждой из сетей (rings).
- quorum: Параметры кворума, важные для определения способности кластера принимать решения в условиях разделения сети или отказа части его узлов.
Пример
Вы попытались протестировать функциональность RRP через три сценария. В первом сценарии ваш кластер функционировал нормально, что подтверждает работоспособность RRP при наличии одной работающей сети для узлов, которые уже активно синхронизированы. Во втором и третьем сценариях, вы столкнулись с проблемами, такими как "Нет маршрута к хосту" и невозможностью старта кластера, когда один из сетевых интерфейсов был отключен.
Применение
Почему RRP не работает как ожидалось?
-
Конфигурация сети и маршрутизация: Убедитесь, что сетевые маршруты правильно настроены таким образом, чтобы каждый узел мог использовать альтернативную сеть при отключении основной. Это включает в себя проверку конфигурации сети и наличия маршрутов для передаваемых данных.
-
Порты и межсетевые экраны (firewalls): Убедитесь в открытости необходимых портов (например, 2224 для pcsd) в межсетевых экранах обоих узлов. Закрытые порты могут препятствовать обмену данными между узлами через альтернативную сеть.
-
pcs и pcsd: Проверьте, запущены ли на узлах необходимые службы (pcsd). В логах может содержаться информация о том, почему одна из служб не запустилась корректно.
-
Таймауты: Попробуйте увеличить таймаут, чтобы дать системе больше времени на установление соединения через альтернативную сеть с помощью опции –request-timeout.
-
Подключение и синхронизация: В случае использования команды
pcs cluster sync
убедитесь, что настройка сетевого стека позволяет sch тонкий, что настройка сетевого стека позволяет выполнение команд синхронизации через обе сети. Для этого может потребоваться дополнительная настройка в corosync.conf или network-manager. -
Версия ПО и совместимость: Убедитесь, что используемая версия Corosync и Pacemaker совместима и поддерживает необходимые возможности RRP для вашей архитектуры.
-
Журналы логов: Анализируйте журналы логов (например, /var/log/corosync/corosync.log) для обнаружения возможных ошибок или предупреждений, которые могут указать на проблемные места в конфигурации.
Заключение
Для эффективного использования RRP важно обеспечить корректную настройку каждой из перечисленных областей. Это требует скреплений работы всех компонентов — от маршрутизации до службы pcsd. Если после выполнения вышеупомянутых шагов проблема не исчезнет, рекомендуется обратиться к технической поддержке, где смогут провести более глубокий анализ конфигурации вашего кластера и сети. Точное соблюдение мануалов и документации также важно для достижения стабильной работы системы.