Pular para o conteúdo principal

O console VNC não abre

Sintoma​

O console da máquina virtual não abre na interface web, e a conexão não é estabelecida.

Como verificar​

Siga estas etapas na ordem: cada etapa só é relevante se a verificação anterior tiver passado.

  1. Estado da máquina. O console abre apenas para uma máquina em execução: verifique a coluna State na lista de VMs. Uma máquina parada não tem botão de console.
  2. Permissões. O privilégio Access VM Console (1102) permite abrir o console. Sem ele, a chamada retorna -403.
  3. Log de segurança. Na seção Security Event Log, defina o filtro Category como virtual machines. Uma conexão bem-sucedida registra vm.console_connected, uma conexão com falha registra vm.console_connect_failed, e a própria solicitação do console registra vm.console_access. Esses eventos mostram se a solicitação chegou à ponte WSS ou falhou antes. Os dois primeiros tipos de evento foram introduzidos na 3.0.5.
  4. Caminho de rede até o endpoint HTTPS. A conexão WebSocket precisa atravessar todo o caminho: proxies e balanceadores de carga que não repassam Upgrade quebram a conexão do console, enquanto as chamadas comuns da API continuam funcionando.

Causa​

O console funciona pelo proxy WebSocket no endpoint HTTPS do cluster. A indisponibilidade geralmente é causada por uma sessão expirada ou por uma conexão WebSocket bloqueada no caminho até o endpoint HTTPS.

Há também uma terceira causa, menos óbvia: o mapeamento "token do console–máquina" é mantido na memória do dispatcher por 300 segundos, que também é o tempo de vida padrão da ponte WSS. O mapeamento deliberadamente não é persistente. Isso tem duas consequências. Um link de console não pode ser aberto mais tarde: após cinco minutos, ele não está mais associado a nada. Reiniciar o dispatcher perde o mapeamento. Os consoles abertos continuam funcionando porque o endpoint HTTPS do cluster mantém a ponte. O enriquecimento do log é perdido: o evento de conexão é registrado sem o usuário nem a máquina, restando apenas a impressão digital do token e o endereço do cliente no registro.

As falhas da própria chamada de console têm códigos específicos: -3103 significa que não existe máquina com esse ID ou que ela está fora do seu escopo de visibilidade; -3112 significa que foi solicitado um tipo de console sem suporte; -403 significa que falta o privilégio; -78 significa um erro de banco de dados.

Resolução​

Renove a sessão (entre novamente) e verifique se o caminho de rede até o endpoint HTTPS do cluster permite conexões WebSocket; depois, abra o console de novo.

Se o log mostrar vm.console_connect_failed, a solicitação chegou à ponte, e o problema é a rede ou o tempo de vida do mapeamento: abra o console novamente pela interface, e não por um link salvo. Se o log não contiver nenhum dos três eventos, a falha ocorreu antes da ponte: verifique o estado da máquina e o privilégio.

Métodos da API​

As operações da API abordadas nesta página são vm-console, vm-get e security-event-list. Consulte a referência da API.

Veja também​