lunes, 11 de junio de 2018

Flex Cluster RAC 12cR2 en Linux + ASM Filter Driver + DNS y DHCP en Windows Server 2016 – Parte 1

Oracle Real Application Cluster (RAC) es uno de las soluciones más populares de la base de datos Oracle para mantener alta disponibilidad de datos y soportar mayores cargas de trabajo. Con la nueva versión Oracle 12c, la propuesta de Oracle RAC trae mejoras como ASM Filter Driver e introduce un nuevo tipo de arquitectura llamada Flex Cluster.

En esta serie de artículos quiero mostrarles paso a paso como preparar un ambiente de servidores para instalar y configurar Oracle Flex Cluster RAC 12cR2; utilizando la opción GNS para la definición de nombres y ASM Filter Driver para la configuración de discos.
Voy a detallar consideraciones que deben tener en cuenta para poder utilizar las funcionalidades que Oracle RAC 12cR2 te ofrece.

Para este primer articulo nos vamos a enfocar en la definición de Flex Cluster y la configuración de los servicios DNS y DCHP sobre Windows Server 2016, además de los servidores que serán parte de la instalación Oracle RAC 12cR2.


¿Qué se Oracle Flex Cluster?

En versiones anteriores, a una arquitectura de 32 nodos a más se le consideraba como un clúster extremadamente grande debido a la topología que utilizaba.  A medida que aumenta la cantidad nodos, las conexiones entre sí provocan contención de los recursos de clúster y de red.


Oracle 12c introduce una nueva arquitectura llamada Oracle Flex Cluster, diseñada para soportar una cantidad superior de nodos (hasta 2000 nodos) como se suele configurar en ambientes CLOUD. 
La topología de Flex Cluster se basa en dos tipos de nodos: HUB y LEAF.

  • Nodos HUB: Son los nodos principales de la arquitectura, son los responsables de conectarse al Storage compartido y acceder al OCR y Voting Disk.
  • Nodos LEAF: Nodos más ligeros en recursos que se conectan a los diferentes nodos HUB para formar parte del clúster.  No necesitan tener acceso directo al Storage compartido y utilizan la misma red pública y privada del clúster.


Implementación de Flex Cluster RAC 12cR2

Ahora que tenemos una idea de que es Flex Cluster vamos a proceder a realizar la implementación de esta arquitectura.
Definimos los servidores involucrados utilizando Oracle Virtual Box con 2 segmentos de red:

  • Red Pública:  172.68.1.1
  • Red Privada: 192.68.1.1
Ambos servidores poseen 2 tarjetas de red para soportar los segmentos de red definidos.

Nodo 1
Nodo 2
DNS y DHCP
Servidor
oraclerac1
oraclerac2
WIN-JZG2016
Sistema Operativo
Oracle Linux 6.8
Oracle Linux 6.8
Windows Server 2016
IP Publica
172.68.1.31
172.68.1.33
172.68.1.17
IP Privada
192.68.1.31
192.68.1.33


Para mi caso, que se configura la opción Oracle Grid Naming Service (GNS), debo definir una IP virtual llamada GNS-VIP

Nombre
gns-vip.oracle.com
IP
172.68.1.35



Configuración de DNS y DHCP

En la mayoría de artículos por internet se observa la configuración DNS y DCHP sobre distribuciones Linux, sin embargo, en Latinoamérica, la realidad es que la mayoría de empresas suelen configurar este tipo de soluciones sobre Windows Server.  Debido a su interfaz familiar actualmente, elegí Windows Server 2016 para esta demostración.

1.     Nuestro sistema operativo Windows debe tener instalado correctamente los servicios DNS y DHCP como se muestra panel principal del servidor.


En el caso que no tengas instalado dichos servicios, es posible hacerlo mediante el disco de instalación de Windows Server.
Para ellos elegimos la opción Manage -> Add Roles and Features



En la pantalla de Roles seleccionamos los servicios DNS y DHCP para que se puedan instalar.



2.     Vamos a crear un nuevo dominio llamado oracle.com. En este dominio es donde definimos el nombre y las IPs publicas de los servidores que forman parte de la arquitectura RAC que estamos configurando.

Seleccionamos la opción Tools -> DNS


Sobre el directorio de zonas seleccionamos la opción Nueva Zona.

Definimos la zona como una primaria y con el nombre oracle.com







3.     Creamos la zona reversa para que se puede resolver las IPs con los nombres de cada servidor definido en el DNS.


Definimos la zona reversa primaria para IPs versión 4 del mismo segmento de red.








4.     Procedemos a definir los servidores con su respectivas IPs.  Para mi caso, que voy a configurar Oracle Grid Naming Service (GNS), debo definir una IP virtual llamada GNS-VIP.
Si no se utiliza GNS, es necesario definir la IPs públicas y virtuales de cada servidor del clúster, además, las 3 IPs que conforman el servicio Oracle SCAN.

Dentro del dominio oracle.com seleccionamos la opción: New Host (A or AAA)



Al final debemos tener una configuración como se muestra en el cuadro.



5.     Para la configuración de Oracle GNS es muy importante definir un sub-dominio para la definición dinámica de los nodos del clúster.  Este sub-domino debe tener configurado el GNS-VIP como servidor autorizado.
Si no se configuración Oracle GNS, se puede omitir este paso.

El nombre del sub-dominio que utilizamos es: gns.oracle.com
Seleccionamos la opción: New Delegation.


Definimos el Sub-dominio gns.oracle.com con GNS-VIP




6.     Oracle Grid Naming Services (GNS) te permite poder definir de manera dinámica los nombres e IPs virtuales de cada nodo del clúster, y también, las IPs que utilizamos para la configuración SCAN.  Para poder realizar esta tarea, es necesario configurar un servicio DHCP que pueda entregar las IPs que necesita el clúster.
Si no se configuración Oracle GNS, se puede omitir este paso.

Dentro del mismo servidor Windows Server 2016 seleccionamos la opción: Tools -> DHCP


Dentro del directorio IPv4 seleccionamos la opción:  New Scope


Definimos un nombre al grupo de IPs reservadas: rac 12c.
El rango de IPs:
·         Desde: 172.68.1.36
·         Hasta: 172.68.1.46

El dominio que utilizarán las IPs: gns.oracle.com con GNS-VIP






Con este ultimo paso finalizamos la configuración de los servicios DNS y DHCP en el servidor Windows.  Ahora el siguiente paso es preparar los servidores Linux para la instalación de Oracle Flex Cluster 12cR2.

  
Configuración de los servidores del clúster.

Debido a que estamos utilizando máquinas virtuales para este ejemplo.  Voy a proceder a preparar un servidor completo y luego, clonarlo como un segundo servidor.

1.     Para una mejor performance de Oracle ASM, Oracle recomienda utilizar Deadline I/O Scheduler. 
Para poder habilitar esta opción debemos de modificar la configuración GRUB del sistema operativo. Definimos la opción elevator=deadline

[root@oraclerac1 ~]# vi /boot/grub/grub.conf

title Oracle Linux Server Unbreakable Enterprise Kernel (4.1.12-37.4.1.el6uek.x86_64)
        root (hd0,0)
        kernel /vmlinuz-4.1.12-37.4.1.el6uek.x86_64 ro root=UUID=726fc670-9cda-4a38-9fb1-81135ecd5a11 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M  KEYBOARDTYPE=pc KEYTABLE=us elevator=deadline rd_NO_DM rhgb quiet
        initrd /initramfs-4.1.12-37.4.1.el6uek.x86_64.img



2.     Definimos el nombre de los servidores y sus respectivas IPs para las redes Pública y Privada.

[root@oraclerac1 ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
#IPs Publicas
172.68.1.31     oraclerac1.oracle.com        oraclerac1
172.68.1.33     oraclerac2.oracle.com        oraclerac2
#IPs Privadas
192.68.1.31     oraclerac1-priv.oracle.com   oraclerac1
192.68.1.33     oraclerac2-priv.oracle.com   oraclerac2


Para máquinas virtuales se recomienda definir el parámetro NOZEROCONF en el archivo de configuración de red /etc/sysconfig/network

[root@oraclerac1 ~]# cat /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=oraclerac1.oracle.com
GATEWAY=172.68.1.1
NOZEROCONF=yes



3.     Configuramos el archivo /etc/resolv.conf para que los servidores del clúster puedan resolver el servicio DNS configurado en el servidor Windows.

[root@oraclerac1 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search oracle.com
nameserver 172.68.1.17


4.     Para sincronizar la fecha de los servidores utilizamos el servicio propio de Oracle llamado CTSS. Deshabilitamos el servicio NTP de Linux.

[root@oraclerac1 ~]# /sbin/service ntpd stop
Shutting down ntpd:                                        [FAILED]
[root@oraclerac1 ~]# mv /etc/ntp.conf /etc/ntp.old

5.     Instalamos los paquetes de sistema operativo necesarios para la instalación de Infraestructura Grid y motor de base de datos.

[root@oraclerac1 Packages]# yum install binutils -y
[root@oraclerac1 Packages]# yum install compat-libcap1 -y
[root@oraclerac1 Packages]# yum install compat-libstdc++-33 -y
[root@oraclerac1 Packages]# yum install compat-libstdc++-33.i686 -y
[root@oraclerac1 Packages]# yum install gcc -y
[root@oraclerac1 Packages]# yum install gcc-c++ -y
[root@oraclerac1 Packages]# yum install glibc -y
[root@oraclerac1 Packages]# yum install glibc.i686 -y
[root@oraclerac1 Packages]# yum install glibc-devel -y
[root@oraclerac1 Packages]# yum install glibc-devel.i686 -y
[root@oraclerac1 Packages]# yum install ksh -y
[root@oraclerac1 Packages]# yum install libgcc -y
[root@oraclerac1 Packages]# yum install libgcc.i686 -y
[root@oraclerac1 Packages]# yum install libstdc++ -y
[root@oraclerac1 Packages]# yum install libstdc++.i686 -y
[root@oraclerac1 Packages]# yum install libstdc++-devel -y
[root@oraclerac1 Packages]# yum install libstdc++-devel.i686 -y
[root@oraclerac1 Packages]# yum install libaio -y
[root@oraclerac1 Packages]# yum install libaio.i686 -y
[root@oraclerac1 Packages]# yum install libaio-devel -y
[root@oraclerac1 Packages]# yum install libaio-devel.i686 -y
[root@oraclerac1 Packages]# yum install libXext -y
[root@oraclerac1 Packages]# yum install libXext.i686 -y
[root@oraclerac1 Packages]# yum install libXtst -y
[root@oraclerac1 Packages]# yum install libXtst.i686 -y
[root@oraclerac1 Packages]# yum install libX11 -y
[root@oraclerac1 Packages]# yum install libX11.i686 -y
[root@oraclerac1 Packages]# yum install libXau -y
[root@oraclerac1 Packages]# yum install libXau.i686 -y
[root@oraclerac1 Packages]# yum install libxcb -y
[root@oraclerac1 Packages]# yum install libxcb.i686 -y
[root@oraclerac1 Packages]# yum install libXi -y
[root@oraclerac1 Packages]# yum install libXi.i686 -y
[root@oraclerac1 Packages]# yum install make -y
[root@oraclerac1 Packages]# yum install sysstat -y
[root@oraclerac1 Packages]# yum install unixODBC -y
[root@oraclerac1 Packages]# yum install unixODBC-devel -y


6.     Creamos los grupos de sistema operativo (incluyendo RACDBA) para la administración de recursos de clúster.  También, creamos el usuario oracle. 
Si desean hacer separación de tareas, se puede crear los usuarios grid y oracle.

[root@oraclerac1 Packages]# groupadd oinstall
[root@oraclerac1 Packages]# groupadd dba
[root@oraclerac1 Packages]# groupadd oper
[root@oraclerac1 Packages]# groupadd asmadmin
[root@oraclerac1 Packages]# groupadd asmdba
[root@oraclerac1 Packages]# groupadd asmoper
[root@oraclerac1 Packages]# groupadd backupdba
[root@oraclerac1 Packages]# groupadd dgdba
[root@oraclerac1 Packages]# groupadd kmdba
[root@oraclerac1 Packages]# groupadd racdba

[root@oraclerac1 Packages]# useradd -g oinstall -G dba,oper,asmadmin,asmdba,asmoper,backupdba,dgdba,kmdba,racdba oracle

[root@oraclerac1 Packages]# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.


7.     Creamos los directorios de instalación para la infraestructura Grid y el motor de base de datos.  Asignamos los permisos correctos a cada directorio.

[root@oraclerac1 ~]# mkdir -p /u01/app/grid /u01/app/oracle
[root@oraclerac1 ~]# mkdir -p /u01/app/12.2.0/grid
[root@oraclerac1 ~]# chown -R oracle:oinstall /u01
[root@oraclerac1 ~]# chmod -R 775 /u01



8.     Preparamos el sistema operativo de manera correcta para la instalación de la infraestructura Grid y motor de base de datos.
a.     Detenemos el Firewall.
b.     Definimos parámetros de sistema operativo.
c.     Definimos los límites de sistema operativo.
d.     Desactivamos el servicio SELINUX

[root@oraclerac1 ~]# service iptables stop
[root@oraclerac1 ~]#  chkconfig iptables off


[root@oraclerac1 ~]# cat /etc/sysctl.conf
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
# Recommended value for kernel.panic_on_oops
kernel.panic_on_oops = 1


[root@oraclerac1 ~]# cat /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle  hard  memlock  3145728
# End of file


[root@oraclerac1 ~]# cat /etc/selinux/config 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted



Aquí finaliza la preparación de los servidores involucrados.  Si estas utilizando un ambiente virtual como yo, es en este punto donde debes realizar la clonación del servidor para poder crear el segundo nodo. 


Te recomiendo realizar un snapshot a los servidores en caso tengas dificultades en la instalación de Oracle Flex Cluster RAC 12cR2

Ya tenemos listo nuestros servicios DNS y DHCP sobre Windows y nuestros 2 servidores Linux para la instalación.

No hay comentarios.:

Publicar un comentario