Para la instalación del servidor Xen no voy a entrar en detalles. Recomendaré la guía para principiantes de la página oficial que explica paso a paso la instalación sobre un sistema Debian stable y old-stable.
Hasta aquí todo muy bien, fácil y sencillo. Pero ¿cómo administrar nuestro servidor de virtualización y las máquinas virtuales desde un entorno más amigable?
Virt-manager es una herramienta bastante completa y sencilla, lease liviana también, con la que administrar nuestros servidores Xen, KVM y contenedores LXC de manera gráfica tanto local como remotamente a través de SSH, certificados digitales u otros...
Pues bien, después de este pequeña introducción vienen los problemas que he tenido a la hora de conectar virt-manager con un servidor Xen y cómo poder solucionarlos.
SSH: Intercambio de clave
Si no tenemos configurado el intercambio de claves entre nuestro equipo y el servidor nos mostrará el siguiente error:
Detalles:
Unable to connect to libvirt.
You need to install openssh-askpass or similar
to connect to this host.
Libvirt URI is: xen+ssh://root@192.168.173.150/
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/connection.py", line 1185, in _open_thread
self.vmm = self._try_open()
File "/usr/share/virt-manager/virtManager/connection.py", line 1167, in _try_open
flags)
File "/usr/lib/python2.7/dist-packages/libvirt.py", line 102, in openAuth
if ret is None:raise libvirtError('virConnectOpenAuth() failed')
libvirtError: Cannot recv data: ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
Permission denied, please try again.
ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
Permission denied, please try again.
ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
Permission denied (publickey,password).
: Conexión reinicializada por la máquina remota
Aparte de la opción que el propio mensaje nos aporta, yo prefiero copiar la clave pública de mi usuario en el servidor remoto ya sea a la antigua usanza* o a través de opciones más modernas.
* cat ~/.ssh/id_rsa.pub | ssh user@address 'cat - >> ~/.ssh/authorized_keys'
Netcat version OpenBSD
Es posible encontrarse con el siguiente error
Detalles:
Unable to connect to libvirt.
The remote host requires a version of netcat/nc
which supports the -U option.
Libvirt URI is: xen+ssh://root@192.168.173.150/
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/connection.py", line 1185, in _open_thread
self.vmm = self._try_open()
File "/usr/share/virt-manager/virtManager/connection.py", line 1167, in _try_open
flags)
File "/usr/lib/python2.7/dist-packages/libvirt.py", line 102, in openAuth
if ret is None:raise libvirtError('virConnectOpenAuth() failed')
libvirtError: End of file while reading data: nc: invalid option -- 'U'
nc -h for help: Error de entrada/salida
Para solucionarlo es necesario instalar la versión OpenBSD del paquete Netcat que utiliza la opción -U para la conexión por sockets Unix.
Demonio libvirtd
Si el demonio libvirtd no está instalado y en ejecución recibiremos el siguiente error
Detalles
Unable to connect to libvirt.
End of file while reading data: nc: unix connect failed: No such file or directory: Error de entrada/salida
Verify that the 'libvirtd' daemon is running
on the remote host.
Libvirt URI is: xen+ssh://root@192.168.173.150/
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/connection.py", line 1185, in _open_thread
self.vmm = self._try_open()
File "/usr/share/virt-manager/virtManager/connection.py", line 1167, in _try_open
flags)
File "/usr/lib/python2.7/dist-packages/libvirt.py", line 102, in openAuth
if ret is None:raise libvirtError('virConnectOpenAuth() failed')
libvirtError: End of file while reading data: nc: unix connect failed: No such file or directory: Error de entrada/salida
Para solucionarlo, es necesario instalar el paquete libvirt-bin en el servidor.
Xen: Servidor HTTP
El siguiente error, a diferencia de los anteriores, no se soluciona instalando ningún paquete
Detalles
Unable to connect to libvirt.
unable to connect to 'localhost:8000': Conexión rehusada
Verify that the 'libvirtd' daemon is running
on the remote host.
Libvirt URI is: xen+ssh://root@192.168.173.150/
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/connection.py", line 1185, in _open_thread
self.vmm = self._try_open()
File "/usr/share/virt-manager/virtManager/connection.py", line 1167, in _try_open
flags)
File "/usr/lib/python2.7/dist-packages/libvirt.py", line 102, in openAuth
if ret is None:raise libvirtError('virConnectOpenAuth() failed')
libvirtError: unable to connect to 'localhost:8000': Conexión rehusada
Para solucionarlo basta con editar el fichero de configuración /etc/xen/xend-config.sxp, añadir la siguiente línea (xend-http-server yes) y reiniciar el servicio con /etc/init.d/xen restart.
Listo, ya está conectado virt-manager a nuestro servidor Xen. He realizado varias instalaciones con el mismo comportamiento, todas ellas realizadas en máquina virtual sobre VirtualBox con Debian Wheeze versión 7.4 como sistema base.
Un saludo, Brixton Cat.
gracia por el post, me sirvio de mucho
ResponderEliminartuve el mismo problema con LXC
Saludos, tengo una consulta.. me funciona bien todo, pero al momento de iniciar una conexión no me aparece el "Domain-0" en el virt-manager en la parte donde sale el listado de maquinas virtuales.. que estoy haciendo mal?.. o me falta algo??
ResponderEliminarBuenas Jose,
EliminarCon una pequeña búsqueda en google he llegado hasta el siguiente mensaje: https://www.redhat.com/archives/virt-tools-list/2015-February/msg00008.html y en las respuestas al mismo comentan que las nuevas versiones del driver libxl ignoran el dom0.
Inicialmente no parece ser un problema y deberías poder verlo activo con el comando xm list o virsh -c xen:/// list --all. No tengo mucha experiencia en Xen y la verdad es que después de esta entrada no he vuelto a meterle mano pero se supone que todo debería estar en orden y podrias crear las máquinas virtuales sin problemas.
En cualquier caso, si tienes algún problema no dudes en comentarlo para que todos aprendamos. Un saludo.