LogRotate en Windows (Rotación de logs)

Windows no tiene, a diferencia de Linux, un software potente para rotación de logs. EN el caso de Linux tenemos el famoso logrotate que te permite infinidad de opciones.

Debido a una exigencia profesional he tenido que realizar una rotación automática de unos logs en Windows. Dejo aquí el código de un fichero bat (si, bat….) que realiza la rotación, compresión y eliminación de old logs.

Mas que simple..

@echo off
REM Enric Solsona – LogRotate
REM Versió 1.0
REM ___________________________________________________________________________________________________________________________________

REM Declaramos variables etc..
set date=%trdt%%trtt%

REM Vemos la fecha del sistema
set da=%date%

REM Por defecto la fecha viene declarada con /, lo que hacemos ahora es modificar la / por _ Asi no tendremos problemas con directorios
set variable=%da:/=_%

REM Vamos al directorio donde queremos rotar el log
cd “C:program FilesSoftComplog”

REM Movemos el log actual hacia otro fichero con la fecha actual. Por defecto el programa que uso no bloquea el fichero, por eso se puede hacer en caliente
move “C:program FilesSoftComplogsoftlog.log” “C:program FilesSoftComplog%variable%softlog.log”

REM Comprimimos el fichero
zip -r -9 -S %variable%softlog.zip %variable%softlog.log

REM Eliminamos los ficheros mas viejos de 30 dias.
forfiles /p “C:program FilesSoftComplog” /m *softlog.zip -d -30 /c “cmd /c del /q @path”

Network Load Balancing en Windows Server 2003 (NLB)

Este es un pequeño manual para crear un Load Balancing (frontal y 2 backends sirviendo con un IIS) con un Windows 2003 Data Center Edition.

Primero vamos a definir la infraestructura.

Front-Win001 (192.168.1.41)
Back-Server01 (192.168.1.39)
Back-Server02 (192.168.1.42)
Balanced-Server01 (192.168.1.40)

La maquina Balanced-Server01 en realidad es el servicio Load Balancing que dependiendo del estado de los backend (o de la configuración del Load Balancing) servirá la web desde un servidor o desde otro.

Los los Backends tienen un IIS en este caso sin ninguna configuración en especial (pero lo ideal seria tener un sistema de archivos centralizado para estar sirviendo la misma web, pero para hacer las pruebas y ver que funciona, vamos a mostrar webs distintas dependiendo del backend que esta funcionando)

La maquina Front es la maquina “fisica” que tiene corriendo el servicio de Load Balancing.

Primer tenemos que tener instalado el servicio IIS en los backends.

Instalar IIS
Instalar IIS

Cuando ya tenemos los backend funcionando con el IIS vamos a ir al servicio de Network Load Balancing del Frontal (en este caso Front-Win001 (192.168.1.41)) para configurar los dos backends.

Le damos a crear un cluster y poner la IP (en este caso Balanced-Server01 (192.168.1.40)) que vamos a publicar de la web.

Configuración IP Balanceado
Configuración IP Balanceado

Es importante describir ciertos campos de este apartado:

Microsoft Network Load Balancing nos ofrece dos alternativas para el modo de operación del Cluster NLB (Cluster operation mode):

  • Unicast. Esta es la opción por defecto y es la opción recomendada. La dirección MAC del Cluster, es asignada a todas las tarjetas de red asignadas al Cluster NLB, y la dirección MAC de cada tarjeta de red NO es utilizada. Es decir, cada tarjeta de red asignada al Cluster NLB mantiene una única dirección MAC, en particular, la MAC del Cluster. Así, tanto la dirección IP del Cluster como la dirección IP propia de la tarjeta de Red, se resuelven a la dirección MAC del Cluster, ya que se sobrescribe la dirección MAC real de las tarjetas de red del Cluster NLB con la dirección MAC del Cluster.Esta configuración, implica que NO es posible la comunicación desde un Host del Cluster NLB a otro Host del Cluster NLB a través de la tarjeta de red utilizada en el Cluster, debido a que al compartir la dirección MAC (es decir, utilizar la misma dirección MAC en el equipo de origen y en la tarjeta de red del equipo destino), se produce una confusión, es decir, en el nivel de enlace OSI (Ethernet y direcciones MAC) no es posible diferenciar al destinatario del emisor, y por ello, la comunicación host-to-host (también conocida como intra-host) NO es posible.Es interesante recordar (para aquellos pocos que lo puedan utilizar) que al utilizar Application Center 2000 para configurar NLB, se especificará el modo de operación del Cluster NLB en Unicast, conforme indicar el artículo de soporte KB 278431.
  • Multicast. La dirección MAC del Cluster, es asignada a todas las tarjetas de red asignadas al Cluster NLB, pero de forma adicional, cada tarjeta de red mantiene su dirección MAC. Es decir, cada tarjeta de red asignada al Cluster NLB mantiene dos direcciones MAC, pero sólo la dirección MAC del Cluster es utilizada para la comunicación con los equipos clientes. Así, la dirección IP del Cluster se resuelve a la dirección MAC del Cluster, y la dirección IP propia de la tarjeta de Red se resuelve a la dirección MAC propia de dicha tarjeta.Este comportamiento implica que una tarjeta de Red de un Cluster NLB configurado en modo de operación Multicast, es capaz de manejar tanto el tráfico de los clientes (paquetes destinados a la dirección IP/MAC del Cluster) como el tráfico propio del Host (paquetes destinados a la dirección IP/MAC de la tarjeta de Red del Cluster NLB).En algunos casos la utilización de direcciones MAC multicast, no es soportada por la implementación ARP de algunos enrutadores (routers), como es el caso de Cisco (ni más ni menos 😉, en cuyo caso, el Cluster NLB no será visible fuera del segmento Ethernet al que pertenece. Para evitar este tipo de problemas, debe garantizarse que el enrutador (Router) acepta respuestas ARP que incluyan una dirección MAC en el payload de la trama Ethernet, pero que parecen proceder de un dispositivo con una dirección MAC distinta, conforme se muestra en la cabecera Ethernet. Si el enrutador (router) o el conmutador multi-capa (multi-layer switch) correspondiente no soporta esta funcionalidad, es posible crear una entrada ARP estática en el router como solución al problema, para que así sea capaz de resolver la dirección IP Unicast a la dirección MAC Multicast correspondiente.Multicast puede ofrecer un rendimiento inferior a Unicast, debido a que utiliza una única tarjeta de red tanto para el tráfico de los equipos clientes como para el tráfico host-to-host (también conocido como tráfico intra-host).Al utilizar Multicast es posible activar la opción IGMP Multicast. La principal razón por la que activar o desactivar la opción IGMP Multicast, es en caso de descubrir algún tipo de problema de funcionamiento, como por ejemplo, problemas de convergencia.

La recomendación de Microsoft es utilizar el modo de operación Unicast, excepto que se disponga de una única tarjeta de red (tanto para el Cluster NLB como para el resto de comunicaciones) y además sea necesaria la comunicación entre los distintos Nodos del Cluster. Como hablamos, es recomendado para evitar problemas con enrutadores (routers).

Es importante tener en cuenta, que la dirección MAC del Cluster NLB, se genera de forma automática, es decir, no podemos especificar de forma explícita que dirección MAC deseamos utilizar para utilizar como MAC del Cluster.

También es interesante recordar que, independientemente del modo de operación del Cluster NLB (es decir, sea Unicast o sea Multicast), las tarjetas de red utilizadas en un Cluster NLB dispondrán al menos de dos direcciones IP: la dirección IP propia de la tarjeta más la dirección IP del Cluster NLB.

Nota: Información de aqui

Una vez tenemos esto seguimos con definiendo los puertos del balanceador. Microsoft por defecto nos habilita todo los puertos.

Puerto
Puerto

Por defecto dejaremos solo el 80.

Por defecto dejamos el 80
Por defecto dejamos el 80

En la siguiente opción, al ser un servicio, podemos indicarle como queremos que se inicie. En este caso, al conseiderarlo critico lo dejaremos como inicio por defecto Iniciado.

Inicio por defecto
Inicio por defecto

Una vez finalizada la configuración ya tenemos el primer nodo del cluster. Mientras configurabamos este nodo, teniamos la posibilidad de agregar mas nodos y configurarlos todos a la vez, pero siempre va bien hacer uno por uno.

Ahora es tan facil como boton derecho, agregar nodo y poner la ip de dicho nodo, en este caso Back-Server02 (192.168.1.42) y ya lo tendremos. Las dos maquinas y el frontal.

Frontal y 2 Backends
Agregar maquina
Frontal y 2 Backends
Frontal y 2 Backends

Pero ahora tocan las prubas. La mas facil es;

Conectarse al balanceador (192.168.1.40) y ver que web muestra:

Primera conexión
Primera conexión

Desactivamos la tarjeta de red del servidor 1 (192.168.1.39) y nos volvemos a conectar al frontal (192.168.1.40) con otro navegador (por temas de cache)

Segunda conexión
Segunda conexión

Y vemos que nos muestra otra web, conectandonos a la misma ip. Ya tenemos nuestro balanceador funcionando. 🙂

IIS Migration Tool

Para la migración de un site (o varios) una buena solución es el IIS Migration Tool. Esta herramienta de micrososft nos permite la “automatización” de parte de la configuración de los nuevos sites.

Aquí dejo la explicación de como he migrado un site:

Primero descargamos el software de la web oficial: (aqui)

Lo dejamos en la maquina destino y lo ejecutamos. Nos va aparecer una pantalla tipo MS-DOS y tendremos que pasarle variamos parámetros como el site que queremos migrar, el servidor origen, usuario y password, directorio de destino (si es distinto, como es mi caso) etc..

Aquí dejo un pantallazo de mi ejecución:

En esta web se muestran y explican parte de los parametros de la aplicación.

SourceServer
Required

Identifies the source server by providing the following:
DNS or NetBIOS name for the source server

IP address of the source server


WebSite
Required

Identifies the site to be migrated by providing the following:
Web site description, such as “Default Web Site”

Metabase key path, such as W3SVC/1

/user UserName
Optional

Specifies the user name of an account that is a member of the Administrators group on the source server. This parameter is not necessary if you log on with an account that is a member of the Administrators group on both the source server and the target server.

/password Password
Optional

Specifies the password that is associated with the user name.

/path Path
Optional

Specifies a different directory location for the home directory of the Web site on the target server. This parameter is ignored if /configonly is included.

/serverbindings ServerBindingsString
Optional
Allows a c
hange to the IP address, host header, or port configuration of the Web site during the migration.

/siteid SiteID| Replace
Optional

Specifies the site ID on the target server, which can be specified as one of the following:
SiteID – Overwrites the site ID on the target server.

Replace – Overwrites the site ID on the target server with the site ID from the source server.

/configonly
Optional

Migrates only the Web site configuration and not the Web site content.

/fpse
Optional

Reapplies FrontPage Server Extensions to the migrated site on the target server. This parameter is ignored if /configonly is included.

/verbose
Optional

Displays metabase path copy and file copy operations to the screen during the migration process.

/overwrite
Optional

Does not display messages that prompt the user to confirm the overwriting of an existing destination folder or file when content is being copied from the source server to the target server.

/noninteractive
Optional

Does not display messages that prompt the user for input. The migration tool will exit on the first error condition. This is a useful switch for invoking the migration tool from a batch file or script program to perform an unattended migration.

Que servicio usa un Application Pool en IIS 6? !

Fruto de un problema que me he encontrado en el trabajo, he buscado un poquito la manera de ver el servicio que esta usando un Application Pool.

Si tenemos un servidor web con Windows, podemos ver un servicio llamado w3wp.exe, que no es nada mas que el Application Pool que tenemos en el IIS. Muchas veces, fruto de problemas, este servicio empieza a consumir muchos recursos.

Si nos encontramos con este problema, y tenemos varios Aplication Pool, necesitaremos ver que proceso una un Application Pool, o mejor dicho que Application pool esta asignado a un proceso.

Para ver esto, es tan facil como lanzar un script que ya viene con el Windows;

systemrootsystem32iisapp.vbs

Con esto nos mostrará el proceso y el Application Pool.

A partir de aquí, solo queda buscar el raíz del problema.

Aquí tenemos algo de documentación Microsoft