Mostrando entradas con la etiqueta Offtopic. Mostrar todas las entradas
Mostrando entradas con la etiqueta Offtopic. Mostrar todas las entradas

lunes, 28 de mayo de 2012

Balancear maquinas virtuales en un cluster con PowerShell

Otro Offtopic, pero no podía dejar de publicar este script de Powershell que hice para distribuir las virtuales en un cluster.
Primero vale aclarar que mis conocimientos de PowerShell son mínimos, y es un lenguaje que me resulta muy difícil de entender y aprender. Vengo del mundo de la programación dura y estructurada, y PowerShell se toma demasiadas "licencias" para mi gusto, por lo que me resulta difícil entender su comportamiento muchas veces.
Aún así hice este sencillo script cuya tarea es bastante simple. Lo que hace es contar el número de maquinas virtuales en un cluster y distribuirlas entre todos los nodos. El "balanceo" no tiene en cuenta recursos, ni nada parecido, es simplemente un conteo de virtuales, pero en mi caso y dentro de nuestra infraestructura resulta bastante útil.

Aquí el script:


Import-Module FailoverClusters

$Cluster=""

$Cluster = Read-Host "Indique nombre del cluster"

$Total=(Get-ClusterResource -cluster $Cluster | where {$_.resourcetype.name -eq "Virtual Machine"}).Count

$Nodos=Get-ClusterNode -cluster $Cluster

$CantNodos=(Get-ClusterNode -cluster $Cluster).count

Write-host "El cluster $Cluster tiene un total de $Total maquinas virtuales a distribuir en $CantNodos nodos."

$Promedio=[MATH]::ROUND($Total/$CantNodos)

Write-host "En total debería haber $Promedio maquinas virtuales por nodo."

Foreach ($Nodo in $Nodos)

{

    $PorNodo=(Get-ClusterNode $Nodo.Name -cluster $Cluster | Get-ClusterResource | where {$_.resourcetype.name -eq "Virtual Machine"}).count

    Write-Host "El nodo $Nodo tiene $PorNodo maquinas virtuales"

    if ($PorNodo -gt $Promedio)

        {

        $Diferencia=$PorNodo-$Promedio

        Write-Host "Se debe mover $Diferencia maquina/s virtual/es del nodo $Nodo"

        for($i=1; $i -le $Diferencia; $i++)

            {

            Foreach ($Nodo1 in $Nodos)

                {

                $PorNodo1=(Get-ClusterNode $Nodo1.Name -cluster $Cluster | Get-ClusterResource | where {$_.resourcetype.name -eq "Virtual Machine"}).count

                if ($PorNodo1 -lt $Promedio)

                    {

                        $Maquina=Get-ClusterNode $Nodo.Name -cluster $Cluster | Get-ClusterResource | where {$_.resourcetype.name -eq "Virtual Machine"} | Select-object -first 1

                        Write Host "Se procede a mover la maquina virtual $Maquina"

                        Move-ClusterVirtualMachineRole -Name $Maquina.OwnerGroup -Cluster $Cluster -node "$Nodo1"
                        Break

                    }

                }

            }

        }



}


Como dije, no soy experto en PowerShell, y estoy seguro de que esto puede hacerse mejor, más fácil y con menos líneas de código. Pero esto funciona y lo hace muy bien.

Las máquinas virtuales se mueven utilizando LiveMigration, así que el uso del script no implica corte de servicios, y solo es válido en cluster de Hyper-V 2008 R2.

martes, 17 de abril de 2012

[offTopic] AD Tidy, una tool imprescindible

Hoy no toca hablar de SCCM, sino de una tool para administradores que me resulta imprescindible, sobre todo si nuestro dominio tiene dimensiones desproporcionadas (en mi caso, más de 4000 computadoras y otros tantos usuarios).
En ambientes de este tipo es común que muchas cuentas queden obsoletas, sin referenciar realmente a un equipo o un usuario existente. En esos casos necesitamos realizar una limpieza, es decir buscar los equipos o usuarios que no se hayan logueado al dominio en mucho tiempo, y tomar con ellos alguna acción de remediación (deshabilitarlos, moverlos de OU, eliminarlos, etc.).

A este fin me encontré con la herramienta gratuita denominada AD Tidy que puede descargarse desde acá. Con esta herramienta solo debemos definir el criterio de búsqueda y obtener los resultados en apenas un par de segundos:



El resultado se ve así:

Y podemos encadenar acciones a tomar con todas las cuentas encontradas:

En fin, una herramienta altamente recomendable.

Saludos
Franco