Configuração e inicialização do cluster
💰 Função disponível por assinatura do Yucca Enterprise
Introdução
Este guia descreve como configurar um cluster Yucca com 3 nós. Vamos precisar do Yucca e do Postgres instalados, já que no modo cluster só é possível trabalhar com esse banco de dados. Além de uma licença para o número necessário de nós.
Inicialização
Para iniciar o Yucca no modo cluster, é necessário ativar o próprio modo e indicar os endereços pelos quais os servidores se comunicarão entre si. Precisaremos definir os seguintes parâmetros:
--cluster=true- Ativa o modo cluster.--cluster-advertise-address=127.0.0.1:9941- indica o endereço pelo qual os membros do cluster podem se conectar a este servidor.--cluster-listen-address=:9941- qual porta deve ser escutada para as solicitações dos membros do cluster.
Os parâmetros também podem ser definidos por meio de um arquivo de configuração ou de variáveis de ambiente
Para este exemplo, vou executar tudo localmente em 1 computador; em um ambiente de produção, presume-se que sejam servidores físicos diferentes.
Vale destacar que, ao trabalhar em 1 nó, o state_dir dos servidores deve obrigatoriamente ser diferente,
nesse diretório será criado o arquivo cluster_node_id, que conterá o identificador único do servidor no cluster.
Não exclua nem modifique esse arquivo. É por esse número que o servidor se identifica no cluster,
se ele for excluído, o servidor tentará se juntar ao cluster como um novo nó e todas as câmeras configuradas anteriormente serão ignoradas.
Caso o nó do cluster seja migrado para outro hardware, esse arquivo também deve obrigatoriamente ser transferido.
Vamos iniciar o primeiro nó do Yucca no cluster:
/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
Segunda instância do Yucca no cluster:
/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
Terceira instância do Yucca no cluster:
/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
Em seguida, abrimos a interface dos 3 servidores. Veremos a página de inicialização do banco de dados em um dos servidores, aquele que conseguiu se tornar o líder. O líder é um papel especial de servidor no cluster, responsável por várias operações e status no cluster, embora também seja um membro comum, que igualmente hospeda câmeras e assim por diante. Se o líder atual ficar indisponível, outro nó assumirá seu lugar imediatamente. Assim, o cluster sempre tem um líder. Todos os demais nós são membros ou candidatos e aguardam que o líder permita que se juntem ao cluster.
Após a inicialização, adicionamos a licença:
Observe que informei uma licença com cluster para 2 nós, mas iniciei 3 nós
O líder também monitora as cotas. Se, pela licença, você tiver uma cota de 2 nós no cluster e tentar adicionar um 3º, o novo nó ficará no status de candidato à admissão no cluster, mas não conseguirá ingressar nele.
O líder verifica as cotas não apenas na inicialização, mas também durante a operação. Por exemplo, se você aplicar uma licença com cota para 10 nós, configurar tudo e, em seguida, aplicar uma licença com cota para 3 nós, ao perceber isso, o líder drenará (retirará de operação) os nós excedentes. A escolha dos nós excedentes é feita de forma aleatória.



