Saltar al contenido principal

No se puede abrir la consola VNC

Síntoma​

La consola de la máquina virtual no se abre en la interfaz web y la conexión no se establece.

Cómo comprobarlo​

Siga estos pasos en orden: cada paso solo es pertinente si la comprobación anterior se supera.

  1. Estado de la máquina. La consola solo se abre para una máquina en ejecución: revise la columna State de la lista de VM. Una máquina detenida no tiene botón de consola.
  2. Permisos. El privilegio Access VM Console (1102) permite abrir la consola. Sin él, la llamada devuelve -403.
  3. Registro de seguridad. En la sección Security Event Log, establezca el filtro Category en virtual machines. Una conexión correcta registra vm.console_connected, una conexión fallida registra vm.console_connect_failed, y la propia solicitud de consola registra vm.console_access. Estos eventos muestran si la solicitud llegó al puente WSS o falló antes. Los dos primeros tipos de evento se introdujeron en la versión 3.0.5.
  4. Ruta de red hasta el endpoint HTTPS. La conexión WebSocket debe atravesar toda la ruta: los proxies y balanceadores de carga que no transmiten Upgrade interrumpen la conexión de la consola, mientras que las llamadas normales a la API siguen funcionando.

Causa​

La consola funciona a través del proxy WebSocket del endpoint HTTPS del clúster. La falta de disponibilidad suele deberse a una sesión caducada o a una conexión WebSocket bloqueada en la ruta hacia el endpoint HTTPS.

Existe también una tercera causa, menos evidente: la correspondencia "token de consola–máquina" se mantiene en la memoria del dispatcher durante 300 segundos, que es también la duración predeterminada del puente WSS. La correspondencia no es persistente de forma deliberada. Esto tiene dos consecuencias. Un enlace de consola no se puede abrir más tarde: pasados cinco minutos, ya no está asociado a nada. Al reiniciar el dispatcher se pierde la correspondencia. Las consolas abiertas siguen funcionando porque el endpoint HTTPS del clúster mantiene el puente. Se pierde el enriquecimiento del registro: el evento de conexión se registra sin el usuario ni la máquina, y en el registro solo quedan la huella del token y la dirección del cliente.

Los fallos de la propia llamada a la consola tienen códigos propios: -3103 significa que no existe ninguna máquina con ese ID o que está fuera de su ámbito de visibilidad; -3112 significa que se solicitó un tipo de consola no compatible; -403 significa que falta el privilegio; -78 significa un error de la base de datos.

Solución​

Renueve la sesión (vuelva a iniciar sesión) y verifique que la ruta de red hasta el endpoint HTTPS del clúster permite conexiones WebSocket; después, vuelva a abrir la consola.

Si el registro muestra vm.console_connect_failed, la solicitud llegó al puente y el problema es la red o la duración de la correspondencia: vuelva a abrir la consola desde la interfaz y no desde un enlace guardado. Si el registro no contiene ninguno de los tres eventos, el fallo se produjo antes del puente: compruebe el estado de la máquina y el privilegio.

Métodos de la API​

Las operaciones de la API tratadas en esta página son vm-console, vm-get y security-event-list. Consulte la referencia de la API.

Véase también​