Implementando Fast Connection Failover sobre Aplicaciones.NET



Documentos relacionados
Oracle RAC One Node 11gR2

Implementación de Shared Application Tier en e-business Suite R12

Implementando Transparent Application Failover sobre Aplicaciones.NET

Result Cache en Oracle Database 11gR2

Transacciones Distribuidas con ODP.NET 12c

Luis Eduardo Peralta Molina Sistemas Operativos Instructor: José Doñe Como crear un Servidor DHCP en ClearOS

Instalación del Admin CFDI

Guía de Apoyo Project Web Access. (Jefe de Proyectos)

WINDOWS : TERMINAL SERVER

Far Sync Standby Database en Oracle Database 12c

OCFS (Oracle Cluster File System)

Manejo de Oracle Multimedia sobre Oracle Database 12c

How to Crear Servidor DNS ClearOS

Upgrade Oracle Clusterware versión 10gR2 a 11gR2

Direcciones IP IMPLANTACIÓN DE SISTEMAS OPERATIVOS 1º ASIR. En redes IPv4.

BrowserSQL 4 versión 2 - TUTORIAL

Integración de Oracle WebLogic con Oracle Real Application Cluster

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

SEPARAR Y ADJUNTAR UNA BASE DE DATOS. Separar una base de datos

Escudo Movistar Guía Rápida de Instalación Para Windows

En caso de que el cliente nunca haya obtenido una concesión de licencia de un servidor DHCP:

Visión General de GXportal. Última actualización: 2009

Sistema de Control de Accesos API-WIN

CONTPAQ i Componentes. Carta técnica 1.0.2

Oracle Grid Naming Service

Migración de ESET Remote Administrator v2.x a v3.x

Instalación de OPUS PLANET en red

Oracle Change Data Capture

Descripción. Este Software cumple los siguientes hitos:

Instructivo Postulación en Línea Admisión Año Académico 2015 Escuela de Postgrado

Roles y Características

Upgrade Oracle Database versión 11gR1 a 11gR2 en un ambiente e-business Suite R12.

MANUAL DE AYUDA. MODULO SAT (Anexo Integración AGIL SAT)

Creación de un Multitenant Container Database 12c de forma Manual

Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian

Instance Caging. Introducción. Implementación. Por Francisco Riccio

Indice. .01 Introducci n. .02 Perfiles de usuario. .03 Ingreso al portal Mi Entel PCS Empresas. .04 Activación de los teléfonos móviles de la empresa

BROWSERSQL VERSIÓN 3.1 TUTORIAL

10775 Administering Microsoft SQL Server 2012 Databases

Manual EDT DISEÑO EDT - CREAR EVENTO DE DIVULGACIÓN TECNOLÓGICA

AUTORIZACIÓN DE COMERCIALIZACIÓN EXCEPCIONAL DE MEDICAMENTOS DE USO HUMANO GUÍA PARA LA SOLICITUD DE UNA AUTORIZACIÓN DE COMERCIALIZACIÓN EXCEPCIONAL

MANUAL DE USUARIO PARA LA INSTALACION DE LOS AGENTES COMMVAULT SIMPANA 9.0

Sincronización del Servidor.

(Soluciones ERPContable) Versión 3.0.n. Manual de instalación

MANUAL TRAMITACIÓN PROCEDIMIENTO

Sistema de Control de Accesos

ing Solution La forma más efectiva de llegar a sus clientes.

Práctica GESTIÓN Y UTILIZACIÓN DE REDES LOCALES. Curso 2001/2002. TCP/IP: protocolo TCP

Mesa de Ayuda Interna

Introducción a la Firma Electrónica en MIDAS

Implementación de Oracle RAC 11gR2 sobre e-business Suite R12

Manual de Instalación. Mayo 2011

El proceso de Instalación de Microsoft SQL Server 2008


Guía para la instalación de certificado de seguridad AlphaSSL en hostings basados en panel de control Plesk

H O T E L W I N Configuración del motor de Reservas on line

Acronis License Server. Guía del usuario

Manual de software. Dynamic Cloud. 10/2014 MS-Dynamic_Cloud v1.2

MANUAL PARA CONFIGURACIÓN DEL COMPUTADOR DE LOS USUARIOS PARA EL USO DEL SISDON

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported

Carpeta Virtual de Expedientes

Especificación WebService para:

Manual de Timbrado FEL

Recuperador datos externos

Guía rápida de instalación y puesta en marcha del Agente ADSL

Instructivo Software de Gestión de Duplicados (Cor-Dupli)

CONSTRUCCIÓN DEL PROCESO PAGO DE FACTURAS. BizAgi Process Modeler

ENVÍO DE POR MEDIO DE SMTP

TciSatSingleW32 Versión 3.1

Estructuras de datos: Proyecto 2

Beneficios estratégicos para su organización. Beneficios. Características V

Autores en Web of Science y ResearcherID

Aspectos Básicos de Networking

Introducción. ibertasa.com se reserva el derecho a modificar la oferta comercial en cualquier

Configuración de la red

Servicio de Notificaciones Electrónicas y Dirección Electrónica Habilitada

Administración Local Soluciones

Contenido. cursos.cl / Teléfono:

Bienvenido y gracias por unirse a nosotros para efectuar la formación online sobre la actualización del software itero 5.1. En un esfuerzo por

Aplicaciones Cliente/Servidor en Gambas Prof: Mileti, P.

Gestión de Oportunidades

MAINTraq RealTime MANUAL DE OPERACIÓN 26/03/2008

Manual de uso para la aplicación cliente para uso de FTP, FTPS y SFTP Configuración de Filezilla *

Instalar GFI WebMonitor

CONECTOR CTIFAC CONTENIDO

Curso de HTML5 y CSS3

myappgen Usted Construye la aplicación mientras la ejecuta

Guia rápida EPlus Cliente-Servidor

Curso Online de Microsoft


UNIVERSIDAD DE OVIEDO

Introducción a JDBC - Base de datos con Java

MANUAL DE USUARIO PIFTE - ESPAÑA

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

Configuración de Aspel-SAE 6.0 para trabajar Remotamente

COMUNICACION DE PLC S MEDIANTE EL PUERTO RS- 485 Y MONITOREADO POR PANTALLA.

Tutorial: Primeros Pasos con Subversion

Iniciar flujo a partir de un archivo XML

Tabla de contenido. 1. Objetivo Asignación de responsabilidades Alcance Procedimientos relacionados...4

Transcripción:

Implementando Fast Connection Failover sobre Aplicaciones.NET Por Francisco Riccio Introducción Fast Connection Failover (FCF) es un mecanismo que ofrece un failover de conexión de base de datos a nuestras aplicaciones, el cual se ejecutará automáticamente cuando ocurra una indisponibilidad en la instancia conectada; siendo una acción transparente para los usuarios finales. Las librerías requeridas para el uso de FCF están disponibles desde la versión Oracle Client 10gR1, pero en el caso de ODP.NET están disponibles desde la versión 10gR2. Es importante resaltar que a partir de la versión Oracle Client 10gR2 se incluyó el feature de notificación de balanceo de carga sobre una base de datos Oracle RAC a través de notificaciones FAN. FCF tiene las siguientes características: Ofrece rápida detección de la indisponibilidad de una instancia e inicia la reconexión en otra disponible. La detección de dicha indisponibilidad no se da por eventos de TCP Timeouts sino mediante eventos recibidos por el Oracle RAC, siendo más rápido y eficiente. Automáticamente realiza una limpieza de las conexiones conectadas sobre una instancia indisponible de base de datos antes de reingresarlas al pool. En un ambiente en Oracle RAC, ODP.NET estará informado en todo momento sobre la carga actual de cada una de las instancias de base de datos, permitiendo que al abrir nuevas conexiones se reubiquen sobre la instancia menos congestionada. Asimismo reconoce cuando nuevos nodos son agregados al clúster y los considerará para la colocación de nuevas conexiones que se soliciten. FCF consigue una detección rápida de indisponibilidad y además enterarse de cada evento que ocurre en nuestra base de datos Oracle RAC mediante Fast Application Notification (FAN). FAN es un mecanismo de notificación que Oracle RAC utiliza para notificar a otros procesos sobre su nivel de servicio, disponibilidad y configuración. Estas notificaciones FAN son las que nuestra aplicación podrá recibir para tomar alguna acción. La publicación de estos eventos FAN se realiza mediante Oracle Notification Service (ONS). 1

Se presenta la siguiente arquitectura:.net App C App C App C App Java App ODP.NET OCI API ONS OCI API ONS Java API JDBC ONS ONS AQ Eventos HA CRS Eventos HA ONS Figura 1 En la figura 1 podemos apreciar que dependiendo del tipo de aplicación que tengamos, los mensajes FAN serán recibidos ya sea por un componente ONS o mediante una cola de mensajes en Oracle Advanced Queuing (AQ). Nuestra implementación que más adelante se documentará estará basado en un desarrollo sobre Microsoft.NET utilizando ODP.NET para el acceso de una base de datos Oracle RAC 12c compuesto de 2 nodos. Nuestra base de datos estará corriendo sobre una plataforma Oracle Linux v5.10 x64 bits y nuestra aplicación será de tipo cliente/servidor corriendo sobre clientes Windows 7 x64 bits. Adicionalmente contamos con un servidor DNS que resolverá las IPs de los hostnames solicitados, además por buena práctica, será responsable de devolver cualquiera de las 3 IP s asociadas al IP SCAN de nuestra configuración de Oracle RAC 12c. La aplicación utilizará Oracle Data Access Components (ODAC) versión 12c de x64 bits como driver para el acceso a la base de datos. 2

La arquitectura de nuestra solución será la siguiente: DNS Nodo-01 Red Pública Nodo-02 Oracle Real Application Cluster Interconnect Storage Figura 2 Nota 1: Como consideración en nuestro diseño, no deberíamos implementar FCF y TAF juntos como mecanismo de failover de conexión para nuestras aplicaciones. Recordemos que TAF es útil cuando son aplicaciones que ejecutan muchas operaciones de lectura. Nota 2: A partir de la versión Oracle Database 12c, FCF ha sido extendido hacia Oracle Dataguard y Oracle GoldenGate para ODP.NET 12c a través de Global Data Services. Nota 3: Cuando un servicio de base de datos se detiene de manera manual las conexiones de base de datos que se encuentran en estado de ocio son cerradas y las que aún están en ejecución terminan su operación con normalidad. Este feature llamado (Planned Outage) solo está disponible para ODP.NET Unmanaged Driver. Nota 4: ODP.NET no soporta la distribución de conexiones de base de datos cuando un nuevo nodo inicia, sin embargo si soporta failover de conexión de base de datos y re-conectarlo al nuevo nodo si lo ve conveniente. 3

Implementación Requisitos Paso 1.- Parámetro AQ_TM_PROCESSES > 0 El parámetro aq_tm_process establece el número de procesos internos utilizados para la gestión de las colas en Oracle AQ. Debemos recordar que Oracle AQ será el repositorio que tendrá los mensajes FAN que deseamos recoger para ser notificados. Paso 2.- Habilitamos Advanced Queuing a nuestro servicio de base de datos (Opción q true). srvctl modify service d PRD s PROD q true Procedemos a su validación: Nota: Para la versión Oracle Database 10gR2 podemos modificar el servicio con el siguiente script: 4

SQL> execute dbms_service.modify_service(service_name=>'prod',aq_ha_notifications=>true); Paso 3.- Permisos sobre la cola de Oracle AQ sobre eventos FAN. SQL> execute DBMS_AQADM.GRANT_QUEUE_PRIVILEGE('DEQUEUE','SYS.SYS$SERVICE_METRICS', '<NOMBRE_USUARIO_BD> '); Aquí debemos utilizar el usuario de base de datos con el que nuestra aplicación se conectará. En el ejercicio a desarrollar, el usuario de base de datos que será utilizado por la aplicación para conectarse será: FRICCIO. Paso 4.- SQLNET.ORA El archivo SQLNET.ORA ubicado en la estación cliente debemos agregarle las siguientes entradas: SQLNET.OUTBOUND_CONNECT_TIMEOUT = 5 (Tiempo en segundos que tiene un cliente para establecer una conexión hacia una instancia de base de datos). SQLNET.TCP.CONNECT_TIMEOUT=3 (Tiempo en segundos para establecer una conexión TCP hacia la base de datos, este valor debe ser menor al parámetro SQLNET.OUTBOUND_CONNECT_TIMEOUT). El archivo SQLNET.ORA ubicado en las instancias de base de datos debemos agregarle la siguiente entrada como recomendación: SQLNET.EXPIRE_TIME=10 (Tiempo en segundos que se realizará un ping a las conexiones de base de datos con la finalidad de identificar conexiones huérfanas). Aplicación.NET La cadena de conexión de base de datos debe contar con una correcta configuración, para nuestro caso hemos registrado la configuración en el archivo app.config. <?xml version="1.0" encoding="utf-8"?> <configuration> <appsettings> <add key="conexion" value="data Source=(DESCRIPTION = (ADDRESS_LIST = (FAILOVER=YES)(LOAD_BALANCE=YES)(ADDRESS = (PROTOCOL = TCP)(HOST = srvscan- 121.riccio.com)(PORT = 1521)))(CONNECT_DATA=(SERVICE_NAME = PROD)(SERVER = DEDICATED)));User Id=friccio;Password=oracle;Pooling=true;Min Pool Size=1;Max Pool Size=1; 5

Validate Connection=true;HA Events=true;Load Balancing=true"/> </appsettings> </configuration> Analizaremos las características incluidas en la cadena de conexión. Pooling, construirá un pool de conexión si su valor es true. Min Pool Size & Max Pool Size, definen la mínima y máxima cantidad de conexiones de base de datos que tendrá el pool creado. Validate Connection, valida si una conexión es válida cuando regresa al pool. HA Events, permite recibir eventos en nuestra aplicación al recibir ODP.NET un evento FAN. Load Balancing, habilita al pool de conexiones balancear las nuevas conexiones que ingresen acorde a cómo está la carga distribuida actualmente entre las instancias de base de datos basándose en los algoritmos definidos por el Load Balance Advisor (LBA) y Connection Load Balancing (CLB). Permitiendo que las aplicaciones reciban conexiones de una instancia que ofrece el mejor desempeño. El usuario de base de datos debe ser el mismo que le hemos entregado permisos en la cola de mensajes de AQ descrito en la sección de Requisitos. Para implementar FCF en nuestra aplicación es de carácter obligatorio contar con las opciones: Pooling, HA Events y muy recomendable Load Balacing. Se recomienda la revisión del siguiente URL para obtener mayor información acerca de todas las opciones disponibles en la cadena de conexión: http://docs.oracle.com/cd/e51173_01/win.122/e17732/featconnecting.htm#odpnt165 Nota: ODP.NET 12c únicamente está certificado para sistemas operativos Windows Server 2012/2008R2/2008 y Windows 7. Para mayor información o actualización revisar en My Oracle Support (MOS) Nota: 726240.1 (Oracle Data Provider for.net (ODP) Supported Configurations). Una vez definida la cadena de conexión de base de datos debemos programar el evento HAEventHandler(OracleHAEventArgs eventargs), el cual se disparará ni bien se reciba un evento FAN del Oracle RAC. 6

Podemos apreciar que parámetro eventargs nos devuelve la información recibida del evento FAN. Para nuestro caso preguntamos si ha habido alguna caída en el servicio PROD, si es así, solicitaremos abrir de nuevo la conexión de base de datos y este será conectado automáticamente a una de las instancias sobrevivientes que publican el mismo servicio con el mejor desempeño. Nuestra aplicación a implementar tendrá como objetivo mostrar la instancia donde se ha establecido la conexión de base de datos y la hora actual en todo momento. Se presenta todo el código utilizado: 7

8

Es importante observar que nosotros somos responsable del manejo de la conexión una vez que se haya disparado el evento al recibirse un mensaje FAN. FCF no creará conexiones por nosotros. Validando la aplicación: Al iniciar la aplicación veremos que se ha generado una conexión de base de datos a la instancia PRD1. En la instancia 1 se evidencia que efectivamente se encuentra la sesión de base de datos. 9

Luego procedemos a matar la instancia PRD1 con la finaldiad de validar que el failover de conexión se realice automáticamente. Veremos que la aplicación automáticamente comienza a responder sin problemas pero conectado a la instancia PRD2. En la instancia 2 se evidencia que efectivamente se encuentra la sesión de base de datos. 10

Conclusiones Se puede apreciar que Oracle FCF complementa nuestras soluciones de Alta Disponibilidad proporcionándonos un failover de conexión de base de datos a nuestras aplicaciones; ocasionando que nuestros usuarios no perciban el incidente ocurrido en la base de datos. FCF permite que nuestras aplicaciones que utilizan pool de conexiones de base de datos se beneficien enormemente con el feature de carga de balanceo y actualizadas gracias a las notificaciones FAN, haciendo que nuestra aplicación sea más eficiente al ir distribuyendo las conexiones nuevas sobre las instancias más óptimas además que todo requerimiento de base de datos que envié la aplicación será atendida por conexiones que estén conectadas sobre las instancias que ofrecen mejor desempeño. Publicado por Ing. Francisco Riccio. Es un IT Architect en IBM Perú e instructor de cursos oficiales de certificación Oracle. Está reconocido por Oracle como un Oracle ACE y certificado en productos de Oracle Application & Base de Datos. e-mail: francisco@friccio.com web: www.friccio.com 11