Table of Contents
Cómo configurar y mantener alta disponibilidad/agrupación en clústeres en Linux
Alta disponibilidad. ( HA. simplemente se refiere a la calidad de un sistema para operar continuamente sin fallas durante un largo período de tiempo. Las soluciones HA se pueden implementar utilizando hardware y/o software, y una de las soluciones comunes para implementar HA es la agrupación en clústeres.
En informática, un clúster se compone de dos o más computadoras (comúnmente conocidas como nodos. o miembros. que trabajan juntos para realizar una tarea. En tal configuración, solo un nodo proporciona el servicio y los nodos secundarios se hacen cargo si falla.
Los clústeres se dividen en cuatro tipos principales:
- Almacenamiento:. proporciona una imagen de sistema de archivos coherente en todos los servidores de un clúster, lo que permite que los servidores lean y escriban simultáneamente en un único sistema de archivos compartido.
- Alta disponibilidad. : elimina puntos únicos de falla y falla los servicios de un nodo de clúster a otro en caso de que un nodo deje de funcionar.
- Equilibrio de carga. envía solicitudes de servicio de red a varios nodos de clúster para equilibrar la carga de solicitudes entre los nodos del clúster.
- Alto rendimiento. realiza procesamiento paralelo o concurrente, lo que ayuda a mejorar el rendimiento de las aplicaciones.
Otra solución ampliamente utilizada para proporcionar HA. es la replicación (específicamente replicaciones de datos). La replicación es el proceso mediante el cual una o más bases de datos (secundarias) se pueden mantener sincronizadas con una sola base de datos primaria (o maestra).
Para configurar un clúster, necesitamos al menos dos servidores. Para el propósito de esta guía, usaremos dos servidores Linux:
- Nodo1: 192.168.10.10
- Nodo2: 192.168.10.11
freestar .config.enabled_slots.push
En este artículo, demostraremos los conceptos básicos de cómo implementar, configurar y mantener alta disponibilidad/clústeres en Ubuntu 16.04/18.04 y CentOS 7. Demostraremos cómo agregar el servicio HTTP Nginx al clúster.
Configuración de los ajustes de DNS local en cada servidor
Para que los dos servidores se comuniquen entre sí, necesitamos configurar los ajustes de DNS locales apropiados en el archivo /etc/hosts. en ambos servidores.
Abra y edite el archivo usando su editor de línea de comandos favorito.
$ sudo vim/etc/hosts
Agregue las siguientes entradas con las direcciones IP reales de sus servidores.
192.168.10.10 node1.example.com 192.168.10.11 node2.example.com
Guarde los cambios y cierra el archivo.
Instalando Servidor web Nginx
Ahora instale el servidor web Nginx usando los siguientes comandos.
$ sudo apt install nginx [En Ubuntu] $ sudo yum install epel-release && sudo yum install nginx [En CentOS 7]
Una vez que se complete la instalación, inicie el servicio Nginx por ahora y habilítelo para que se inicie automáticamente en el momento del arranque, luego verifique si está funcionando con el comando systemctl. En Ubuntu, el servicio debe iniciarse automáticamente inmediatamente después de que se complete la preconfiguración del paquete, simplemente puede habilitarlo.
$ sudo systemctl enable nginx $ sudo systemctl start nginx $ sudo systemctl status nginx
Después de iniciar Nginx servicio, necesitamos crear páginas web personalizadas para identificar y probar operaciones en ambos servidores. Modificaremos el contenido de la página de índice Nginx predeterminada como se muestra.
$ echo “Esta es la página predeterminada para node1.example.com” | sudo tee/usr/share/nginx/html/index.html # VPS1 $ echo “Esta es la página predeterminada para node2.example.com” | sudo tee/usr/share/nginx/html/index.html # VPS2
Instalación y configuración de Corosync y Pacemaker
A continuación, tenemos que instalar Pacemaker. Corosync. y Pcs. en cada nodo de la siguiente manera.
$ sudo apt install corosync pacemaker pcs #Ubuntu $ sudo yum install corosync pacemaker pcs #CentOS
Una vez finalizada la instalación completo, asegúrese de que el demonio pcs. se esté ejecutando en ambos servidores.
$ sudo systemctl enable pcsd $ sudo systemctl start pcsd $ sudo systemctl status pcsd Creación del clúster
Durante la instalación, un Se crea el usuario del sistema llamado “hacluster”. Por lo tanto, debemos configurar la autenticación necesaria para pcs. Comencemos creando una nueva contraseña para el usuario “hacluster”. necesitamos usar la misma contraseña en todos los servidores:
$ sudo passwd hacluster
Crear contraseña de usuario de clúster
A continuación, en uno de los servidores (Nodo1), ejecute el siguiente comando para configurar la autenticación necesaria para pcs.
$ sudo pcs cluster auth node1.example.com node2.example.com-u hacluster-p password_here–force
Configurar autenticación para PCS
Ahora cree un clúster y complételo con algunos nodos (el nombre del clúster no puede exceder los 15 caracteres, en este ejemplo, hemos utilizado examplecluster. en el servidor Node1.
$ sudo pcs cluster setup–name examplecluster node1.example.com node2.example.com
Crear clúster en el nodo 1
Ahora habilitado e el clúster al arrancar e iniciar el servicio.
$ sudo pcs cluster enable–all $ sudo pcs cluster start–all
Habilitar e iniciar el clúster
Ahora verifique si el servicio de clúster está funcionando con el siguiente comando.
$ sudo pcs status O $ sudo crm_mon-1
Verificar el estado del clúster
Del resultado del comando anterior, puede ver que hay una advertencia acerca de que no hay dispositivos STONITH. pero STONITH. todavía está habilitado en el clúster. Además, no se han configurado recursos/servicios de clúster.
Configuración de las opciones del clúster
La primera opción es deshabilitar STONITH. (o Disparar al otro nodo en la cabeza. , la implementación de cercado en Pacemaker.
Este componente ayuda a proteger sus datos para que no se dañen con el acceso simultáneo. A los efectos de esta guía, lo desactivaremos ya que no hemos configurado ningún dispositivo.
Para apagar STONITH. ejecute el siguiente comando:
$ sudo pcs property set stonith-enabled = false
A continuación, ignore también la política de Quórum. ejecutando el siguiente comando:
$ sudo pcs property set no-quorum-policy = ignore
Después configurando las opciones anteriores, ejecute el siguiente comando para ver la lista de propiedades y asegúrese de que las opciones anteriores, stonith. y la política de quórum. estén deshabilitadas.
$ sudo pcs lista de propiedades
Ver propiedades de clúster Agregar un recurso/servicio de clúster
En esta sección, veremos cómo agregar un recurso de clúster. Configuraremos una IP flotante que es la dirección IP que se puede mover instantáneamente de un servidor a otro dentro de la misma red o centro de datos. En resumen, una IP flotante es un término técnico común, que se utiliza para las IP que no están vinculadas estrictamente a una única interfaz.
En este caso, se utilizará para admitir la conmutación por error en un clúster de alta disponibilidad. Tenga en cuenta que las IP flotantes no son solo para situaciones de conmutación por error, tienen algunos otros casos de uso. Necesitamos configurar el clúster de tal manera que solo el miembro activo del clúster “posea” o responda a la IP flotante en un momento dado.
Agregaremos dos recursos del clúster: la dirección IP flotante recurso llamado “ floating_ip. y un recurso para el servidor web Nginx llamado “ http_server. .
Primero comience agregando el floating_ip de la siguiente manera. En este ejemplo, nuestra dirección IP flotante es 192.168.10.20.
$ sudo pcs resource create floating_ip ocf: heartbeat: IPaddr2 ip = 192.168.10.20 cidr_netmask = 24 op monitor interval = 60s
donde:
- floating_ip. es el nombre del servicio.
- “ocf: heartbeat: IPaddr2”. : le dice a Pacemaker qué secuencia de comandos usar, IPaddr2 en este caso, en qué espacio de nombres se encuentra (marcapasos) y qué estándar cumple con ocf.
- “ intervalo de monitorización op = 60 s. : indica a Pacemaker que verifique el estado de este servicio cada minuto llamando a la acción del monitor del agente.
Luego, agregue el segundo recurso, llamado http_server. Aquí, el agente de recursos del servicio es ocf: heartbeat: nginx.
$ sudo pcs resource create http_server ocf: heartbeat: nginx configfile = “/etc/nginx/nginx.conf” op monitor timeout = “20s” interval = “60s”
Una vez que haya agregado los servicios de clúster, emita el siguiente comando para verificar el estado de los recursos.
$ sudo pcs status resources
Verificar los recursos del clúster
Observando el resultado del comando, los dos recursos agregados: “ floating_ip ” y “ http_server ” han sido enumerados. El servicio floating_ip está desactivado porque el nodo principal está en funcionamiento.
Si tiene el firewall habilitado en su sistema, debe permitir todo el tráfico a Nginx. y todos los servicios de alta disponibilidad a través de el cortafuegos para una comunicación adecuada entre los nodos:
————–CentOS 7————–$ sudo firewall-cmd–permanent–add-service = http $ sudo firewall-cmd–permanent–add-service = alta disponibilidad $ sudo firewall-cmd–reload————–Ubuntu————–$ sudo ufw permitir http $ sudo ufw permitir alta disponibilidad $ sudo ufw reload Probando alta disponibilidad/agrupamiento
El paso final e importante es probar que nuestra configuración de alta disponibilidad funciona. Abra un navegador web y navegue hasta la dirección 192.168.10.20. Debería ver la página Nginx predeterminada de node2.example.com. como se muestra en la captura de pantalla.
Probar clúster antes de fallar
Para simular una falla, ejecute el siguiente comando para detener el clúster en el node2.example.com.
$ sudo pcs cluster stop http_server
A continuación, vuelva a cargar la página en 192.168.10.20. ahora debería acceder a la web predeterminada de Nginx. página del nodo 1.example.com.
Test Cluster After Failure
Alternativamente, puede simular un error indicando al servicio que se detenga directamente, sin detener el clúster en ningún nodo, utilizando el siguiente comando en uno de los nodos:
$ sudo crm_resource–resource http_server–force-stop
Luego, debe ejecutar crm_mon. en modo interactivo (el valor predeterminado), dentro del intervalo de supervisión de 2 minutos, debería poder ver el aviso del clúster de que http_server. falla ed y moverlo a otro nodo.
Para que sus servicios de clúster se ejecuten de manera eficiente, es posible que deba establecer algunas restricciones. Puede ver la página de manual de pcs. (man pcs) para obtener una lista de todos los comandos de uso.
Para obtener más información sobre Corosync y Pacemaker, consulte: https://clusterlabs. org/
Resumen
En esta guía, hemos mostrado los conceptos básicos de cómo implementar, configurar y mantener alta disponibilidad/agrupación/replicación en Ubuntu 16.04/18.04 y CentOS 7. Demostramos cómo agregar el servicio HTTP Nginx a un grupo. Si tiene alguna idea o pregunta que compartir, utilice el formulario de comentarios a continuación.