Отключение отказоустойчивости

  1. Выберете сервер, который останется рабочим сервером после отключения отказоустойчивости.

    Примечание

    Далее по инструкции необходимо выполнить действия на рабочем сервере, и отдельно на отключаемом сервере.

  2. Убедитесь, что VIP находится на рабочем сервере:

    ip a | grep <VIP IP>
    

    Примечание

    Если VIP отсутствует на рабочем сервере необходимо выполнить переключение по инструкции управления отказоустойчивостью

  3. На рабочем сервере откройте конфигурационный файл configs/replication.yaml для редактирования любым текстовым редактором и установите значения для полей service_label и mysql_server_id как на примере:

    # service_label — лейбл для обозначения сервисов сервера (основной, резервный).
    # Имя должно быть не длиннее 7 символов
    service_label: ""
    
    # mysql_server_id — идентификатор mysql сервера.
    # Каждый новый сервер должен иметь отличный идентификатор от предыдущего.
    # Для основного сервера установите значение 1, для резервного — значение 2.
    mysql_server_id: 0
    
    # start_octet — используется для определения сабсети для сервисов. Для каждого нового сервера необходимо инкрементировать на 10.
    start_octet: <менять не требуется>
    

    Предупреждение

    Обратите внимание, что поле start_octet менять не требуется.

  4. На отключаемом сервере остановите Docker:

    sudo systemctl disable docker
    sudo systemctl stop docker
    
  5. На рабочем сервере выполните обновление с помощью скрипта:

    Примечание

    При запуске скрипта появится предупреждение, что приложение будет недоступно. Необходимо подтвердить дальнейшее выполнение.

    sudo python3 script/update.py
    

    Дождитесь завершения обновления.

  6. На рабочем сервере выполните обновление manticore для корректной работы поиска:

    sudo docker exec -it $(sudo docker ps | grep manticore | awk '{print $1}') \
    rm /var/lib/manticore/manticore.json
    
    sudo docker service update --force \
    $(sudo docker service ls | grep manticore | awk '{print $2}')
    
  7. После обновления необходимо заменить А-запись вашего домена на IP вашего рабочего сервера.

    Предупреждение

    Переключение домена на новый IP может занять до 48 часов. Не отключайте и не переключайте keepalived пока не закончится переключение домена.

  8. После переключения домена остановите работу keepalived на обоих серверах:

    sudo systemctl stop keepalived
    sudo systemctl disable keepalived
    
  9. На обоих серверах удалите из crontab задачи, добавленные при настройке keepalived - синхронизацию файлов, мониторинг и автоматическое восстановление репликации:

    sudo crontab -l 2>/dev/null | grep -v "/script/replication/sync_files.py" | grep -v "/script/replication/show_slave_replication_status.py" | grep -v "/script/replication/ensure_replication.py" | sudo crontab -
    

    Примечание

    Если на серверах также был настроен мониторинг через Zabbix, дополнительно удалите задачу set_slave_replication_lag.py, добавленную по этой инструкции:

    sudo crontab -l 2>/dev/null | grep -v "/script/replication/set_slave_replication_lag.py" | grep -v "# Compass: Мониторинг репликации" | sudo crontab -
    

    На обоих серверах проверьте, что задачи удалены:

    sudo crontab -l
    


Напишите нам в пространстве поддержки On-premise, Telegram или на почту support@getcompass.ru, чтобы получить индивидуальную демонстрацию функционала и помощь по вопросам интеграции мессенджера в вашей компании.