Pular para o conteúdo principal

O que é o vStack Center

O vStack Center é o plano de gerenciamento de um cluster vStack Hyperconverged Infrastructure (doravante chamado de vStack HCP). Os administradores o usam para criar data centers virtuais (VDCs), redes e máquinas virtuais (VMs), atribuir papéis e consultar o log de eventos de segurança e as métricas. As próprias VMs são executadas no hipervisor dos nós do cluster. O vStack Center mantém o estado oficial do cluster e decide o que deve ser executado e onde.

O vStack HCP é um produto abrangente com duas partes: o vStack Center cuida do gerenciamento, e o vStack OS fornece o sistema operacional dos nós, incluindo o hipervisor e a camada de armazenamento. O vStack Center não interage diretamente com os nós. Ele envia uma tarefa ao Cluster Manager, que a entrega aos nós. Essa separação se reflete no comportamento da API: uma operação de VM envolve uma troca entre o vStack Center e os agentes nos nós, e não uma única gravação no banco de dados. Os nós, sua instalação, os requisitos de hardware e a CLI dos nós estão descritos na documentação do vStack OS.

Um cluster gerenciado pelo vStack Center opera de forma independente. Um produto separado, o GI, agrupa vários clusters em uma federação e encaminha solicitações a eles por proxy, mas o cluster não tem conhecimento disso: o conjunto de métodos e as regras de acesso permanecem os mesmos.

Dois componentes​

O vStack Center é composto por dois serviços. Um aceita solicitações externas; o outro as executa.

ComponenteO que fazCom o que trabalha
cluster-endpointO endpoint HTTPS do cluster. Aceita solicitações HTTP POST com corpo JSON-RPC 2.0, coloca cada solicitação em fila, aguarda a resposta e a devolve ao cliente. Mantém sessões baseadas em cookies. Encaminha por proxy as conexões WebSocket para o console da VMRabbitMQ, o navegador do cliente
dispatcher-clusterO núcleo do vStack Center. Lê as solicitações da fila, verifica permissões, acompanha entidades e operações assíncronas e encaminha o trabalho aos agentesPostgreSQL, SQLite, InfluxDB, Cluster Manager via ZMQ

O cliente vê apenas o primeiro componente: um endereço HTTPS e um formato de corpo. Todo o resto fica oculto atrás da fila.

Caminho da solicitação​

Клиент → cluster-endpoint (HTTPS) → RabbitMQ → dispatcher-cluster → PostgreSQL / SQLite / InfluxDB
│ ZMQ
└→ Cluster Manager → узлы кластера (AMQP)

Клиент → cluster-endpoint (WSS) → VNC-сервер ВМ

O diagrama tem duas implicações práticas. Primeiro, o cluster-endpoint não armazena o estado das operações da aplicação, portanto pode ser reiniciado e escalado separadamente do núcleo. Segundo, o tráfego do console da VM não passa pela fila: ele trafega por WebSocket, diretamente pelo endpoint até o servidor VNC da máquina.

Um protocolo para tudo​

O vStack Center usa apenas JSON-RPC 2.0: cada operação tem um nome, seu próprio conjunto de argumentos e um formato de resposta consistente. A interface web segue o mesmo caminho que um cliente personalizado; o vStack Center não tem uma interface separada para a interface web. Como resultado, tudo o que um administrador faz com o mouse também pode ser feito programaticamente. Por isso, as páginas de procedimentos desta documentação listam, ao final, os métodos de API para as mesmas operações.

A estrutura da resposta é a mesma para todos os métodos. Uma resposta de sucesso contém o payload da operação específica: um objeto, um array ou um valor único. Uma resposta de falha contém um código numérico. Os códigos são agrupados por método, então o número identifica onde a solicitação parou. Os formatos de solicitação e resposta estão descritos na referência Visão geral da API.

Sessão​

O dispatcher não obtém a identidade de quem faz a chamada a partir do transporte. Ele identifica quem faz a chamada por um token de sessão: a interface web recebe um token no login e o apresenta em cada operação, e um cliente personalizado deve fazer o mesmo. O dispatcher rejeita solicitações sem token antes de executar a lógica da aplicação, com o código -9494 ("No session token").

A troca obrigatória de senha segue um caminho separado. Um usuário com esse sinalizador recebe um acesso único válido por 5 minutos em vez de uma sessão regular. Até que a senha seja alterada, ficam disponíveis apenas a própria troca de senha e a leitura da política de senhas. Por isso, a interface web exibe imediatamente o formulário de nova senha, e as demais seções ficam disponíveis após a troca. Os formatos de token e os campos de resposta estão descritos na referência Autenticação.

Quem pode ver o quê​

As permissões no vStack Center são definidas por um papel e seu escopo: o cluster ou um VDC específico. As seções de métodos descrevem o acesso nos mesmos termos: "Cluster master — qualquer VM do cluster" e "usuário comum — apenas VMs nos VDCs em que há papéis atribuídos".

idPapelEscopo
1Cluster MasterAcesso total a todo o cluster
2vDC AdminAdministrador do VDC
3vDC UserUsuário do VDC
4vDC ViewerVisualizador do VDC
5Resource ViewerVisualização dos recursos do cluster
6Security AdminNível do cluster: log de segurança e auditoria
7VM DeveloperNível do VDC: criar e configurar máquinas virtuais

As operações de gerenciamento de VDC, ou seja, criação, modificação e exclusão, estão disponíveis apenas para Cluster Master. O trabalho dentro de um VDC é delegado por meio dos papéis 2–4 e 7. Os papéis 6 e 7 foram introduzidos na 3.0.3.

Métodos síncronos e assíncronos​

Alguns métodos respondem imediatamente porque apenas leem ou gravam no banco de dados. Por exemplo, vm-console retorna os detalhes de conexão sem contatar um nó. Outros métodos respondem depois que um agente confirma que o trabalho foi concluído.

O vms-create segue uma longa sequência: validação de parâmetros, seleção do pool, gravação no banco de dados, repasse ao agente Storage para criar os zvols e, em seguida, repasse ao agente VM para o registro. O cliente recebe a resposta após o processamento de callback em duas fases, e a resposta contém uma descrição completa da VM criada. O vms-start funciona da mesma forma: o método envia um comando ao agente, e a resposta final chega por meio de um callback e contém data.node_id, o nó em que a VM foi iniciada.

A implicação prática é que o cliente precisa ser capaz de esperar. Defina o tempo limite da solicitação com base na duração da operação real no nó, e não na velocidade do banco de dados.

O que saber antes de começar​

Uma solicitação sem token de sessão não será processada. Motivo: o dispatcher identifica quem faz a chamada apenas pelo token de sessão; os cabeçalhos de transporte não são usados para isso. Solução alternativa: apresente o token em todas as chamadas da aplicação; caso contrário, a resposta conterá o código -9494.

Algumas operações terminam depois que a resposta é retornada. Motivo: os agentes nos nós executam o trabalho, e o dispatcher apenas aguarda seus callbacks. Solução alternativa: confie na resposta final do método, e não na primeira, e reserve tempo extra no tempo limite do cliente.

Uma imagem de SO que não está visível retorna "não encontrado" em vez de "acesso negado". Motivo: a existência de uma imagem privada pertencente a outro VDC não é revelada. Se você tentar selecioná-la, o vms-create retorna -256. Solução alternativa: use uma imagem compartilhada no cluster (is_cluster_shared) ou solicite uma concessão de visibilidade da imagem necessária para o seu VDC.

Próximos passos​

O caminho completo do login até uma VM em execução é abordado no início rápido: criação de um VDC, atribuição de uma rede, criação e inicialização de uma máquina e conexão ao seu console.