Seguiremos extendiendo nuestro laboratorio de pruebas, esta vez agregando la funcionalidad de Personal Virtual Desktops, con acceso por Remote Desktop Web Access.
El objetivo es proveer a cada usuario con una máquina virtual personal, a la cual cada usuario podrá acceder a través de acceso web (Web Access)
Para esta nueva experiencia deberemos agregar agregar a nuestra infraestructura existente un equipo con capacidades para virtualizar Hyper-V
En mi desarrollo, y hasta ahora, he utilizado todas máquinas virtuales, pero este nuevo equipo será una máquina real (no virtual), por el hecho de tener que virtualizar a otras.
Antes que alguien comente, si, ya sé, hay posibles trucos mediante para poder virtualizar dentro de una virtual, yo lo he hecho y funciona bastante bien.
Pero en este caso, por tema performance y requerimientos de hardware he preferido poner un equipo aparte para que funcione como Remote Desktop Virtualization Host
¡Comencemos! Lo primero es disponer de un equipo capaz de virtualizar con Hyper-V, lo que implica tres condiciones:
- Plataforma x64
- Soporte de virtualización (Intel-VT o AMD-V)
- Soporte DEP (NX = No execute)
- Hardware suficiente para ejecutar por lo menos un Windows 7
Este equipo lo deberemos unir al Dominio existente, no lo describiré ya que supongo que todos tienen claro el procedimiento
En mi caso este equipo ya tenía instalado Hyper-V y creada una máquina virtual Windows 7 Enterprise x86
En otro caso, cuando agreguen el rol de Remote Desktop Virtualization Host agregará automáticamente Hyper-V, y deberán crear por lo menos una máquina virtual con Windows 7 Enterprise Edition, para asignar al usario. Para que tengan de referencia, en mi caso la máquina real se llama Core2Quad.guillermod.local
Remote Desktop Virtualization Host es un Role Services de Remote Desktop, así que como es normal entramos por Server Manager y lo agregamos. Recordar que en mi laboratorio ya esta instalado Hyper-V
Como tenía con antelación instalado Hyper-V, y creada una máquina virtual, si entramos a Hyper-V Manager, podemos ver lo siguiente
IMPORTANTE: El nombre de la máquina virtual en Hyper-V debe coincidir con el nombre de máquina que se asignará al usuario. Así en mi caso debí renombrar la máquina virtual a VD1.guillermod.local, que es el nombre que usaré luego.
Esta máquina Win7 Enterprise la he puesto sobre una red capaz de comunicarse con el Controlador de Dominio, le he configurado la red adecuadamente, y la he unido al Dominio. Todo de acuerdo a las siguientes figuras
Para que este equipo pueda funcionar como Remote Desktop Personal, hay que hacer varias configuraciones, entre ellas:
- Habilitar Remote Desktop
- Habilitar Remote Procedure Call
- Agregar al usuario al grupo Remote Desktop Users
- Agregar los permisos al RDP-TCP Listener al Virtualization Host Server
- Agregar en el cortafuegos la excepción para Remote Desktop
- Agregar en el cortafuegos la excepción para Remote Services Management
- Reinciar Remote Desktop Service
¿Trabajoso verdad? pero tenemos la solución sencilla. Hay un script PowerShell en el Technet Scripting Center que puede hacer todo de una vez, y lo más importante, sin errores 😉
Lo pueden bajar desde http://go.microsoft.com/fwlink/?LinkId=184804
Copiamos el script al Windows 7 virtual que tenemos y ejecutamos:
Set-ExecutionPolicy remotesigned –force
Y luego ejecutamos (Atención con el “.” al principio de la línea):
.Configure-VirtualMachine.ps1 –RDVHost guillermodCore2Quad –RDUsers guillermodRD-User1
Estemos seguros que no da ningún error
Y ya podemos proceder al shutdown de este equipo
Ahora vamos a nuestro Remote Desktop Connection Broker (RDCB) e ingresamos a Remote Desktop Connection Manager, y seleccionamos sobre la derecha la opción: Configure Virtual Desktop Wizard, y seguimos el asistente
Con el nombre y el botón Add, agregarmos a nuestro Remote Desktop Virtualization Host
Agregamos al Remote Desktop Host que hará la redirección
Encuentra automáticamente al Remote Desktop Web Access debido a la configuración de las prácticas anteriores
Confirmamos y aplicamos
Revisamos que esté marcada la opción: Assign Personal Virtual Desktop y finalizamos
Automáticamente comenzará el asistente para asignar la máquina virtual. En el mismo lo primero es asignar a qué usuario, cuál escritorio virtual
En nuestro caso yo he creado una sola máquina virtual, así que no habiendo más desmarco la opción para asignar otra virtual a otro usuario
¡Bién! Llegó el momento de probar desde el cliente con el usuario en cuestión, y verificar que todo funcionará de acuerdo a lo previsto
En CL1, iniciamos sesión con RD-User1, y accedemos al Web Access (https://wa1.guillermod.local/RDWeb) e iniciamos sesión
Podemos observar que ahora aparece un nuevo icono llamado My Desktop el cual pulsaremos
Iniciamos sesión
Un poco de suspenso 😉
Tengamos en cuenta que en este momento está levantando la máquina virtual, así que dependiendo de la potencia de nuestro Remote Desktop Virtualization Host podrá demorar algún tiempo
Y finalmente
Podemos notar que RD-User1 que inició sesión en CL1, está conectado a por Remote Desktop, a un equipo virtual VD1, que se está ejecutando en nuestro Remote Desktop Virtualization Host (Core2Quad)
Resumiendo, de esta forma podemos asignar a cada usuario “su propia máquina virtual”, y facilitando el acceso a la misma a través de Remote Desktop Web Access
No es la finalidad de este laboratorio de prueba, pero en forma totalmente análoga podemos crear “n” máquinas virtuales para asignarle cada una a un usuario en particular.
Comments
Fatal error: Uncaught Error: Call to undefined function ereg() in F:\blogs.itpro.es\wp-content\themes\notesil\functions.php:333 Stack trace: #0 F:\blogs.itpro.es\wp-content\themes\notesil\functions.php(35): notesil_commenter_link() #1 F:\blogs.itpro.es\wp-includes\class-walker-comment.php(179): notes_comments(Object(WP_Comment), Array, 1) #2 F:\blogs.itpro.es\wp-includes\class-wp-walker.php(145): Walker_Comment->start_el('', Object(WP_Comment), 1, Array) #3 F:\blogs.itpro.es\wp-includes\class-walker-comment.php(139): Walker->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #4 F:\blogs.itpro.es\wp-includes\class-wp-walker.php(387): Walker_Comment->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #5 F:\blogs.itpro.es\wp-includes\comment-template.php(2174): Walker->paged_walk(Array, '5', 0, 0, Array) #6 F:\blogs.itpro.es\wp-content\themes\notesil\comments.php(25): wp_list_comments('type=comment&ca...') #7 F:\blogs.itpro.es\wp-includes\comment-template.php(1512): require('F:\\blogs.itpro....') #8 F:\ in F:\blogs.itpro.es\wp-content\themes\notesil\functions.php on line 333