Como lograr una alta disponibilidad con IBM Lotus iNotes?

Aprenda a lograr una alta disponibilidad para IBM Lotus iNotes mediante el uso de un software balanceador de cargas o un hardware como, por ejemplo, un Application Delivery Controller (ADC) en conjunto con el clustering de IBM Lotus Domino. Este artculo discute algunos de los desafos relacionados con la realizacin del balanceo de cargas apropiado de Lotus iNotes para garantizar la alta disponibilidad con el uso de un ADC.

Nirmala Venkatraman, Contractor, Iris Associates

Nirmala Venkatraman es un Arquitecto de Desempeño dentro del equipo de funcionamiento de servidores Lotus Domino. Contáctelo en la siguiente dirección: nvenkatr@us.ibm.com.



Vinod Seraphin, Senior Technical Staff Member and Architect, IBM Corporation

Vinod Seraphin es uno de los Senior Technical Staff Members y Lead Architects para Lotus iNotes, que se construy en base a los esfuerzos de creacin de prototipos de Vinod para desarrollar un administrador de informacin personal (PIM) atractivo dentro de un navegador. Vinod trabaja para IBM desde el ao 1991. Antes de comenzar a trabajar con Lotus Domino Web Access, Vinod era el Software Architect para Lotus Organizer®.



Jack Ciejek, Advisory Software Engineer, WSO2 Inc

Jack Ciejek es uno de los Advisory Software Engineers y trabaja como desarrollador para el producto Lotus iNotes. Jack trabaja para IBM desde el ao 1988 y, antes de comenzar a trabajar con los productos Lotus (incluso Lotus SmartSuite para OS/2), trabaj en varios sistemas operativos mainframe de IBM.



Craig Scarborough, Business Development Solutions Engineer, F5 Networks

Craig Scarborough es uno de los Business Development Solutions Engineers que trabajan para F5 Networks. Craig cuenta con ms de 20 aos de experiencia en redes, almacenamiento y seguridad. Adems, es responsable de fomentar el progreso de la asociacin entre IBM y F5 mediante la identificacin de soluciones innovadoras que potencian la tecnologa con el objetivo de satisfacer las necesidades de los clientes y las demandas del mercado.



Ron Carovano, Senior Business Development Manager, F5 Networks

Ron Carovano es el Senior Business Development Manager de F5 Networks. Ron es el responsable de la alianza global con IBM. Adems, est a cargo de supervisar los esfuerzos de desarrollo de la solucin implementados conjuntamente entre F5 e IBM. Ron tambin es el responsable de alinear los programas de negocios de F5 con las iniciativas de insercin en el mercado de IBM.



Rahul Garg, Staff Software Engineer, WSO2 Inc

Rahul Garg es uno de los Staff Software Engineers y trabaj como Software Engineer para el equipo de iNotes que se concentraba en configuraciones complejas y desarrollos para clientes. Rahul trabaja para IBM desde el ao 2005.



18-06-2010 (Primera publicación 18-06-2010)

Nota del editor: Sabe mucho sobre este tema? Desea compartir su experiencia? Participe hoy del wiki sobre el software IBM Lotus.

Introducción

El correo electrnico es una aplicacin corporativa de importancia crtica y tanto los usuarios como los administradores esperan que est disponible en todo momento. Con IBM Lotus Notes y Lotus Domino, la alta disponibilidad se logra mediante el clustering de Lotus Domino y rplicas de los archivos de correo electrnico. El cliente Lotus Notes incluye el cdigo explcito como para soportar aquellos escenarios en los que el servidor Lotus Domino con el que se est comunicando deje de estar disponible.

Luego de una breve demora (mientras espera que se complete el intento de conexin o comunicacin), el cliente Lotus Notes le informa al usuario que el servidor dej de estar disponible y le solicita que confirme el hecho de que va a pasar a otro servidor replicado conocido.

Con Lotus iNotes, sin embargo, la alta disponibilidad requiere la ayuda de infraestructura adicional como, por ejemplo, un Application Delivery Controller (ADC). Los ADC le ofrecen muchos beneficios en el centro de datos, entre los que podemos incluir los siguientes:

  • Mejora de la confiabilidad de la aplicacin (mediante el monitoreo de la aplicacin y el balanceo de cargas).
  • Mejora de la seguridad (firewalls de la aplicacin) y aceleracin (optimizaciones TCP y HTTP).
  • Servidores de descarga para algunas de las tareas ms intensivas como, por ejemplo, la encriptacin Secure Sockets Layer (SSL).

Lotus Domino incluye la tecnologa denominada Internet Cluster Manager, que es capaz de redireccionar la URL inicial correspondiente a una aplicacin a uno de varios servidores de back-end de correo electrnico. Si el servidor principal de correo electrnico deja de estar disponible luego de iniciar una sesin, sin embargo, no existe ningn mecanismo para recuperar la sesin y pasar a otro servidor disponible que tambin incluya una rplica del archivo de correo electrnico.

Cuando se lo configura correctamente, un balanceador de cargas puede ofrecer a los usuarios una experiencia de conmutacin por error sin complicaciones. Los usuarios nunca se llegan a dar cuenta de que el servidor original con el que estaban interactuando dej de estar disponible. Por su parte, el balanceador de cargas detecta este inconveniente y enva una solicitud a otro servidor apropiado.

Existen balanceadores de carga basados en software y hardware especializado (como, por ejemplo, un ADC) que le ofrecen esta capacidad. Generalmente, las variedades de hardware son un poco ms caras, pero le ofrecen un mayor rendimiento, una mayor capacidad y mayores ahorros de los recursos del servidor de back-end.

Este artculo discute algunos de los desafos relacionados con el balanceo de cargas correcto para Lotus iNotes y presenta ejemplos especficos del ADC avanzado y lder en la industria conocido como F5 Networks BIG-IP Local Traffic Manager (LTM).

Tambin exploramos la creacin de una configuracin de BIG-IP LTM para propsitos generales que pueda llegar a soportar la mayora de las implantaciones de correo electrnico de Lotus iNotes. Luego de esto, consideramos qu mejoras al rendimiento de los usuarios y del servidor de Lotus Domino se pueden lograr mediante el uso de un BIG-IP LTM.


Configuraciones de Lotus Domino para ofrecer una alta disponibilidad

Generalmente, los archivos de correo electrnico de Lotus Domino tienen un subdirectorio (como, por ejemplo, mail) y un nombre de archivo (como, por ejemplo, juser.nsf). Para el balanceo de cargas, la ruta para todos los archivos de correo electrnico debera ser idntica dentro de cada uno de los servidores en los que reside una rplica. Adems, la ruta completa hacia la ruta del correo electrnico debe ser exclusiva (no ambigua) cuando llega al balanceador de cargas.

Discutamos algunos escenarios de configuracin que se pueden usar para lograr una alta disponibilidad.

Configuracin 1: nico clster replicado

Este primer escenario de configuracin es el menos complejo. Se trata de un conjunto de servidores en clster completamente replicado y todos los archivos de correo electrnico se encuentran dentro de este nico clster. Dos o tres servidores albergan una estructura de directorio idntica y un conjunto de archivos de correo electrnico. Adems, la replicacin del clster est activada entre todos estos servidores (vea la figura 1).

Figura 1. Dos servidores replicados en el Clster A
Dos servidores replicados en el Clster A

En este escenario, en el balanceador de cargas, todas las solicitudes relacionadas con Lotus iNotes se pueden enviar a cualquiera de los servidores que forman parte del clster.

Configuracin 2: Mltiples clsteres replicados

El siguiente nivel de sofisticacin se presenta cuando existen mltiples clsteres de correo electrnico de Lotus Domino, similares a los de la Configuracin 1, y el balanceador de cargas debe despachar una solicitud que recibi el conjunto adecuado de servidores de back-end (los que se encuentran en el mismo clster).

Existen varios enfoques posibles para lograr esto:

  • En el primer caso, cada clster usa un subdirectorio que tiene un nombre exclusivo en el que se almacenan los archivos de correo electrnico. Esto significa que las URL normales incluyen un segmento que identifica claramente al clster (vea la figura 2). Luego, las reglas que forman parte del balanceador de cargas se actualizan para key off estos nombres y asociar los servidores de back-end apropiados.

    Figura 2. Dos servidores en dos clsteres diferentes con nombres exclusivos de subdirectorio en cada clster
    Dos servidores en dos clsteres diferentes con nombres exclusivos de subdirectorio en cada clster
    Estas listas codificadas de nombres exclusivos de subdirectorio y estos servidores de back-end de Lotus Domino se deben mantener actualizadas con todas las modificaciones realizadas a los clsteres del servidor.
  • En el segundo enfoque, la aplicacin redireccionadora de Lotus iNotes se configura para que devuelva la parte del nombre del host del servidor de correo electrnico principal del Lotus Domain Name System (DNS) del servidor como un segmento adicional en la URL generada en el archivo de correo electrnico (inmediatamente antes de la ruta). Luego de esto, el balanceador de cargas usa este segmento adicional para buscar los clsteres de Lotus Domino y los servidores de back-end asociados.

    Uno de los problemas de este enfoque es que Lotus iNotes puede llegar a generar URLs subsiguientes en las que ya no figure el nombre del segmento. Por ende, el identificador de clsteres se debe almacenar dentro de una cookie (de manera tal que el balanceador de cargas se concentre en este valor si el segmento desapareci).
  • En el tercer escenario, se agrega un agente de ayuda del balanceador de cargas al servidor de Lotus Domino. El balanceador de cargas consulta este agente para generar de manera dinmica la lista de servidores Lotus Domino adecuados que incluyen una rplica de este archivo de correo electrnico (vea la figura 3).

    Figura 3. Dos servidores en clsteres diferentes
    Dos servidores en clsteres diferentes
    En este escenario, no es necesario codificar los nombres especficos del clster o las direcciones IP del servidor Lotus Domino de back-end dentro de las reglas del balanceador de cargas.

Configuracin 3: Mltiples clsteres no replicados

El siguiente nivel de complejidad es el escenario en el que existen mltiples servidores en un clster de Lotus Domino, pero cada archivo de correo electrnico no se encuentra en cada servidor en dicho clster. En cambio, los archivos de correo electrnico del usuario se encuentran distribuidos pobremente en un subgrupo de servidores dentro del clster en cuestin.

Este escenario es, probablemente, la configuracin ms compleja de soportar adecuadamente con respecto a un balanceador de cargas. Sin embargo, es una configuracin de Lotus Domino que se suele implementar muy a menudo. A continuacin, incluimos algunos enfoques posibles para realizar esta configuracin:

  • Cada combinacin exclusiva de servidores en la que reside un archivo de correo electrnico en particular se ve reflejada de alguna manera dentro del nombre exclusivo del subdirectorio en donde reside el archivo de correo electrnico (vea la figura 4). Esta combinacin significa que las URL normales, de hecho, identifican el clster y el subgrupo de servidores dentro del clster en el que reside el archivo de correo electrnico.

    El balanceador de cargas usa esta informacin para enviar solicitudes hacia el subconjunto adecuado del servidor.

    Figura 4. Tres servidores no replicados en el Clster A
    Tres servidores no replicados en el Clster A
  • Adems, se agrega un agente de ayuda del balanceador de cargas al servidor Lotus Domino. El balanceador de cargas podr consultar este agente de manera dinmica con el objetivo de generar la lista de servidores Lotus Domino adecuados que incluyen una rplica de este archivo de correo electrnico (vea la figura 5).

    Figura 5. Tres servidores en el Clster A no replicados y con redireccionador
    Tres servidores en el Clster A no replicados y con redireccionador

Por ende, como pudimos observar en la discusin de las opciones anteriores, la solucin ms verstil involucra la mejora del servidor Lotus Domino para que pueda comunicar la informacin sobre qu servidores de back-end se pueden usar para crear grupos dinmicos con el objetivo de realizar el balanceo de cargas de la solicitud recibida sin usar nombres de ruta especiales para comunicar la informacin relevante de conmutacin por error.

Ahora, analicemos en detalle la creacin de dicho servicio de propsito general para implementar esta solucin, lo que tambin requiere que el balanceador de cargas sea capaz de realizar consultas dinmicas y usar los resultados de ellas.

BIG-IP LTM de F5 Networks le ofrece un lenguaje de scripting sofisticado, basado en Tool Command Language (TCL), que se puede usar para crear lo que se denomina una iRule. Una iRule usa una sintaxis de scripting fcil de aprender que le permite a BIG-IP LTM personalizar cmo intercepta, inspecciona, transforma y direcciona el trfico entrante y saliente de la aplicacin.

Mediante el uso de esta metodologa, el entorno de balanceo de cargas es capaz de rutear el trfico HTTP hacia el servidor Lotus Domino correcto.


Creacin de un servicio de ayuda del balanceador de cargas

Lotus Domino almacena informacin sobre archivos NSF exclusivos dentro de un clster en particular en la base de datos del directorio del clster (cldbdir.nsf). Sin embargo, esta base de datos slo es exclusiva dentro de un clster en particular. La base de datos del directorio del clster que se encuentra en un clster diferente dentro del mismo dominio contiene informacin bastante diferente.

Una forma de determinar si el archivo NSF exclusivo se encuentra en un clster en particular consiste en examinar el directorio del clster en el servidor donde se recibe la solicitud en un principio, para determinar si es posible encontrar la ruta o no. De ser posible encontrarla, no hay ningn problema. Se puede devolver el conjunto adecuado de servidores y, posiblemente, el servidor principal del usuario se coloque al frente de esta lista que se devuelve para otorgarle preferencia.

Sin embargo, si la ruta no se encuentra en el directorio del clster en el servidor, el balanceador de cargas debe consultar un servidor en un clster diferente. Para ayudarlo a enviar una solicitud al clster adecuado, se busca informacin dentro del directorio names.nsf de Lotus Domino para localizar el conjunto de servidores que se encuentra en el clster donde reside el archivo de correo electrnico del usuario actual.

Para realizar esta consulta, el servicio busca el servidor principal de correo electrnico para el usuario autenticado actual y, luego de esto, busca el ClusterName del que este servidor forma parte. Luego, dicho clster se puede buscar en la vista ($Clusters) para obtener los servidores que forman parte del clster en cuestin.

Creamos el servicio de ayuda, usando Notes Formula Language, y colocamos el cdigo clave dentro de un formulario denominado ServersLookup en la plantilla redireccionadora de Lotus iNotes. Cuando lo solicita el balanceador de cargas, el formulario ServersLookup devuelve uno de dos encabezados de respuesta HTTP en el formato X-Domino-xxxxx. Cada uno de ellos incluye una lista de servidores separados por comas.

Se devuelve X-Domino-ReplicaServers cuando el servicio encuentra la ruta relevante dentro de su propio clster. Se devuelve X-Domino-ClusterServers slo cuando los servidores de correo electrnico forman parte de un clster diferente.

El formulario ServersLookup se incluye en este artculo (vea el Apndice A). Los anlisis de rendimiento que figuran a continuacin no usaron este agente de ayuda y slo se explor la Configuracin 1.


Anlisis del rendimiento

Se ejecut la carga de trabajo DWA85 contra dos servidores Lotus Domino de correo electrnico en clster con replicacin entre los servidores. Esto se hizo con un total de 4000 usuarios concurrentes con 2000 usuarios activos en cada servidor, con el sistema operativo Microsoft Windows de 64 bits y con la versin de 32 bits de Lotus Domino 8.5.1.

Todas las pruebas se configuraron con 4000 usuarios definidos en cada uno de los directorios de Lotus Domino en los servidores. Al comienzo de la prueba, cada usuario tena un archivo de correo electrnico con alrededor de 256 MB en documentos sin comprimir, con 3000 mensajes en la bandeja de entrada.

Estas pruebas tienen activado el inicio de sesin de Lotus Domino con la configuracin Favor Runtime. Adems, Mail Journaling se configura para que se realice una bitcora de todos los mensajes localmente. Se activan las sondas Domino Domain Monitoring (DDM) para el servicio de mensajera y el sistema operativo del servidor. Adems, todos los usuarios tienen reglas de correo electrnico que bloquean los mensajes de correo electrnico provenientes de 10 usuarios que no forman parte de la prueba.

Con Lotus Domino 8.5.1, activamos la compresin de documentos en las bases de datos de correo electrnico, lo que redujo su tamao de alrededor de 250 MB a aproximadamente 170 MB. Adems, activamos la propiedad Domino Attachment and Object Store (DAOS) de la base de datos en algunas de las pruebas, luego de crear las bases de datos de correo electrnico, y tambin activamos DAOS en las casillas de correo electrnico y en la base de datos de mail journal.

En la primera prueba, corrimos los 4000 usuarios simulados NotesBench DWA85 contra los dos servidores Lotus Domino de correo electrnico en el puerto SSL, sin el proxy de BIG-IP LTM entre los clientes y los servidores. Cada servidor tena 2000 usuarios DWA activos para esta prueba.

En la segunda prueba, corrimos los 4000 usuarios simulados NotesBench DWA85, pasando por el proxy de BIG-IP LTM, y accedimos a sus servidores de correo electrnico. Para esta prueba, desactivamos el almacenamiento en cach de respuestas y la compresin GZIP en los servidores Lotus Domino de correo electrnico, usando la siguiente configuracin para Notes.ini:

Notes_wa_GZIP_Disable=1
HTTPDisableUrlCache=1

Tambin se desactivo el puerto SSL para el servidor HTTP en el documento Server del directorio de Lotus Domino. El servidor proxy BIG-IP LTM se ocup del almacenamiento en cach, la compresin GZIP y la encriptacin SSL durante estas pruebas.

Las Tablas 1-3 resumen toda la especificacin del hardware.

Tabla 1. Configuracin de hardware para el Servidor 1
HardwareEspecificaciones
ModeloPlataforma Intel de 64 bits
Procesadores para prueba / velocidadIntel Xeon MP configurado como 2 procesadores quad core / 3.67 GHz
Memoria8 GB
Unidades fsicas activas42
Volmenes lgicos activos3
Sistema operativoMicrosoft Windows 2003 X64
Versiones de Lotus DominoLotus Domino 8.5.1 (aplicacin de 32 bits)
Configuracin de Notes.ini usada cuando BIG-IP LTM descarga SSL/gzipiNotes_wa_GZIP_Disable=1
HTTPDisableUrlCache=1
Tabla 2. Configuracin de hardware para el Servidor 2
HardwareEspecificaciones
ModeloPlataforma Intel de 64 bits
Procesadores para prueba / velocidadIntel Xeon MP configurado como 2 procesadores quad core / 3.06 GHz
Memoria12 GB
Unidades fsicas activas42
Volmenes lgicos activos3
Sistema operativoMicrosoft Windows 2003 X64
Versiones de Lotus DominoLotus Domino 8.5.1 (aplicacin de 32 bits)
Configuracin de Notes.ini usada cuando BIG-IP LTM descarga SSL/gzipiNotes_wa_GZIP_Disable=1
HTTPDisableUrlCache=1
Tabla 3. Configuracin de hardware para el Servidor 3
HardwareEspecificaciones
Modelo6900
2 procesadores dual core-
Memoria8 GB
Unidades flash activas8 GB
Disco rgido activo2 x 320 GB
Sistema operativo10.1

La Figura 6 le muestra la configuracin de punto de partida.

Figura 6. Configuracin de punto de partida
Configuracin de punto de partida

Configuracin de la prueba de rendimiento

Usamos dos IBM 3850 con dos procesadores Xeon de 3.6 GHz con 8 GB de memoria fsica. Cada uno de ellos contaba con un DS4300 con 42 discos rgidos de canal de fibra y un sistema operativo Microsoft Windows 2003 Server Enterprise 64-bit Edition (vea la figura 7). El sistema de carga NotesBench era un servidor Linux capaz de encargarse de hasta 4000 usuarios simulados DWA85.

Figura 7. Configuracin de la prueba de rendimiento con BIG-IP LTM 6900
Configuracin de la prueba de rendimiento con BIG-IP LTM 6900

Configuraciones de rendimiento

A continuacin, incluimos algunas configuraciones para BIG-IP LTM:

  • SNAT: Configurado en Automap
  • Nagle: Desactivado
  • SSL: Activado
  • Buffer Send: 262144
  • Ventana Recv: 262144
  • Perfil HTTP:
    • Valores predeterminados desde http-wan-optimized-compression-caching
    • Compress: Activado
    • Nivel de Compress GZIP: 5
    • Tamao de cach de RAM: 200 MB

Configuracin de Lotus Notes:

  • SSL: Desactivado
  • HTTP Caching: Desactivado
  • GZIP: Desactivado

Resultados de rendimiento

La Tabla 4 le muestra los valores clave medidos para las dos configuraciones.

Tabla 4. Resultados clave
PruebaPunto de partidaBIP-IP LTMPorcentaje de mejora
Transacciones / minuto60286044-0,27%
Tiempo de respuesta en segundos0,3380,08375,44%
Utilizacin del procesador29,420,928,91%
Ops. / segundo de E/S del disco525530-0,95%
Kbytes / segundo del disco440643082,22%

Los valores que mostraron una diferencia significativa fueron los tiempos de respuestas de las solicitudes individuales y el nivel de utilizacin del procesador en los servidores Lotus Domino. Luego de implementar BIGIP ADC, se mejoraron los tiempos de respuesta en un 75 por ciento en promedio (vea la figura 8).

Esto significa que los tiempos de respuesta que pasaban por el dispositivo eran cuatro veces menores a los que iban directamente al servidor Lotus Domino. Una de las razones de esta mejora es que el ADC mantiene las conexiones persistentes abiertas al servidor Lotus Domino y puede usar estos canales de manera ms eficiente para las solicitudes subsiguientes.

Adems, el nivel de utilizacin del procesador en los servidores Lotus Domino fue un 28 por ciento menor cuando no se us un ADC. Los niveles ms bajos de utilizacin del procesador hacen que el servidor Lotus Domino pueda conservar una mayor cantidad de usuarios concurrentes.

Figura 8. Porcentaje de mejora del rendimiento
Porcentaje de mejora del rendimiento

NOTA: Tambin intentamos medir los tiempos de respuesta del cliente simulando una conexin de baja velocidad para algunas interacciones clave con el cliente de correo electrnico. Cuando el ancho de banda fue el factor limitador clave, no registramos ninguna mejora significativa en las operaciones clave de los usuarios que medimos.


Conclusin

Lograr una alta disponibilidad para Lotus iNotes requiere el uso de un software balanceador de cargas o de un hardware (ADC) en conjunto con el clustering de Lotus Domino, cuyas topologas incluyen configuraciones replicadas y escasos clsteres.

Es relativamente fcil soportar clsteres completamente replicados y es ms complejo usar correctamente clsteres escasos. Tambin introdujimos cierta lgica relativa al servidor para ayudarlo con la topologa de los clsteres escasos.

Estos clsteres escasos son muy buenos al momento de distribuir equitativamente una carga entre los servidores restantes que forman parte de un clster, cuando uno de los servidores deja de funcionar, de forma tal que no necesitemos contar con un archivo de correo electrnico replicado en todos los servidores del clster para todos los usuarios que forman parte de dicho clster.

Las mediciones de rendimiento tambin revelaron que es posible ahorrar recursos muy significativos de los procesadores en los servidores Lotus Domino cuando se implanta un ADC. Adems, las pruebas confirmaron mejoras significativas en los tiempos de respuesta para varias solicitudes, lo que puede llegar a mejorar los tiempos de respuesta de los usuarios cuando se conectan usando un ancho de banda razonable.

En el caso de las organizaciones que buscan adoptar soluciones ms concentradas en Internet, una inversin en un software balanceador de cargas o en hardware (ADC) puede mejorar significativamente los tiempos de respuesta de los usuarios y reducir la carga del procesador en los principales servidores Lotus Domino de correo electrnico.


Apndice A: Formulario ServersLookup

El formulario ServersLookup tiene un campo "Computed for display" (Computado para visualizar) denominado $$HTMLHead con un tipo de texto. Este campo contiene las frmulas que aparecen a continuacin. Se agregaron instrucciones de depuracin para que, si el formulario se abre manualmente desde un navegador, usted pueda ver los resultados de las frmulas.

Para abrir el formulario manualmente, enve la siguiente solicitud:

http://mail.acme.ibm.com/iwaredir.nsf/ServersLookup?OpenForm&nsfpath=mail\jsmith.nsf

tmpDebug := ""; tmpNSFPath := @ReplaceSubstring(@URLDecode (
"Domino"; @UrlQueryString("nsfpath") );"/";"\\"); tmpServers := @DbLookup( "":"" ;
"":"cldbdir.nsf" ; "($Pathname)" ; tmpNSFPath; "CanonicalServername");
tmpServers:=@If(@IsError(tmpServers);"";tmpServers); REM {Lookup home mail server };
tmpHomeServer:=@Name([Canonicalize];@NameLookup( [NoUpdate]; @UserName; "MailServer"
)); REM {Is Home Mail server in list of servers, then move this up to the front of
the list}; tmpServers := @If(@IsMember(tmpHomeServer;tmpServers); tmpHomeServer :
@Transform(tmpServers;"x";@If(x=tmpHomeServer;@Nothing;x)) ;tmpServers); tmpDebug :=
tmpDebug + "ReplicaServers:" + @Implode(tmpServers;","); tmpDNSNames := "";
tmpClusterName := ""; tmpClusterServers := ""; REM {If no servers found, then db is
in a different cluster, return list of cluster servers, with home server in front of
list}; tmpServers := @If(tmpServers="" | @Elements(tmpServers)=0; @Do( tmpDebug :=
tmpDebug + "Looking for cluster servers;"; tmpClusterName :=
@Subset(@DbLookup("":""; "":"names.nsf"; "($ServersLookup)"; tmpHomeServer;
"ClusterName"); 1); tmpClusterServers := @DbLookup( "":""; "":"names.nsf";
"($Clusters)"; tmpClusterName; "$0"); tmpClusterServers :=
@Transform(tmpClusterServers;"x";
@If(x=tmpHomeServer;@Nothing;@Name([Canonicalize];x))); tmpClusterServers :=
@If(@IsMember(tmpHomeServer;tmpClusterServers); tmpHomeServer :
@Transform(tmpClusterServers;"x";
@If(x=tmpHomeServer;@Nothing;x));tmpClusterServers); tmpClusterServers);
tmpServers); tmpLimit:=@Elements(tmpServers)+1; @For(n:=1; n<tmpLimit;
n:=n+1; tmpHTTPHostNameALT:=@Subset(@DbLookup( "":"" ; "":"names.nsf" ;
"($ServersLookup)" ; tmpServers[n] ; "HTTP_Hostname");1);
tmpServerFQDN:=@Subset(@DbLookup( "":"" ; "":"names.nsf" ; "($ServersLookup)" ;
tmpServers[n] ; "SMTPFullHostDomain");1);
tmpString:=tmpString+@Text(n)+tmpHTTPHostNameAlt+tmpServerFQDN; tmpDNSNames :=
@If(@Length(tmpDNSNames)>0;tmpDNSNames+",";"") + @LowerCase(@If
(tmpHTTPHostNameALT!="";tmpHTTPHostNameALT;tmpServerFQDN)) );
@If(tmpClusterName="";@SetHTTPHeader("X-Domino-ReplicaServers";tmpDNSNames);
@SetHTTPHeader("X-Domino-ClusterServers";tmpDNSNames));
@SetHTTPHeader("Cache-control";"no-store");
@If(tmpDebug="";"";"<script>"+tmpDebug+"</script>")

Apndice B: Ejemplo de iRule

Esta iRule ejercita la funcin Servers Lookup para ayudarlo a localizar el archivo de correo electrnico de los usuarios en el dominio. DominoServers es el grupo de servidores que usamos en el ejemplo en el dispositivo Big IP.

###### when CLIENT_ACCEPTED { #set the status - 'needs server' 1 or
0. log local0. "got initial connect - needs a lookup." set needs_server 0 } when
HTTP_REQUEST { #capture original request - destined for a real server. if {
([HTTP::uri]ends_with ".nsf") and not ([HTTP::uri] contains "names.nsf")}{ set
original_request [HTTP::request] set needs_server 1 set nsf "[substr [HTTP::uri] 1
".nsf"].nsf" HTTP::uri/iwaredir.nsf/ServersLookup?OpenForm&nsfpath=$nsf }
else { set needs_server 0 } #check to see if we need a server.Else, send to our
dest. pool if { $needs_server == 1 } { #dummyServer is our ?mapping? server to query
against. It returns the header and its values. pool DominoServers } else { pool
DominoServers } } when HTTP_RESPONSE { if { $needs_server == 1 } { set server_list
[split [HTTP::headerX-Domino-ClusterServers], ,]
HTTP::collect[HTTP::headerContent-Length] } } when HTTP_RESPONSE_DATA { foreach
{svr} $server_list { if { "" ne $svr }{ set dest [findclass [string trim $svr]
::NSREPLICASERVERS " "] log local0. "Servername is [string trim $svr]" log local0.
"$dest" #TEST.ONE.TWO.COM 10.100.100.80:8080 #set node_addr [getfield [findclass
$svr domino-servers " "] ":" 1] #set node_port [getfield [findclass $svr
domino-servers " "] ":" 2] log local0. "server is: $node_addr on
$node_port...issuing HTTP::collect" if { [LB::status pool DominoServers member $dest
80 ] eq "up" } { log local0. "Selecting $node_addr:$node_port" pool IrisServers
member $dest HTTP::retry$original_request break } } } set needs_server 0 }
    ####

Agradecimientos

Los autores desean agradecer a las siguientes personas por su ayuda con los anlisis de alta disponibilidad que se describen en el presente artculo: John Fortier (IBM), James Powers (IBM), Mark Oslowski (IBM), Matt Cauthorn (F5 Networks) y John Alam (F5 Networks).

Recursos

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Lotus
ArticleID=496971
ArticleTitle=Como lograr una alta disponibilidad con IBM Lotus iNotes?
publish-date=06182010