Плановая перезагрузка серверов¶
В статье описана поочерёдная перезагрузка двух серверов Compass с настроенной отказоустойчивостью. Перед началом создайте резервную копию приложения и баз данных.
Предупреждение
Рекомендуем проводить работы в нерабочее время: во время переключения серверов пользователи могут ненадолго потерять связь с Compass, а текущие звонки — прерваться. Если результат команды не совпадает с ожидаемым, не переходите к следующему шагу и обратитесь в поддержку.
Команды ниже используют переменную VIP - её значение подставляется из конфигурации keepalived на первом шаге. Переменная действует только в текущем сеансе терминала: если вы переподключились к серверу, перейдите в директорию установщика и выполните первый шаг заново.
Этап 1. Проверка состояния серверов¶
На обоих серверах перейдите в директорию установщика и задайте переменную:
Команда выведет внутренний IP-адрес VIP. На обоих серверах он должен совпадать.
На обоих серверах проверьте роли:
На активном сервере команда выведет
active,enabled, сообщение «Данный сервер является активным мастер сервером» и строку с VIP.На неактивном сервере команда выведет
active,enabledи сообщение «Данный сервер НЕ является активным мастер сервером». Строки с VIP нет.
На неактивном сервере проверьте состояние репликации:
В выводе будет статус репликации базы monolith и каждой команды. Для каждой базы:
Master_Host— IP-адрес активного сервера;Slave_IO_Running: YesиSlave_SQL_Running: Yes;Seconds_Behind_Master: 0 seconds;Last_IO_Error: NoneиLast_SQL_Error: None.
На активном сервере проверьте синхронизацию файлов:
Если команда ничего не вывела — ошибок синхронизации нет.
На обоих серверах проверьте поисковый кластер:
В выводе значение
cluster_sizeдолжно быть2, аnode_state—synced.
Этап 2. Перезагрузка неактивного сервера¶
Остановите keepalived:
Последней строкой команда должна вывести
inactive.Остановите MySQL:
Проверьте, что MySQL остановлен:
У всех сервисов в колонке
REPLICASдолжно быть значение0/0. Если отображается1/0, MySQL ещё завершает работу — повторите команду через 10 секунд.Перезагрузите сервер:
После загрузки перейдите в директорию установщика и снова задайте переменную
VIP— после перезагрузки её значение сбрасывается:Команда выведет внутренний IP-адрес VIP.
Проверьте правила доступа к портам репликации:
Если команда вывела
0— правила на месте. Если выведено другое значение, восстановите правила и повторите проверку:Запустите MySQL:
Через 1–2 минуты проверьте состояние сервисов:
У всех сервисов в колонке
REPLICASдолжно быть значение1/1, кромеdefault-file-pivotиjitsi-custom-jitsi— для них штатно отображается0/1.Примечание
После загрузки сервис
nginx-monolithможет несколько раз перезапуститься с ошибкойhost not found in upstream, пока не запустятся PHP-сервисы. Это штатно и обычно занимает до минуты.Повторите шаги 3–5 этапа 1.
Включите keepalived:
Команда выведет сообщение «Данный сервер НЕ является активным мастер сервером». Строки с VIP нет — сервер остался неактивным.
Этап 3. Переключение VIP¶
На неактивном сервере удалите файл блокировки автоматического перехода, если он есть:
На активном сервере перезапустите keepalived:
Через 30 секунд на обоих серверах проверьте переключение:
На сервере, который был неактивным, команда выведет сообщение «Данный сервер является активным мастер сервером», строку с VIP и запись
MASTER: --- Завершили работу изменения состояния ---.На сервере, который был активным, команда выведет сообщение «Данный сервер НЕ является активным мастер сервером» и запись
BACKUP: --- Завершили работу изменения состояния ---. Строки с VIP нет.
Этап 4. Перезагрузка второго сервера¶
Выполните этап 2 на сервере, который стал неактивным.
Если трафик должен вернуться на первый сервер, выполните этап 3.
После выполнения этих шагов оба сервера перезагружены, данные между ними синхронизированы, а резервный сервер готов принять трафик при сбое активного.
Напишите нам в пространстве поддержки On-premise, Telegram или на почту support@getcompass.ru, чтобы получить индивидуальную демонстрацию функционала и помощь по вопросам интеграции мессенджера в вашей компании.