Aumentar/Reducir la capacidad de máquinas virtuales en Azure de manera programada
Buenas
Hoy me gustaría explicar el procedimiento para aumentar o disminuir la capacidad de nuestras máquinas virtuales en azure cambiando el tipo de las mismas.
Es bien sabido por todo que Microsoft factura las máquinas virtuales de Azure al igual que el resto de hosters dependiendo del tamaño de las mismas. Por lo tanto la cantidad de memoria y de cpu asignada a una máquina virtual será directamente proporcional al precio que pagaremos por tener la misma en ejecución. Igualmente es importante mencionar que Azure calcula el precio de facturación de las máquinas virtuales por minuto, por lo tanto nos beneficiaremos de una precio mas ventajoso solamente un minuto después de reducir la capacidad y tendremos que pagar un precio más elevado justo un minuto después.
Teniendo en cuenta los puntos mencionados podemos imaginar que el propósito principal detrás de aumentar o la reducir la capacidad es tener un ahorro costes el cual podemos conseguir reduciendo la capacidad cuando nuestros servidores son menos demandados y aumentando la capacidad en las horas de actividad pico.
Una vez tenemos claro en que momentos podemos reducir la capacidad de nuestros servidores (en la mayoría de los casos por las noches y fines de semana) seremos capaces de manera programada cambiar el tipo de máquina virtual por una de menor o mayor capacidad según convenga. Igualmente me gustaría remarcar que el cambio de tipo de máquina virtual requiere un reinicio de la misma, es más en nuestro ejemplo primero apagaremos la misma para posteriormente cambiar el tipo y volverla a ejecutar.
Una vez hecha breve introducción pasamos a ver de manera práctica como cambiar el tipo de máquina virtual en azure de manera programada.
1- Lo Primero que debemos hacer es crear una cuenta de automatización en Windows Azure y definir los credenciales que usaremos para ejecutar Runbooks en la misma. El procedimiento para realizar estas tareas podéis encontrarlo en este post
(pasos del 1 al 7)
2- Creamos un runbook
3- Accedemos a la parte de editado del workflow e introducimos el siguiente código
Ademas dejaros el pantallazo del mismo os lo dejo en texto plano para facilitar el realizar copy y paste del mismo.
workflow reduce_capacity
{
$cred = Get-AutomationPSCredential -Name «PShell_Credentials»
Add-AzureAccount -Credential $cred
Stop-AzureVm -ServiceName tstsamw2k12r2 -Name tstsamw2k12r2
InlineScript{$azureVM = Get-AzureVM -ServiceName ‘tstsamw2k12r2’ -Name ‘tstsamw2k12r2’
Set-AzureVMSize -VM $azureVM -InstanceSize ‘Basic_A3’ | Update-AzureVM}
Start-AzureVm -ServiceName tstsamw2k12r2 -Name tstsamw2k12r2
}
Evidentemente en vuestros script deberéis de editar los valores para los credenciales guardados así como el nombre de de la máquina y el tipo de la mismas ‘Basic_A3’ en mi caso.
4- Por último definiremos un programación asociada al runbook
Espero que resulte de utilidad.
Un saludo