IBM DB2 EN LA NUBE DE AMAZON AWS
La nube se ha convertido en la nueva moda, los beneficios que brindan esta nueva infraestructura son bastantes, pero este no será el tema principal de este artículo, creemos que si estás aquí es porque ya tienen idea de estos beneficios. Actualmente son varias las compañías que preguntan si los productos pueden funcionar en la nube, esto debido a que la estrategia de negocio de las compañías está cambiando de servidores On-Premise a Cloud.
IBM Db2 no se podía quedar atrás en los avances tecnológicos, en la actualidad puede ser instalado en la nube y en este artículo explicaremos como instalar Db2 HADR en Amazon AWS. Primero que nada, debemos entender los conceptos y/o herramientas básicas de la infraestructura de AWS que utilizaremos en la instalación de IBM Db2, las herramientas a utilizar son las siguientes:
- Regiones
- Zonas de disponibilidad
- VPC (Virtual Private Cloud)
- Internet Gateway
- CloudFormation
- EC2
- S3
- KeyPairName
Conceptos y/o herramientas Amazon AWS
Regiones y Zonas
Amazon tiene presencia en varias ubicaciones de todo el mundo. Dichas ubicaciones se componen de regiones, zonas de disponibilidad y zonas locales (no disponibles en todo en todas las regiones y para este caso de este artículo no son necesarias).
Una región es una ubicación geográfica aislada físicamente e independiente de otras regiones.
Una zona de disponibilidad es un centro de datos lógico en una región. Cada zona de disponibilidad en una región tiene su propia infraestructura de energía, redes, conectividad individuales y redundantes para reducir la probabilidad de que dos zonas fallen simultáneamente. Las zonas de disponibilidad de una región están conectadas a través de conexiones de baja latencia.
Nota: Cada zona de disponibilidad tiene como respaldo a un centro de datos o más.
VPC
Amazon Virtual Private Cloud (VPC) es la herramienta que ayuda a controlar en todos los aspectos la red en un entorno virtual, y dentro de estos aspectos incluye el rango de direcciones IP, creación de subredes, tablas de ruteo y gateway. Se pueden utilizar IPv4 como IPv6.
La creación de una VPC es relativamente sencilla. Es posible crear en un VPC una rede publica y otra privada, un ejemplo práctico es utilizar la red pública para el acceso a los servicios web que necesitan Internet y la red privada para los servidores de aplicaciones o bases de datos, garantizando que no se pueda acceder a las bases de datos y a los servidores de la aplicación directamente desde Internet. Cada subred podrá ser configurada con diferentes capas de seguridad de acuerdo a sus necesidades.
Internet Gateway
Internet Gateway es un componente de la VPC que permite el acceso a Internet a las instancias asociadas a la VPC, y la escalabilidad de este componente es horizontal, redundante y de alta disponibilidad.
Un Internet gateway sirve para dos fines: proporcionar un objetivo en sus tablas de ruteo de VPC para el tráfico direccionable de Internet y realizar la conversión de las direcciones de red (NAT) para las instancias que tengan asignadas direcciones IPv4 públicas. Un gateway de Internet permite el tráfico IPv4 e IPv6.
CloudFormation es un herramienta poderosa y muy interesante. Con esta herramienta se pueden automatizar las implementaciones de infraestructura y aplicaciones de una manera segura y repetible. La modelación se pude realizar a través de un lenguaje de programación o un archivo de texto con formato YAML o JSON, en el que se deben incluir los recursos necesarios en la implementación de las soluciones, no importa si son recursos de AWS o de un tercero.

EC2
Amazon Elastic Compute Cloud (Amazon EC2) son los servidores de computo virtuales. Este tipo de servidores tienen la capacidad de escalar su arquitectura hacia arriba o hacia abajo para controlar cambios en los requisitos o picos en las demandas al servidor, con lo que se reduce la necesidad de prever el tráfico.
S3
Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos que ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento. Amazon S3 proporciona características de administración fáciles de utilizar que le permiten organizar los datos y configurar sofisticados controles de acceso de acuerdo a necesidades.
Key Pair
Amazon EC2 utiliza la criptografía de clave pública para cifrar y descifrar la información de inicio de sesión. En la criptografía de clave pública, se utiliza una clave pública para cifrar los datos; a continuación, el destinatario utiliza la clave privada para descifrarlos. El conjunto de clave pública y clave privada se denomina par de claves. La criptografía de clave pública le permite tener acceso de forma segura a las instancias utilizando la clave privada en lugar de una contraseña.
Diagrama de solución
Una vez que nos familiarizamos con los componentes que utilizaremos debemos entender la solución que desplegaremos en AWS. El método tradicional de IBM para lograr una alta disponibilidad es utilizar el almacenamiento compartido y las direcciones IP virtuales, que están organizadas por Tivoli System Automation for Multi-Platforms (TSAMP). En este artículo explicaremos como desplegar una solución totalmente automatizada que utiliza tecnologías nativas de IBM y AWS.

La imagen anterior muestra una arquitectura dividida en dos zonas AZ1 y AZ2. En la zona AZ1 instalaremos dos servidores virtuales, el primero será para el Db2 Client y el segundo para el Primary server de Db2, mientras que en la zona AZ2 instalaremos el Secondary Db2 Server. Los datos se replican entre la instancia principal en AZ1 y la instancia en espera en AZ2 mediante la replicación de IBM High Availability Disaster Recovery (HADR). Si el nodo primario no está disponible, TSAMP lo detecta y pasa a la instancia en espera. Las aplicaciones cliente de Db2 se vuelven a conectar automáticamente a la instancia en espera utilizando la función IBM Automatic Client Reroute (ACR).
Instalación
Configuración inicial en AWS
Para garantizar una alta disponibilidad es necesario crear una VPC con dos subredes públicas y, cada subred debe estar colocada en una zona de disponibilidad diferente dentro de la misma región. Si aún no estás muy familiarizado con la creación de VPC sugerimos utilizar la VPC predeterminada en cada región de AWS.
Una vez creada la VPC, es necesario crear un Internet gateway y agregarlo a la VPC. De igual forma si no estás familiarizado con los conceptos la VPC, la VPC predeterminada ya cuenta con un internet gateway.
Para poder acceder al instalador del Db2 desde Amazon AWS es necesario crear un Amazon S3 y subir el archivo de instalación del Db2 a éste, seguir los siguientes pasos:
- Cree un S3.
- En el S3, cree una carpeta que tenga como nombre “db2”.
- Cargue el archivo gunzip de la versión de IBM Db2 a instalar en la carpeta “db2”, para este articulo utilizamos la versión Db2 11.5 trial (v11.5_linuxx64_dec.tar.gz “no cambiar el nombre”)
- Asignar permisos de lectura y escritura al S3 y al gunzip.
- Como el acceso a las instancias de EC2 es por medio de claves públicas es necesario tenar creado una Key Pair para las instancias que vamos a crear a continuación.
Instalación IBM Db2 en High Availability
Para la instalación utilizaremos CloudFormation, que, como comentamos antes, es una herramienta muy poderosa que ayuda automatizar la implementación de soluciones, minimizando el riesgo de instalación entre entornos (DEV, UAT, PROD).
Con el ánimo de ayudar con la instalación, en este link pueden descargar la plantilla ya modelada para la instalación de IBM Db2 11.5 trial.
A continuación seguimos abriendo la consola de adminitración de AWS para ir a CloudFormation. Dar click en Create stack – With new resources (standard)
En la sección Specify template dar clic en Upload a template file, en donde se activará el botón choose file y dar clic, se abre una venta de windows para seleccionar la plantilla que descargamos previamente, seleccionamos la plantilla y damos clic en Open - clic en Next.
En la venta que se abre llenar los campos siguientes:
Stack name: Nombre del stack
VpcId: Ingrese el ID de la VPC creada anteriormente
KeyPairName: Elija la clave pública creada anteriormente
LinuxInstanceType: Elija el tipo de instancia apropiado
DBVolumeSize: Ingrese el tamaño del volumen de Amazon EBS (Elastic Block Store) para alojar la base de datos
S3Bucket: Ingrese el nombre del S3 creado anteriormente
DB2Instance: Deje este parámetro como predeterminado o ingrese un nombre de instancia de Db2
DB2Database: Deje este parámetro como predeterminado o ingrese un nombre de base de datos Db2
SyncMode: Seleccione el modo de sincronización requerido
SSHCidr: Ingrese un bloque CIDR válido. Las máquinas dentro de este bloque CIDR pueden conectarse a las instancias EC2 utilizando Secure Shell (SSH).
PrimaryEC2InstanceName: Deje este parámetro como predeterminado o ingrese un nombre de instancia EC2
PrimarySubnetId: Ingrese el ID de la subred para colocar la instancia primaria de EC2
SecondaryEC2InstanceName: Deje este parámetro como predeterminado o ingrese un nombre de instancia EC2
SecondarySubnetId: Ingrese el ID de la subred para colocar la instancia secundaria de EC2
ClientEC2InstanceName: Aqui asignamos el nombre que deseemos
ClientSubnetId: Ingrese el ID de la subred para colocar la instancia del cliente de EC2, recordar que el diagra de solución lo colocamos en la subred de la instancia primaria.
Clic en Next
Clic en Next
En Capabilities seleccionar I acknowledge that AWS CloudFormation might create IAM resources.
Clic en Create stack
La creación de nuevos entornos con CloudFormation es realmente rápida y sencilla una vez que tenemos definida una plantilla, para conocer el avance la de la instalación debemos firmarnos a cada nueva instancia de EC2 creada con los pasos anteriores.
- Para conectarnos debemos abrir el puerto 22 en las instancias EC2 creadas por CloudFormation para la dirección IP con la que vamos a conectarnos.
- Desde un cliente ssh conectarnos con la clave pública a la instancia, ejem: ssh -i clave_publica.pem ubuntu@IP-EC2
- Una vez dentro de la instancia ejecutar el comando siguiente: “tail -f /var/log/cloud-init-output.log”
Una vez que la instalación termino es el momento para validar que la instalación es correcta. Como primer paso visualizaremos los detalles del clúster de Db2.
Podemos ver la configuración de Db2 HADR ejecutando el siguiente comando en la instancia principal y como usuario raíz.
su - db2inst1 -c "db2pd -hadr -db dbtest"
En esta salida, tenga en cuenta los siguientes parámetros:
HADR_ROLE: Este parámetro indica si la instancia es un nodo primario o en espera.
HADR_STATE: Este parámetro debe mostrar un valor de PEER.
HADR_CONNECT_STATUS: Este parámetro debe mostrar un valor de CONNECTED.
Para visualizar los nodos del clúster de TSA ejecutar el comando lsrpnode como usuario raíz en la instancia primaria o en la secundaria. Como resultado, vera el nombre, el estado y la versión de RSCT de cada nodo.

Para ver los recursos del clúster TSA ejecutar el comando lssam en la instancia principal.

Es hora de probar el clúster, y para esto ejecutaremos un failover de manera manual con el comando siguiente:
rgreq -o move
Ejemplo de comando:
rgreq -o move db2_db2inst1_db2inst1_DBTEST-rg
Después de hacer un failover manual, podremos observar que en la instancia principal el valor de HADR_ROLE ahora será de STANDBY.
Listo ya tenemos un Db2 instalado en alta disponibilidad.
Conclusión
Instalamos IBM Db2 en alta disponibilidad de una forma automatizada, controlada y eficiente con la ayuda de Amazon CloudFormation. El uso de herramientas de automatización para despliegues de soluciónes es muy importante en las organizaciones, minimiza los errores y mejor los niveles de SLA.
La administración de un DBA no se ve afectada con el cambio de infraestructura On-Premise a Cloud, es completamente transparente el uso de estas nuevas tecnologías para los administradores y usuarios finales. Como pudimos observar los conceptos y/o herramientas de IBM Db2 siguen siendo los mismos, probamos un failover manual y observamos como la alta disponibilidad se mantiene con el uso de TSAMP.
"Las personas siempre le temen al cambio. Le temían a la electricidad cuando fue inventada, ¿no es así? ". -Bill Gates
Referencias
https://aws.amazon.com/es/about-aws/global-infrastructure/regions_az/
https://aws.amazon.com/es/vpc/
https://docs.aws.amazon.com/es_es/vpc/latest/userguide/egress-only-internet-gateway.html
https://aws.amazon.com/es/cloudformation/
https://aws.amazon.com/es/ec2/
https://aws.amazon.com/es/s3/
https://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/ec2-key-pairs.html
https://aws.amazon.com/es/blogs/database/creating-highly-available-ibm-db2-databases-in-aws/
#espanol