Cluster Activo/Pasivo cruzado de BBDD y Weblogic con Oracle Clusterware
05/01/2011 -
Hoy os hablaré de la configuración de entornos Activo/Pasivo “cruzados” de Weblogic y BBDD. Esta configuración usa el software de cluster Oracle Cluster Ready Services 11gR1 para mantener los servicios de WebLogic (sean aplicaciones Java o Forms/Reports) activos en un nodo y la BBDD en el otro. En caso de caída de uno de los nodos los servicios que se ejecutaban en éste pasan a ejecutarse en el nodo superviviente, todo de manera automática.
Un ejemplo lo tenemos en la siguiente imagen. Existen dos servidores conectados a una cabina de discos, en el primero se ejecuta “por defecto” Weblogic y tiene asignado un disco, en el segundo se ejecuta “por defecto” la BBDD y tiene dos discos asignados. Existen también IP’s virtuales que están asignadas a Weblogic y a la BBDD respectivamente. Los servicios pueden moverse automáticamente de un servidor a otro en caso de problemas en uno de ellos, o manualmente (para realizar tareas de mantenimiento en uno de los servidores por ejemplo).
Los recursos de IP virtual son usados para que los clientes no deban preocuparse de en qué nodo está el producto, siempre pueden acceder a él por la misma IP/nombre.
En nuestro caso, para realizar este tipo de configuraciones usamos un producto de Oracle llamado ASCRS (Application Server Cluster Ready Services), un componente que encontramos en el Fusion Middleware Companion CD (viene marcado como “Clusterware”) y que nos permite integrar de manera facil la BBDD y el servidor Weblogic en el Clusterware Oracle. Este producto se instala sobre el propio software de cluster y funciona como un interfaz de control y configuración.
Entre las ventajas que nos aporta ASCRS tenemos:
Fácil configuración de los recursos ya que ha sido diseñado específicamente para integrar en el clusterware la BBDD Oracle y el servidor de aplicaciones Weblogic. Una prueba de la simplicidad es que podemos crear un recurso de BBDD o Weblogic con sólo un comando:
ascrsctl create -name mydatabase -type db -oraHome /cfcdb -oraSID orcl -disk sharedisk -lsnr mydblsnr
La BBDD es un tipo de recurso que depende de otros para poder funcionar (disco, listener, vip), por tanto previamente tendremos que haber creado estos otros recursos (también con un solo comando):
ascrsctl create -name myvip -type vip -ipAddr 192.168.1.10 -netmask 255.255.255.0 -interface eth0
ascrsctl create -n sharedisk -type disk -path /asdisk -mc “/bin/mount /dev/sda /asdisk” -umc “/bin/umount /asdisk”
ascrsctl create -n mydblsnr -type dblsnr -loh /cfcdb -ln LISTENER -disk ohdisk -vip myvip
En el caso de Weblogic el comando para crear el recurso puede ser parecido a éste:
ascrsctl create -n wlas -t as -vip asvip -disk asdisk -ch /sharedisk1/fmw/user_projects/domains/asdomain
El propio software de cluster, mediante reglas de dependencia, se encargará de desplazar, poner online/offline y comprobar el estado de todo el conjunto de recursos.
Cada uno de los recursos que creamos tiene una serie de parámetros que nos permiten controlar su comportamiento; por ejemplo, reintentos de arranque si lo encontramos parado, tiempo entre comprobaciones de funcionamiento, etc. Existe el comando ascrsctl status que nos proporciona información detallada de la configuración de los recursos, de su estado y de sus dependencias; por ejemplo, para un recurso de tipo virtual IP podríamos tener:
ascrsctl status -n ora.myvip.cfcvip
Basic information
————————+————————
Name | ora.myvip.cfcvip
Target state | OFFLINE
Resource state | OFFLINE
Hosting members | stajz11, stajz12
————————+————————
Common CRS parameters
————————+————————
Auto start | No
Check interval | 60 sec
Failover delay | 10 sec
Script timeout | 50 sec
Start timeout | 100 sec
Stop timeout | 100 sec
————————+————————
Resource specific parameters
————————+————————
Interface(s) | eth2
Netmask | 255.255.252.0
Virtual IP address | 140.87.27.48
————————+————————
Resource dependency tree(s)
————————————————-
ora.mydb.cfcdb
|
+->ora.mydblsnr.cfcdblsnr
| |
| +->ora.mydisk.cfcvip
| |
| +->ora.myvip.cfcvip
|
+->ora.mydisk.cfcdisk
Otra ventaja es el no tener que crear los programas/scripts de control. Si usáramos sólo el software de cluster para crear estos recursos (cosa que es perfectamente posible) tendríamos que crear también una serie de programas/scripts que permitieran al cluster conocer el “estado” de los recursos (¿el disco está montado? ¿la BBDD está abierta? ¿Weblogic está operativo?) y otra serie de programas/scripts para poder operar los recursos (arrancar/parar el listener, la BBDD y Weblogic). Todo esto ya nos viene dado si usamos ASCRS.
La expresión “Activo/Pasivo cruzado” indica que todos los nodos del cluster están activos y aprovechamos todo el hardware de que disponemos, si bien tendremos que dimensionar correctamente los servidores para que puedan dar todo/parte del servicio en caso que falle uno de ellos y el otro tengan que cargar con todos los componentes.
Otro punto a favor del ASCRS es que es un producto de Oracle y está certificado su uso con BBDD Oracle y con Weblogic. En la configuración que hemos propuesto, y suponiendo que usamos Oracle Unbreakable Linux como sistema operativo, dispondríamos de absolutamente todo el software de un solo fabricante, lo que nos facilitaría mucho si integración y mantenimiento.
A nivel de licencias, si disponemos de BBDD Oracle y de Weblogic el clusterware es gratuito y, según indica la documentación de Oracle, en caso de contingencia podremos llegar a usar ambos productos en una sola maquina durante diez días al año sin necesidad de tener que licenciar también esa segunda maquina (lo que posibilita tener licencias de BBDD sólo para una maquina y de Weblogic para la otra). Para más detalles en sobre este tema os remito a la documentación oficial: http://www.oracle.com/us/corporate/pricing/data-recovery-licensing-070587.pdf
Existen configuraciones de alta disponibilidad mucho más complejas, con varios servidores Weblogic bajo balanceadores hardware y con BBDD Oracle RAC, que aportan mucho más rendimiento pero a costa de una complejidad y un coste mucho más elevados.
El cluster Activo/Pasivo cruzado nos dota de alta disponibilidad por poco más importe de lo que nos costaría tener las dos maquinas con los dos productos de manera independiente (incremento de CPU y memoria). Y no solo podemos “cruzar” BBDD con Weblogic, otra opción es cruzar BBDD con BBDD o Weblogic con Weblogic.
En resumen ASCRS es una gran herramienta, a mi parecer poco conocida, que puede ser una buena opción para pequeñas e incluso medianas empresas y que nos permite entrar en el mundo de la alta disponibilidad con:
- Fácil configuración y administración
- Bajo coste
- Pila de productos certificados y de un solo proveedor (Oracle)
Juntamente con los recursos de Weblogic y BBDD también existen recursos como por ejemplo de IP virtual, usados para que los clientes no deban preocuparse de en que nodo esta el producto, siempre pueden acceder a el por la misma IP/nombre.
En nuestro caso, para realizar este tipo de configuraciones usamos un producto de Oracle llamado ASCRS (Application Server Cluster Ready Services), un componente que encontramos en el Fusion Middleware Companion CD y que nos permite integrar de manera facil la BBDD y el servidor Weblogic en el Clusterware Oracle. Este producto se instala sobre el propio software de cluster y funciona como un interfaz de control y configuración.
Entre las ventajas que nos aporta tenemos:
Facil configuracion de los recursos, ya que ha sido diseñado específicamente para integrar en el clusterware con la BBDD Oracle y el servidor de aplicaciones Weblogic. Un ejemplo de la simplicidad es que podemos crear un recurso de BBDD o Weblogic con solo un comando:
ascrsctl create -name mydatabase -type db -oraHome /cfcdb -oraSID orcl -disk sharedisk -lsnr mydblsnr
La BBDD es un tipo de recurso que depende de otros para poder funcionar (disco, listener, vip), por tanto previamente tendremos que haber creado estos otros recursos (también con un solo comando):