Cómo resolver el error de inicio de sesión de VM basado en VNC

Pubilicado 2019-1-23 07:56:16 17 0 0 0

[Tipo de falla]: la máquina virtual no puede iniciar sesión a través de VNC.


[Palabra clave]: excepción de inicio de sesión de VNC, no se puede leer el byte


[Versión aplicable]: todas las versiones de FusionCompute V100R003C00


[Síntoma]
Después de que un usuario haga clic en el botón de acceso al servidor en la nube en el centro de usuarios de CSB, no se mostrará la ventana VNC. El usuario no puede acceder al servidor en la nube a través de VNC, y se muestra un mensaje de error que indica que la conexión falla y le pregunta si se debe volver a conectar.


[Información de alarma]
Ninguna


[Análisis de causa]
1. En la ventana FusionCompute, inicie sesión en la VM defectuosa a través de VNC. El inicio de sesión se realiza correctamente, lo que indica que la máquina virtual está funcionando correctamente.
2. Acceda remotamente a la máquina virtual en modo mstsc. El acceso también es exitoso, lo que indica que la red de servicio de la máquina virtual de destino es normal.
3. Cuando un usuario accede al servidor de la nube en el centro de usuarios de CSB, la respuesta de acceso que devuelve el servidor de la nube pasará a través de la máquina virtual del SSM. Es decir, cuando un usuario accede a la VM A objetivo, los paquetes transmitidos por la VM A serán enviados por el SSM VM antes de llegar al cliente.
4. Inicie sesión en el nodo CNA donde reside la VM SSM, deshabilite el atributo tx-checksumming del NIC backend de la VM SSM (vea la solución para el método de desactivación detallado) e intente acceder al servidor de la nube en el usuario CSB centro de nuevo La ventana VNC se muestra correctamente y el problema desaparece.
La causa es la siguiente: el modo de agregación de NIC físico en el nodo CNA es frag_list. En este modo de agregación, netback no envía paquetes grandes a la VM, sino que los fragmenta. Durante la fragmentación, la suma de comprobación de los paquetes es parcial, por lo que la suma de comprobación no se calcula. Después de que la VM reciba los paquetes, cambiará de forma parcial a checksum_unnecessary si la suma de comprobación es parcial y no calcula la suma de comprobación. Después de que los paquetes se reenvían y pasan a través de la NIC física en el nodo CNA, la NIC física encuentra que la suma de comprobación es innecesaria y, por lo tanto, no la computa. Por lo tanto, los paquetes cuyo atributo es checksum_unnecessary y checksum is incorrect se transmiten al cliente. El cliente considera los paquetes como paquetes anormales, y la ventana VNC no se muestra.
[Solución]
1. Inicie sesión en el nodo CNA donde reside la máquina virtual de SSM y ejecute el comando virsh list para consultar la información de la máquina virtual en el nodo.
En este caso, el ID de VM de SSM es 4.
Figura 1 Ejecutando el comando virsh list


53fd808eaf40d.PNG

2. Ejecute el virsh dumpxml 4 | grep -E El comando "mac address | vif pci" para consultar la relación de mapeo entre la dirección MAC de la VM y el VIF PCI.
Si la VM tiene varias NIC, se muestran múltiples registros, como se muestra en la Figura 2. Puede obtener la VIF PCI basada en la dirección MAC de la NIC de la VM y obtener el nombre de la NIC de fondo de la NIC de la VM utilizada para recibir paquetes: vif {Id }. En la Figura 2, la VM tiene dos NIC backend: vif9.0 y vif 9.1. En este caso, solo existe un NIC backend vif4.0.
Figura 2 relación de mapeo


53fd80a472f10.PNG

3. Ejecute el comando ethtool -k vif4.0 para ver los atributos avanzados de la NIC backend de VM. El atributo tx-checksumming está habilitado.
Figura 3 atributo x-checksumming


53fd80adf0574.PNG


4. Ejecute el comando ethtool -K vif4.0 tx off para deshabilitar el atributo tx-checksumming de la NIC backend de la VM, permitiendo que la VM OS verifique los paquetes y elimine aún más la excepción de la suma de comprobación.

  • x
  • convención:

Responder

Responder
Debe iniciar sesión para responder la publicación Inicio de sesión | Registrarse

Aviso: Para garantizar sus legítimos derechos e intereses, la comunidad y los terceros no publicarán contenido que pueda generar riesgos legales a las partes, por ejemplo, pornografía, contenido político, contenido sobre juego, consumo y tráfico de drogas, así como contenido que viole los derechos de propiedad intelectual de terceros, por ejemplo, secretos comerciales, marcas, derechos de autor, patentes y privacidad personal. No comparta su cuenta ni su contraseña con terceros. Todas las operaciones realizadas usando su cuenta se considerarán como sus acciones y todas las consecuencias que estas acciones generen serán responsabilidad suya. Para obtener información detallada, consulte la “ Política de privacidad.”
Si el botón para adjuntar no está disponible, actualice Adobe Flash Player con la versión más reciente
Respuesta rápida Desplácese hasta arriba