Hola
Se acaba de hacer público lo siguiente:
Ya iremos contando más. Me voy para el campus
Saludos
David Cervigón
Mañana se van a anunciar algunas cosas muy interesantes. Será durante una Webcast gratuita de una hora, a la que os podéis apuntar aquí:
A medida que nos podamos ir de la lengua sin violar ninguna política de la compañía, intentaré dar más detalles por aquí.
Después de 18 horas de viaje puerta a puerta, y de haber pasado la primera noche de duermevelas y el subsiguiente duro día de trabajo, aquí estamos.
Durante esta semana y la que viene un buen número de empleados de Microsoft nos juntaremos por aquí para atender a una especie de Mini-TechEd interno que llamamos TechReady, donde aprovechamos para cargar la pilas con contenido nuevo, ponernos al día de las novedades de los productos y tecnologías que mas nos tocan y contrastar opiniones con compañeros de otros países y con los diferentes grupos de producto. Y de paso, arrasar malls y outlets a golpe de tarjeta de crédito, aprovechando que el dólar anda flojo.
Además, siempre es un gusto darse una vuelta por el campus, y mejor en días como hoy, mucho más primaverales de lo que he dejado atrás en Madrid. Mañana antes de empezar con el curso voy a ver si me da tiempo a pasarme por la tienda del empleado y darme una vuelta por el museo, a ver si sigue una foto mía expuesta por ahí (es una larga historia).
Las fotos no son mías, pero intentaré empollarme el manual de la nueva SLR y colgar por aquí algo decente.
Posts anteriores:
Una vez repasado en los post anteriores los requisitos que necesarios a nivel de directorio activo, red y almacenamiento, vamos a pasar a exponer cómo instalar los hosts con Hyper-V, tanto en configuraciones stand-alone como en cluster. Si bien a estas alturas creo que escribir un paso a paso sobre cómo instalar Windows Server 2008 R2 está de más, vamos a centrarnos en una serie de consejos prácticos que pueden ayudar a que este sea el paso más sencillo y rápido del montaje de todo el entorno, y que agregar nuevos hosts sea cuestión de pinchar un pendrive e irnos a tomar un café. Los interesados en el paso a paso detallado pueden consultar:
Antes de nada, vamos a repasar rápidamente las tres opciones que tenemos para montar Hyper-V en un servidor:
Gran parte de la configuración posterior puede realizarse también de manera centralizada desde Virtual Machine Manager, pero en este caso vamos a realizarla manualmente.
Automatización de la instalación de los hosts mediante un pendrive y un fichero autounattend.xml
Una vez en nuestro poder los DVDs o imágenes ISO necesarias es el momento de ponerse manos a la obra con la instalación. Si bien todos los fabricantes de servidores incluyen herramientas para poder montar medios virtuales por la red, mi experiencia es que lleva más tiempo lograr que la conexión remota funcione bien y que los ficheros se copien por la red que lo que se tarda realmente en instalar y configurar el sistema.
Por tanto solemos tener a mano uno o varios pendrives sobre los que hemos volcado todos los ficheros del medio de instalación, de manera que, si hacemos arrancar de dicho dispositivo al servidor, la instalación se realiza de manera mucho más rápida en cuestión de pocos minutos. Estos son los pasos para preparar previamente el pendrive (de 4GB mínimo) en un equipo con Windows Vista/7/2008/2008 R2
Con esto tendremos ya listo un pendrive arrancable que se comportará exactamente igual que el DVD si hacemos que el servidor arranque de él. Nos pedirá la configuración de idioma, teclado, edición de Windows Server 2008 R2 a instalar, si full o si core, el disco y la partición y el proceso terminará solicitando que introduzcamos una contraseña compleja para el administrador local. El sistema quedará instalado con un nombre aleatorio, sin ningún tipo de configuración predefinida y sin funcionalidades ni características. Hemos quedado en que nos apetece un café o dedicarnos a tareas un poco más gratificantes, así es que vamos a automatizar un poco más el proceso.
El proceso de instalación de los sistemas operativos a partir de Windows Vista buscan al principio de la instalación un fichero autounattend.xml con las opciones de instalación desatendida en dos sitios: el propio medio de instalación y luego en un medio externo que puede ser un dispositivo de almacenamiento USB o un disquete. Aprovechando que en el pendrive que hemos preparado es fácil crear y copiar un fichero, colocaremos el autounattend.xml en su carpeta raíz.
Esto es lo que vamos a automatizar en el caso de que queramos utilizar el role de Hyper-V incluido en Windows Server 2008 R2, usando para la partición padre una instalación bien “Full” bien “Server Core”. Puede hacerse algo similar para Hyper-V Server 2008 R2 (descarga gratuita), si bien la instalación del mismo ya esta bastante automatizada de por sí:
NOTA: El proceso de instalación tiene un reinicio. Si hemos configurado el servidor para que siempre arranque del dispositivo extraíble y hemos llegado a automatizar el proceso completamente, la instalación se llevará a cabo una y otra vez de manera iterativa mientras disfrutamos de nuestro café. Dependiendo de la BIOS del servidor, es posible seleccionar el dispositivo extraíble como medio de arranque ocasional, de modo que la instalación continúe sin problemas en el siguiente reinicio, ya desde el almacenamiento local o de la SAN del servidor.
1.- Fichero autounattend.xml para Windows Server 2008 R2 Datacenter “Full”. En rojo lo que tenemos que modificar para ajustarlo a cada servidor en particular:
<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <servicing> <package action="configure"> <assemblyIdentity name="Microsoft-Windows-Foundation-Package" version="6.1.7600.16385" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="" /> <selection name="Microsoft-Hyper-V" state="true" /> <selection name="Microsoft-Hyper-V-Management-Clients" state="true" /> <selection name="VmHostAgent" state="true" /> <selection name="MultipathIo" state="true" /> <selection name="TelnetClient" state="true" /> <selection name="WindowsServerBackup" state="true" /> <selection name="WindowsServerBackupCommandlet" state="true" /> <selection name="FailoverCluster-AdminPak" state="true" /> <selection name="FailoverCluster-FullServer" state="true" /> </package> </servicing> <settings pass="windowsPE"> <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SetupUILanguage> <UILanguage>en-US</UILanguage> </SetupUILanguage> <SystemLocale>es-ES</SystemLocale> <UserLocale>es-ES</UserLocale> <InputLocale>040a;0000040a</InputLocale> <UILanguage>en-US</UILanguage> <UILanguageFallback></UILanguageFallback> </component> <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UserData> <ProductKey> <WillShowUI>Never</WillShowUI> </ProductKey> <AcceptEula>true</AcceptEula> <FullName>Nombre</FullName> <Organization>Empresa</Organization> </UserData> <ImageInstall> <OSImage> <InstallFrom> <MetaData wcm:action="add"> <Value>Windows Server 2008 R2 SERVERDATACENTER</Value> <Key>/IMAGE/NAME</Key> </MetaData> </InstallFrom> </OSImage> </ImageInstall> </component> </settings> <settings pass="specialize"> <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <fDenyTSConnections>false</fDenyTSConnections> </component> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ComputerName>Servidor1</ComputerName> <RegisteredOwner>Emresa</RegisteredOwner> <TimeZone>Romance Standard Time</TimeZone> </component> <component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Identification> <Credentials> <Domain>Dominio</Domain> <Username>administrator</Username> <Password>password</Password> </Credentials> <JoinDomain>dominio.local</JoinDomain> </Identification> </component> </settings> <cpi:offlineImage cpi:source="wim:j:/sources/install.wim#Windows Server 2008 R2 SERVERDATACENTER" xmlns:cpi="urn:schemas-microsoft-com:cpi" /> </unattend>
2.- Fichero autounattend.xml para Windows Server 2008 R2 Datacenter “Server Core”.
<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <servicing> <package action="configure"> <assemblyIdentity name="Microsoft-Windows-ServerCore-Package" version="6.1.7600.16385" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="" /> <selection name="FailoverCluster-Core" state="true" /> <selection name="Microsoft-Hyper-V" state="true" /> <selection name="MultipathIo" state="true" /> <selection name="WindowsServerBackup" state="true" /> <selection name="WindowsServerBackupCommandlet" state="true" /> <selection name="NetFx2-ServerCore" state="true" /> <selection name="MicrosoftWindowsPowerShell" state="true" /> <selection name="TelnetClient" state="true" /> </package> </servicing> <settings pass="windowsPE"> <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SetupUILanguage> <UILanguage>en-US</UILanguage> </SetupUILanguage> <SystemLocale>es-ES</SystemLocale> <UserLocale>es-ES</UserLocale> <InputLocale>040a;0000040a</InputLocale> <UILanguage>en-US</UILanguage> <UILanguageFallback></UILanguageFallback> </component> <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UserData> <ProductKey> <WillShowUI>Never</WillShowUI> </ProductKey> <AcceptEula>true</AcceptEula> <FullName>Nombre</FullName> <Organization>Empresa</Organization> </UserData> <ImageInstall> <OSImage> <InstallFrom> <MetaData wcm:action="add"> <Value>Windows Server 2008 R2 SERVERDATACENTERCORE</Value> <Key>/IMAGE/NAME</Key> </MetaData> </InstallFrom> </OSImage> </ImageInstall> </component> </settings> <settings pass="specialize"> <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <fDenyTSConnections>false</fDenyTSConnections> </component> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ComputerName>Servidor1</ComputerName> <RegisteredOwner>Nombre</RegisteredOwner> <TimeZone>Romance Standard Time</TimeZone> </component> <component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Identification> <Credentials> <Domain>dominio</Domain> <Username>administrator</Username> <Password>password</Password> </Credentials> <JoinDomain>dominio.local</JoinDomain> </Identification> </component> </settings> <cpi:offlineImage cpi:source="wim:j:/sources/install.wim#Windows Server 2008 R2 SERVERDATACENTERCORE" xmlns:cpi="urn:schemas-microsoft-com:cpi" /> </unattend>
Tenéis más información sobre todos estos temas aqui:
Una vez terminado el proceso de instalación, ya tendremos el servidor corriendo Hyper-V, configurado con su propio nombre, metido en el dominio y con todo lo necesario para pasar a configurar la red y el almacenamiento tal y como hemos planificado en los posts anteriores. Deberemos configurar el direccionamiento IP deseado en cada interfaz según el uso al que se vaya a dedicar y preparar los volúmenes que nos vienen desde el almacenamiento compartido.
Configuración de Hyper-V
Dado que Hyper-V ya deberá estar corriendo por debajo de la partición padre, solo necesitaremos crear manualmente los switches virtuales a los que conectaremos las máquinas virtuales y elegir en que carpetas del almacenamiento guardaremos los ficheros de configuración de las máquinas virtuales, sus discos y las snapshots.
Como decíamos en los posts anteriores, es muy importante acostumbrarse a ser consistente con estas nomenclaturas, incluso en entornos de laboratorio.
Creación del cluster
En Windows Server 2008 y Windows Server 2008 R2 es posible crear sistemas cluster con servidores bastante diferentes entre si. Sin embargo para formar un cluster con Hyper-V deberemos elegir nodos lo más homogéneos posible, dentro de que es posible cierta disparidad. En cualquier caso no será posible tener ni Quick ni Live Migration entre sistemas con diferente fabricante de procesador (Intel y AMD) y para procesadores de diferentes familias dentro del mismo fabricante, es posible habilitar en el procesador de las máquinas virtuales el modo de compatibilidad para que los movimientos entre hosts sean posibles.
Podemos crear el cluster desde cualquier equipo en el que hayamos instalado la consola, que puede ser uno de los nodos que lo conformarán. Este es el proceso paso a paso:
Primeramente agregamos los servidores que conformarán el cluster y pasamos el proceso de validación sobre ellos.
Una vez validado el sistema (en este ejemplo faltaban por presentar los discos y por configurar la red interna y de ahí la advertencia), podemos pasar a crear al cluster en tres sencillos pasos que se reducen a elegir su nombre y su dirección IP:
Tras este proceso ya tendremos nuestro cluster activo, y si todo ha ido bien veremos en el apartado del almacenamiento el quorum y los discos presentados a ambos nodos desde la SAN como almacenamiento disponible. Solo nos queda un par de pasos:
Tenéis mas información al respecto y un video aquí:
Con respecto a la red, es conveniente también renombrar en la consola cada una de las redes y revisar si el uso que hará de ellas el cluster es el que hemos planificado según el post anterior. He aquí como queda en nuestro poco recomendado caso de tener solo dos NICs en los hosts:
Recordemos que el trafico de red correspondiente al funcionamiento de los CSVs fluye por la red de menor métrica. Aquí esta documentado como tener control de esto:
Ya podemos proceder a crear las máquinas virtuales. En los servidores stand-alone podremos crearlas desde la consola de Hyper-V. Las que queramos dotar de alta disponibilidad y capacidades de Live Migration pueden crearse directamente usando la consola de Failover Cluster, ya que ambas consolas están integradas:
Por último, podemos definir cual va ser la red que se utilizará para el proceso de Live Migration. Este es un parámetro global, que afecta a todas las VMs de un cluster, pero que se define sobre cualquiera de ellas. En nuestro caso no hay muchas opciones
A partir de este momento ya tenemos la base montada para poder correr encima todas las máquinas virtuales que sean capaces de mover los servidores de los que dispongamos.
Merece la pena darse una vuelta:
Se acaba de publicar este Whitepaper, que he añadido a la colección de recursos sobre Hyper-V:
La metodología utilizada se ha orientado a discernir cual el la penalización de rendimiento de introducir en la ecuación la pila de encapsulamiento de datos dentro del formato VHD, por un lado, y por otro evaluar qué sucede al meter además la capa de Hypervisor.
Como ya hemos comentado en alguna ocasión, el conocimiento de los patrones de uso del IO de aquello que pretendemos virtualizar por un lado, y de como se comporta nuestro almacenamiento puede tener mucho más impacto que aplicar la regla bien conocida de que un disco pass-throug tiene mejor rendimiento que un VHD de tamaño fijo, este a su vez mejor que un de crecimiento dinámico, y que cuantos mas discos diferenciales enlacemos peor rendimiento tendremos. Conviene estudiarse la tabla de pros y contras, porque muchas veces por diferencias de rendimiento casi despreciables perdemos funcionalidades que nos pueden resultar muy útiles.
Os recomiendo su atenta lectura.