Управление процессом отказоустойчивости¶
Переключение трафика между серверами¶
Примечание
Перед выполнением действий должен быть настроен keepalived по инструкции для настройки keepalived.
Внимание
Обратите внимание, что переключение домена со старого IP на VIP требует времени. В этом случае не рекомендуется переключать или отключать keepalived на текущем мастер-сервере.
Рассмотрим конфигурацию, где:
Основной сервер является активным и обрабатывает трафик;
Резервный сервер является неактивным и находится в режиме горячего резерва.
В процессе ручного переключения роли меняются: резервный сервер становится активным, а основной сервер переходит в состояние неактивного.
Процедура ручного переключения трафика состоит из следующих этапов:
Проверка состояния репликации на неактивном сервере;
Перезапуск keepalived на активном сервере;
Проверка перехода VIP и активного сервера;
Проверка логов и репликации на двух серверах.
Ниже приведено подробное описание каждого этапа.
Проверка состояния репликации на неактивном сервере.
Перед переключением убедитесь, что репликация данных завершена. На неактивном сервере проверьте статус репликации (см. Проверка статуса репликации).
Перезапуск keepalived на активном сервере.
Чтобы инициировать переключение, необходимо на текущем активном сервере (в рассматриваемой конфигурации — основной сервер) перезапустить службу
keepalived.Выполните команду на активном сервере:
Проверка перехода VIP и активного сервера.
Убедитесь, что VIP успешно переключился. Для этого выполните команду на обоих серверах и сравните вывод:
VIP-адрес должен отображаться только на сервере, который стал активным (резервном сервере).
Также можно явно проверить, какой сервер сейчас является активным, с помощью скрипта:
Интерпретация результатов:
На активном сервере (резервный сервер) вы увидите сообщение:
Данный сервер является активным мастер сервером
На сервере, который стал неактивным (основной сервер), вы увидите сообщение:
Данный сервер НЕ является активным мастер сервером
Проверка логов и репликации на двух серверах.
На сервере, который стал активным (резервный сервер), проверьте логи, чтобы убедиться в отсутствии ошибок:
В случае некорректного переключения рекомендуется проверить логи
rsync:После переключения убедитесь, что репликация продолжает работать корректно. На неактивном сервере проверьте статус репликации (см. Проверка статуса репликации).
После выполнения всех шагов роли серверов меняются следующим образом:
резервный сервер становится активным и начинает обрабатывать трафик;
основной сервер переходит в состояние неактивного.
Изменение конфигурационных файлов¶
Изменения в конфигурационные файлы Compass необходимо вносить только на активном сервере. После сохранения они автоматически синхронизируются с неактивным сервером, где необходимо лишь проверить их наличие. Чтобы применить изменения, нужно запустить обновление на обоих серверах: сначала на активном, затем на неактивном.
Процедура внесения изменений состоит из следующих этапов:
Определите активный сервер;
Внесите и примените изменения на активном сервере;
Проверьте и примените изменения на неактивном сервере.
Ниже приведено подробное описание каждого этапа.
Определите активный сервер.
Изменения конфигурации всегда выполняйте на активном сервере. Чтобы определить, на каком сервере вы находитесь, выполните команду:
Если вы видите сообщение
Данный сервер является активным мастер сервером— вы на активном сервере, можно продолжать.Если сообщение
Данный сервер НЕ является активным мастер сервером— перейдите на активный сервер.
Внесите и примените изменения на активном сервере.
Отредактируйте необходимые конфигурационные файлы. Сохраните изменения и запустите скрипт обновления:
Проверьте и примените изменения на неактивном сервере.
На неактивном сервере убедитесь, что конфигурационные файлы синхронизировались (например, проверьте их содержимое). Затем запустите скрипт обновления:
Процесс обновления серверной части приложения¶
При обновлении серверной части Compass необходимо выполнить обновление на обоих серверах: сначала на активном, затем на неактивном.
Процедура обновления состоит из следующих этапов:
Определите активный сервер;
Обновите установщик и запустите обновление на активном сервере;
Проверьте состояние неактивного сервера;
Обновите установщик и запустите обновление на неактивном сервере;
Проверьте состояние репликации на неактивном сервере;
При возникновении ошибок репликации выполните сброс и повторный запуск.
Ниже приведено подробное описание каждого этапа.
Определите активный сервер.
Обновление всегда начинайте с активного сервера. Чтобы определить, на каком сервере вы находитесь, выполните команду:
Если вы видите сообщение
Данный сервер является активным мастер сервером— вы на активном сервере, можно продолжать.Если вы видите сообщение
Данный сервер НЕ является активным мастер сервером— перейдите на активный сервер.
Обновите установщик и запустите обновление на активном сервере.
Перейдите в директорию ранее загруженного установщика Compass и выполните:
Затем запустите скрипт обновления:
Проверьте состояние неактивного сервера.
Перед обновлением неактивного сервера убедитесь, что он находится в корректном состоянии:
Проверьте статус репликации (см. Проверка статуса репликации).
Проверьте, что служба
keepalivedработает корректно:Статус должен быть
active (running). Если служба остановлена или есть ошибки, устраните их перед продолжением.
Обновите установщик и запустите обновление на неактивном сервере.
В директории установщика Compass выполните:
Затем выполните:
Проверьте состояние репликации на неактивном сервере.
На неактивном сервере снова проверьте статус репликации (см. Проверка статуса репликации).
При возникновении ошибок репликации выполните сброс и повторный запуск.
Если после обновления появились ошибки репликации, выполните на неактивном сервере:
Предупреждение
Полная и актуальная инструкция по обновлению может включать дополнительные команды. Актуальная информация приведена в разделе обновление серверной части приложения.
Создание нового пространства¶
Процедура создания нового пространства состоит из следующих этапов:
Проверьте состояние репликации на неактивном сервере;
Настройте права на директорию на неактивном сервере;
Запустите создание пространства с активного сервера;
Восстановите базу данных из резервной копии на неактивном сервере;
Восстановите команду на неактивном сервере;
Запустите репликацию для нового пространства на неактивном сервере;
Проверьте результат.
Ниже приведено подробное описание каждого этапа.
Проверьте состояние репликации на неактивном сервере.
Убедитесь, что на неактивном сервере репликация работает корректно (см. Проверка статуса репликации).
Настройте права на директорию на неактивном сервере.
На неактивном сервере назначьте корректные права на директорию для хранения резервных копий:
Примечание
Пользователь
riderбыл создан при настройке синхронизации файлов и имеет все необходимые права.Запустите создание пространства с активного сервера.
На активном сервере выполните команду, указав IP-адрес и директорию хранения данных неактивного сервера:
Восстановите базу данных из резервной копии на неактивном сервере.
На неактивном сервере запустите скрипт восстановления базы данных:
В списке резервных копий выберите бэкап созданной компании — он имеет имя
reserve_company_<id>, где<id>— идентификатор, полученный на предыдущем шаге. Дождитесь завершения работы скрипта.Восстановите команду на неактивном сервере.
На неактивном сервере запустите скрипт восстановления команды:
Введите id команды, которую необходимо восстановить. Используйте тот же идентификатор, который был получен на шаге 3. Дождитесь завершения работы скрипта.
Запустите репликацию для нового пространства на неактивном сервере.
На неактивном сервере запустите скрипт, чтобы начать репликацию с активного сервера на неактивный:
Выберите новое пространство из списка и дождитесь завершения работы скрипта.
Проверьте результат.
Убедитесь, что новое пространство создано корректно и реплицируется:
На неактивном сервере проверьте статус репликации (см. Проверка статуса репликации).
В приложении Compass проверьте, что новое пространство отображается и доступно для работы.
Диагностика ошибок репликации¶
Если репликация не завершается успешно, используйте команды ниже для получения данных об ошибке.
Проверьте значение лейблов на обоих серверах:
Ответ команды для настроенных на отказоустойчивость серверов должен выдать:
service_label: primary # лейбл для сервера primary
master_service_label: primary # лейбл сервера, который выступает активным для других
Для резервного сервера ответ будет выглядеть следующим образом:
service_label: reserve # лейбл для сервера reserve
master_service_label: primary # лейбл сервера, который выступает активным для других
Запустите следующую команду для проверки статуса репликации:
Скрипт выведет данные по статусу репликации, которые подскажут в чём может быть ошибка.
Далее рекомендуется использовать скрипт для сброса репликации:
После сброса требуется повторно запустить старт репликации:
Восстановление после сбоя основного сервера¶
Рассмотрим ситуацию, когда основной сервер вышел из строя. В этом случае:
трафик автоматически переключился на резервный сервер, который стал активным;
репликация баз данных остановилась, так как основной сервер недоступен.
После устранения неполадок основной сервер снова стал доступен. Теперь необходимо подтянуть на нем все изменения, которые произошли за время простоя, чтобы он снова мог выполнять роль актуального «горячего резерва».
Примечание
После восстановления основного сервера:
трафик автоматически НЕ переключается обратно — активным остается резервный сервер;
репликация баз данных на основном сервере автоматически НЕ включается.
Процедура восстановления репликации на основном сервере:
Сбросьте настройки репликации.
На основном сервере (сейчас он неактивный) выполните сброс текущих настроек репликации:
Запустите репликацию заново.
На основном сервере запустите репликацию:
Дождитесь завершения синхронизации.
Процесс репликации может занять некоторое время в зависимости от объема данных, накопившихся за время простоя. Отслеживать состояние можно командой из Проверка статуса репликации.
После выполнения этих шагов основной сервер снова содержит актуальные данные и готов выполнять роль «горячего резерва» для активного (резервного) сервера.
Примечание
Как вернуть трафик на основной сервер
Если вы хотите, чтобы основной сервер снова стал активным (обрабатывал трафик), после завершения синхронизации выполните процедуру ручного переключения трафика.
Доступные проверки отказоустойчивости¶
Для мониторинга состояния отказоустойчивой конфигурации доступны следующие проверки:
Проверка активного сервера
Чтобы узнать, какой сервер в данный момент является активным (обрабатывает трафик), выполните команду:
Если команда вывела строку с IP-адресом — сервер, на котором она выполнена, является активным.
Если команда не выдала результат — сервер неактивный.
Проверка статуса репликации баз данных
Чтобы проверить состояние репликации баз данных, выполните скрипт на неактивном сервере:
В выводе будет информация о статусе репликации в базах Pivot и команд. Основные показатели:
Seconds_Behind_Master— отставание реплики от мастера в секундах. Значение 0 означает полную синхронизацию;Slave_IO_Running: Yes— поток получения изменений от мастера работает;Slave_SQL_Running: Yes— поток применения изменений работает;Last_IO_Error: NoneиLast_SQL_Error: None— нет ошибок.
Проверка логов синхронизации файлов (rsync)
Для просмотра логов синхронизации файлов используйте команду:
Примечание
На сервере, который в данный момент является неактивным,
rsyncдолжен быть выключен. Это нормальное состояние.Проверка лейблов серверов
Чтобы убедиться в корректности ролей серверов, выполните команду на каждом из них:
Для правильно настроенной отказоустойчивой конфигурации:
На основном сервере:
service_label: primary # лейбл для сервера primary master_service_label: primary # лейбл сервера, который выступает активным для других
На резервном сервере:
service_label: reserve # лейбл для сервера reserve master_service_label: primary # лейбл сервера, который выступает активным для других
Если в ответе
master_service_labelна серверах выдает разный результат или пустую строку — значит конфигурация нарушена.Что делать при обнаружении проблем
Если проверки выявили ошибки или несоответствия:
Для проблем с репликацией используйте скрипты диагностики из раздела «Диагностика ошибок репликации».
Если самостоятельная диагностика не помогла решить проблему, обратитесь в поддержку — напишите нам в пространстве поддержки On-premise, Telegram или на почту support@getcompass.ru.
Примечание
Напишите нам в пространстве поддержки On-premise, Telegram или на почту support@getcompass.ru, чтобы получить индивидуальную демонстрацию функционала и помощь по вопросам интеграции мессенджера в вашей компании.