Настройка и запуск кластера¶
💰 Функция доступна по подписке Yucca Enterprise
Введение¶
В данном руководстве описано, как настроить кластер Yucca из 3х узлов. На потребуется установленная Yucca и Postgres так как в режиме кластера возможна работа только с этой DB. А так же лицензия на нужное количество узлов.
Запуск¶
Для запуска Yucca в режиме кластера, нужно включить сам режим и обозначить адреса по которым серверы будут общаться друг с другом. Нам потребуется определить следующие параметры:
--cluster=true
- Включает режиме кластера.--cluster-advertise-address=127.0.0.1:9941
- говорит по какому адресу участники кластера могут обратиться к этому серверу.--cluster-listen-address=:9941
- какой порт нужно слушать для для обращений участников кластера.
Параметры также можно определить и через конфиг файл и через переменные окружения
Для примера я запущу всё локально на 1 компьютере, в рабочем окружении предполагается, что это разные физические серверы.
Отмечу, что при работе на 1 узле, у серверов обязательно должен отличаться state_dir,
в этом каталоге создастся файл cluster_node_id
который будет содержать уникальный идентификатор сервера в кластере.
Не удаляйте и не изменяйте этот файл. По этому номеру сервер идентифицирует себя в кластере,
если его удалить, то сервер попытается добавится в кластер, как новый узел и все настроенные ранее камеры будут проигнорированы.
В случае переноса узла кластера на другое оборудование обязательно переносите и этот файл.
Запустим первый узел Yucca в кластере:
/opt/yucca/yucca server \
--data-dir=/opt/yucca/data/cluster/data1 \
--database-type="postgres" \
--telemetry=false \
--smtp-server=false \
--cluster=true \
--cluster-advertise-address=127.0.0.1:9941 \
--cluster-listen-address=0.0.0.0:9941 \
--log-level=debug \
--web.listen-address=0.0.0.0:9911
Второй инстанс Yucca в кластере:
/opt/yucca/yucca server \
--data-dir=/opt/yucca/data/cluster/data2 \
--database-type="postgres" \
--telemetry=false \
--smtp-server=false \
--cluster=true \
--cluster-advertise-address=127.0.0.1:9942 \
--cluster-listen-address=0.0.0.0:9942 \
--log-level=debug \
--web.listen-address=0.0.0.0:9912
Третий инстанс Yucca в кластере:
/opt/yucca/yucca server \
--data-dir=/opt/yucca/data/cluster/data3 \
--database-type="postgres" \
--telemetry=false \
--smtp-server=false \
--cluster=true \
--cluster-advertise-address=127.0.0.1:9943 \
--cluster-listen-address=0.0.0.0:9943 \
--log-level=debug \
--web.listen-address=0.0.0.0:9913
Далее открываем интерфейс всех 3 серверов. Мы увидим страницу инициализации базы на одном из серверов, том что смог стать лидером. Лидер - это особая роль сервера в кластере, он отвечает за множество операций и статусы в кластере, хотя при этом является таким же участником, тоже размещает камеры и так далее. Если текущий лидер вдруг станет недоступен, то его место тут же займёт кто то другой. Так в кластере всегда есть лидер. Все остальные узлы являются участниками или претендентами и ждут когда лидер разрешит им вступить в кластер.
После инициализации добавляем лицензию:
Обратите внимание, что я указал лицензию с кластером на 2 узла, при этом запустил 3 узла
Лидер также следит за квотами. Если у вас по лицензии квота на 2 узла в кластере, и вы попытаетесь добавить 3-ю, то новый узел будет находиться в статусе претендента на вступление в кластер, но не сможет вступить в него.
Лидер проверяет квоты не только на старте но и в процессе работы. К примеру если вы примените лицензию с квотой на 10 узлов, всё настроите, а затем примените лицензию с квотой на 3 узла, то увидев это, лидер сольёт (выведет из обслуживания) лишние узлы. Выбор лишних узлов происходит случайным образом.