Как включить TLS между узлами Percona XtraDB Cluster без остановки всего кластера

9 сентября 2026 года Хуан Аррути из Percona описал переход PXC на TLS без одновременной остановки всех узлов. Метод использует socket.dynamic, доступный начиная с PXC 8.0.28 и в ветке 8.4. Это поочерёдные перезапуски, а не переключатель без перезагрузки процессов.

Почему один новый узел не соединяется со старыми

Параметр pxc-encrypt-cluster-traffic включает защиту межузлового обмена, IST и SST, но не меняется динамически. Узел с TLS не может просто подключиться к соседям, которые ожидают незашифрованный поток. В журнале в такой ситуации возникает ошибка согласования TLS.

socket.dynamic позволяет на время перехода поддерживать оба режима. Узел сначала пробует защищённое соединение, а при несовместимом соседе может вернуться к открытому. Именно поэтому промежуточное состояние ещё нельзя считать полностью зашифрованным кластером.

Сначала сертификаты и настройки всех узлов

Percona рассматривает обычный кластер из трёх узлов. До перезапусков на всех машинах должны быть согласованы файлы сертификатов и конфигурация. В статье рекомендуется держать сертификаты вне каталога данных, чтобы не потерять их при полной передаче состояния.

В конфигурации включаются pxc-encrypt-cluster-traffic, пути ssl-параметров и временный socket.dynamic=YES. Для SST отдельно задаются encrypt=4 и соответствующие пути. Скрипт SST перечитывает конфигурацию при передаче, поэтому согласованность настроек нужна заранее, а не по мере перезапуска.

Не заменяйте целиком wsrep_provider_options короткой строкой из примера, если там уже есть важные параметры. Изменение нужно объединить с действующими настройками своей установки.

Затем поочерёдный переход

В описанном сценарии первые два узла перезапускаются по одному с поддержкой смешанного режима. После каждого нужно дождаться возвращения в кластер и состояния Synced. Только после этого переходить к следующему.

Третий узел можно запустить уже с socket.dynamic=NO: остальные способны принять TLS. После него первые два снова поочерёдно перезапускаются с отключённым смешанным режимом. Так в итоге убирается возможность незашифрованного соединения.

Доступность приложения при этом зависит от кворума, оставшейся мощности и маршрутизации запросов. Нельзя обещать отсутствие простоя для любого кластера только потому, что процедура называется rolling restart. Перед работой нужны резервная копия, тестовый прогон и понятный возврат.

Что проверять в конце

Проверьте фактические параметры провайдера, состояние всех узлов и защищённые соединения в журналах. Само наличие socket.ssl=YES в промежуточной конфигурации ещё не доказывает, что весь обмен уже идёт по TLS: пока разрешён fallback, часть соединений может оставаться открытой.

Метод полезен тем, что разделяет переход на совместимый промежуточный режим и последующее ужесточение. Завершённой работу стоит считать только после отключения fallback на всех узлах и проверки нормальной работы приложения.

Обновление системы под базой тоже требует плана: см. завершение LTS Debian 11.

Источники и ссылки


Комментарии загружаются…