Pular para o conteúdo principal

Configuração e inicialização do cluster

informação

💰 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.
observação

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.

init1

Após a inicialização, adicionamos a licença:

observação

Observe que informei uma licença com cluster para 2 nós, mas iniciei 3 nós

license1

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 , o novo nó ficará no status de candidato à admissão no cluster, mas não conseguirá ingressar nele.

cluster1

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.