Alta disponibilidad de ThingWorx > Ejemplo de implementación de alta disponibilidad de PostgreSQL con Pgpool-II > 9. Configurar el servicio Watchdog para los nodos maestro y de espera de Pgpool-II
9. Configurar el servicio Watchdog para los nodos maestro y de espera de Pgpool-II
Paso 1
Edite pgpool.conf en cada nodo de Pgpool-II para que contenga la configuración y los valores pertinentes del guardián.
Configuración
Valor
Descripción
use_watchdog
el
Permite activar el guardián en Pgpool-II.
wd_hostname
'10.91.9.101'
O bien
’10.91.9.102’
Nombre de host o dirección IP de este guardián.
wd_port
9000
Número de puerto de este guardián.
delegate_IP
'10.91.9.100'
Dirección IP virtual que los clientes utilizan para acceder a PostgreSQL (a través de Pgpool-II).
ifconfig_path
'/etc/pgpool2'
Ruta absoluta del directorio que contiene los comandos o scripts if_up_cmd e if_down_cmd.
if_up_cmd
'ifup.sh $_IP_$ <eni id of Pgpool node>'
Comando que se emite cuando Pgpool-II intenta abrir la interfaz IP virtual con la dirección delegate_IP. El usuario puede recuperar el ID de eni del nodo de Pgpool-II conectándose a la consola de administración de EC2 y yendo a su instancia de Pgpool-II. En su descripción de la consola, busque Network interfaces entry, pulse en eth0 y busque el ID de interfaz. Utilícela para el $<eni id of Pgpool node>.
if_down_cmd
ifdown.sh $_IP_$ <eni id of Pgpool node>
Comando que se emite cuando Pgpool-II intenta cerrar la interfaz IP virtual con la dirección delegate_IP. Consulte if_up_cmd para obtener el ID de eni del nodo de Pgpool-II.
arping_path
'/usr/bin'
Ruta del paquete de instalación de iputils-arping.
arping_cmd
'arping -U $_IP_$ -w 1'
Comando arping que se utiliza para verificar las direcciones IP.
heartbeat_destination0
'10.91.9.102'
O bien
’10.91.9.101’
Dirección IP en la que se realiza la comprobación de latidos; valor de la configuración other_pgpool_hostname0
heartbeat_destination_port0
9694
Utilice el valor por defecto.
heartbeat_device
'eth0'
Dispositivo NIC de la dirección IP para la comunicación de latidos.
other_pgpool_hostname0
'10.91.9.102'
O bien
’10.91.9.101’
Dirección IP de la otra instancia del servidor Pgpool-II.
other_pgpool_port0
5432
Puerto al que escucha el otro nodo de Pgpool-II.
other_wd_port0
9000
Puerto al que escucha la otra función de guardián de Pgpool-II.
Paso 2
Cree un script ifup.sh para utilizarlo en la configuración if_up_cmd del fichero pgpool.conf.
1. Coloque el script en el directorio /etc/pgpool2.
2. Asegúrese de que sea propiedad de PostgreSQL y pertenezca al usuario de postgres.
3. Asegúrese de que sus permisos se hayan definido en 755.
4. El fichero debe contener lo siguiente:
#!/bin/bash -x
/sbin/ifconfig eth0:0 inet $1 netmask 255.255.255.0
Paso 3
Cree un script ifdown.sh para utilizarlo en la configuración if_down_cmd del fichero pgpool.conf.
1. Coloque este fichero en el directorio /etc/pgpool2.
2. Asegúrese de que sea propiedad de PostgreSQL y pertenezca al usuario de postgres.
3. Asegúrese de que sus permisos se hayan definido en 755.
4. El fichero debe contener lo siguiente:
#!bin/bash -x
/sbin/ifconfig eth0:0 down
Paso 4
Defina las claves públicas ssh que corresponden a la entrada .ssh/authorized_keys del usuario de PostgreSQL en cada uno de los servidores de bases de datos PostgreSQL del directorio /root/.ssh. El usuario raíz ejecuta los procesos de Pgpool-II de alta disponibilidad (con guardián) y, en caso de conmutación por error de los servidores de bases de datos PostgreSQL, es responsable de ejecutar el script /etc/pgpool2/failover.sh.
* 
Los mensajes de Permission Denied relacionados con las claves se producirán durante la conmutación por error.
Paso 5
Antes del arranque inicial de los nodos de Pgpool-II con guardián, PTC recomienda limpiar o descartar el fichero pgpool_status del directorio /var/log/postgresql. De este modo, Pgpool-II utilizará la base de datos PostgreSQL configurada para node0 en el fichero pgpool.conf durante el arranque. Si se ha producido una conmutación por error y el nodo maestro no coincide con la entrada de node0 del fichero pgpool.conf, es necesario conservar el fichero pgpool_status, ya que realiza un seguimiento del maestro actual entre el inicio y la detención del proceso de Pgpool-II.
Paso 6
Inicie el proceso pgpool como usuario raíz en la primera instancia de Pgpool-II. No lo inicie como servicio. Ejecute los siguientes comandos:
sudo su
/usr/sbin/pgpool -n -f /etc/pgpool2/pgpool.conf > ~postgres/pgpool.log
2>&1 &
Paso 7
Consulte las entradas de Pgpool-II en syslog para verificar que la función de guardián se haya inicializado correctamente.
more /var/log/syslog | grep pgpool
La salida debe indicar que el guardián y Pgpool-II se han inicializado e iniciado correctamente.
Paso 8
Para despejar este registro antes de ejecutar un nuevo proceso de Pgpool-II, PTC recomienda realizar una copia de seguridad del fichero syslog existente para referencia histórica y, a continuación, invocar el siguiente comando:
> /var/log/syslog
Verifique que no haya entradas de errores en el fichero ~postgres/pgpool.log. Verifique que se hayan iniciado los procesos de Pgpool-II.
Paso 9
La configuración por defecto que se especifica en la sección PostgreSQL HA permite definir el valor de 125 para la configuración num_init_children del fichero pgpool.conf. Debe haber 125 procesos con el estado "esperar solicitud de conexión", incluido uno con el prefijo "PCP:". Hay otros procesos que pgpool-II y el guardián crean.
Paso 10
Verifique la configuración de la interfaz (ifconfig) para asegurarse de que se haya creado la dirección IP virtual. Verifique que se haya creado una nueva interfaz de red con la dirección IP que se ha asignado a la configuración delegate_IP del fichero pgpool.conf. Se debe denominar "eth0:0".
Paso 11
Inicie un proceso de Pgpool-II como usuario raíz en la segunda instancia del servidor Pgpool-II. No lo inicie como servicio. Ahora, en los registros se debe mostrar que una instancia ha ascendido a maestra y la otra se ha iniciado correctamente. La instancia maestra debe informar de que ha aceptado una solicitud de registro de la instancia de Pgpool-II que no es maestra (a través de su dirección IP).
Paso 12
Para detener los procesos de Pgpool-II, utilice los siguientes comandos como raíz:
sudo su
/usr/sbin/pgpool --mode=immediate stop