В документе представлена информация о переносе сервисов Почты VK WorkSpace на новые гипервизоры в кластерных установках. Чаще всего так переносят сервисы, создающие повышенную нагрузку.
Сервисы делятся на два типа:
- stateless-сервисы — не хранят данные на сервере и после перезапуска начинают работу «с нуля» без потери информации. Это веб-интерфейсы, API-сервисы, прокси и обработчики запросов. Такие сервисы переносятся на другие гипервизоры без дополнительных действий — см. раздел Как перенести stateless-сервис;
- stateful-сервисы — хранят данные на диске сервера: базы данных, поисковые индексы, очереди сообщений, хранилища секретов. Чтобы данные сохранились, при переносе их нужно скопировать вручную — см. раздел Как перенести stateful-сервис.
- Кластерная установка Почты VK WorkSpace версии 26.3 или выше.
- Доступ в веб-интерфейс установщика:
http://server-ip-address:8888. - Новые гипервизоры уже добавлены в установщик и доступны.
-
Перейдите в веб-интерфейс установщика VK WorkSpace.
-
На главной странице перейдите в Обслуживание → Распределение меток.
-
На вкладке Значения лейблов добавьте новое значение метки.
-
На вкладке Назначения серверов распределите созданную метку между гипервизорами: выберите серверы, на которые нужно перенести нагрузку. Одному гипервизору можно присвоить несколько меток.
Нажмите кнопку Сохранить.
-
На вкладке Назначение ролей установите созданную метку на роль, которую нужно перенести.
Нажмите кнопку Сохранить.
-
Перейдите на главную страницу, нажав на логотип VK WorkSpace в левом верхнем углу.
-
Запустите автоматическую установку кнопкой
.
После завершения установки сервисы выбранной роли будут запущены на новых гипервизорах.
Метки не действуют на stateful-сервисы, поэтому их переносят вручную: останавливают сервис, копируют его данные на целевой гипервизор и указывают этот гипервизор в конфигурации установщика.
Далее перенос показан на примере сервиса rebeccapg1 с узла devops-cillium-x-worker-1 на узел devops-cillium-x-control-1.
У сервиса два имени:
- роль — тип сервиса, например
rebeccapg; - название сервиса (hostname) — имя конкретного экземпляра, например
rebeccapg1. Это же имя носят каталог с данными и StatefulSet.
-
Удалите StatefulSet сервиса, чтобы остановить его:
kubectl delete sts rebeccapg1 -n onprem -
На узле, где работал сервис, заархивируйте каталог с данными. Каталог находится в
/opt/mailOnPremise/docker-volumes/<название_сервиса>/:cd /opt/mailOnPremise/docker-volumes/tar cvf rebeccapg1.tar rebeccapg1 -
Скопируйте архив на целевой гипервизор:
scp rebeccapg1.tar root@<ip-адрес_гипервизора>:/opt/mailOnPremise/docker-volumes/ -
На целевом гипервизоре разархивируйте каталог с данными, затем восстановите его владельца и права доступа:
cd /opt/mailOnPremise/docker-volumes/tar xvf rebeccapg1.tarchown -R root:root rebeccapg1chmod 755 -R rebeccapg1 -
В файле
/home/deployer/computes.yamlдля ролиrebeccapgукажите новое значение поляhypervisor, поменяв его сdevops-cillium-x-worker-1наdevops-cillium-x-control-1:- role: rebeccapghostname: rebeccapg1hypervisor: devops-cillium-x-control-1podK8SParams:cluster: ext-k8s1zone: "" -
Перезапустите установщик:
systemctl restart deployer -
В установщике VK WorkSpace убедитесь, что у сервиса
rebeccapg1изменилось название гипервизора наdevops-cillium-x-control-1. Выполните шагup_container:
-
Убедитесь, что сервис поднялся на целевом гипервизоре:
kubectl get pods -A -o wide | grep rebeccapgВ столбце NODE должен быть указан целевой гипервизор.
Технический писатель: Москвина Анна