NFS (Network File System) es el servidor más utilizado para proporcionar archivos a través de la red. Con el servidor NFS podemos compartir carpetas a través de la red y los clientes o sistemas autorizados pueden acceder a esas carpetas compartidas y usarlas en sus aplicaciones. Cuando se trata del entorno de producción, debemos configurar el servidor nfs en alta disponibilidad para descartar el punto único de falla.
En este artículo, discutiremos cómo podemos configurar el clúster de alta disponibilidad del servidor nfs (activo-pasivo) con pacemaker en CentOS 7 o RHEL 7
Los siguientes son los detalles de mi laboratorio que he usado para este artículo,
- Servidor NFS 1 (nfs1.example.com) – 192.168.1.40 – CentOS 7 mínimo/RHEL 7
- Servidor NFS 2 (nfs2.example.com) – 192.168.1.50 – CentOS 7 mínimo / RHEL 7
- Servidor NFS VIP: 192.168.1.51
- Cortafuegos habilitado
- SELinux habilitado
Consulte los pasos a continuación para configurar el clúster activo-pasivo del servidor NFS en CentOS 7 / RHEL 7
Paso 1) Establezca el nombre de host en ambos servidores nfs y actualice el archivo /etc/hosts
Inicie sesión en ambos servidores nfs y configure el nombre de host como «nfs1.example.com» y «nfs2.example.com» respectivamente usando el comando hostnamectl, el ejemplo se muestra a continuación
~]# hostnamectl set-hostname "nfs1.example.com" ~]# exec bash
Actualice el archivo /etc/hosts en ambos servidores nfs,
192.168.1.40 nfs1.example.com 192.168.1.50 nfs2.example.com
Paso 2) Actualizar ambos servidores nfs e instalar paquetes pcs
Use el siguiente comando ‘yum update’ para aplicar todas las actualizaciones en ambos servidores nfs y luego reinicie una vez.
~]# yum update && reboot
Instale los paquetes pcs y fence-agent en ambos servidores nfs,
[[email protected] ~]# yum install -y pcs fence-agents-all [[email protected] ~]# yum install -y pcs fence-agents-all
Una vez que los paquetes de pcs y de los agentes de esgrima estén instalados, permita los puertos relacionados con pcs en el firewall del sistema operativo desde ambos servidores nfs,
~]# firewall-cmd --permanent --add-service=high-availability ~]# firewall-cmd --reload
Ahora inicie y habilite el servicio pcsd en ambos nodos nfs usando los comandos debajo,
~]# systemctl enable pcsd ~]# systemctl start pcsd
Paso 3) Autenticar los nodos nfs y formar un clúster
Establezca la contraseña para el usuario hacluster, el servicio pcsd utilizará este usuario para autenticar los nodos del clúster, así que primero configuremos la contraseña para el usuario hacluster en ambos nodos,
[[email protected] ~]# echo "enter_password" | passwd --stdin hacluster [[email protected] ~]# echo "enter_password" | passwd --stdin hacluster
Ahora autentique los nodos del clúster. En nuestro caso, nfs2.example.com se autenticará en nfs1.example.com, ejecute el siguiente comando de clúster pcs en «nfs1».
[[email protected] ~]# pcs cluster auth nfs1.example.com nfs2.example.com Username: hacluster Password: nfs1.example.com: Authorized nfs2.example.com: Authorized [[email protected] ~]#
Ahora es el momento de formar un grupo con el nombre «nfs_cluster” y agregue ambos nodos nfs. Ejecutar debajo de “configuración del grupo de PC” comando desde cualquier nodo nfs,
[[email protected] ~]# pcs cluster setup --start --name nfs_cluster nfs1.example.com nfs2.example.com
Habilite el servicio de clúster de PC en ambos nodos para que los nodos se unan al clúster automáticamente después de reiniciar. Ejecute el siguiente comando desde cualquiera de los nodos nfs,
[[email protected] ~]# pcs cluster enable --all nfs1.example.com: Cluster Enabled nfs2.example.com: Cluster Enabled [[email protected] ~]#
Paso 4) Defina el dispositivo de cercado para cada nodo del clúster
El cercado es la parte más importante de un clúster, si alguno de los nodos falla, el dispositivo de cercado eliminará ese nodo del clúster. En Pacemaker, la esgrima se define utilizando el recurso Stonith (Shoot The Other Node In The Head).
En este tutorial estamos usando un disco compartido de tamaño 1 GB (/dev/sdc) como dispositivo de vallado. Primero averigüemos la identificación del disco /dev/sdc
[[email protected] ~]# ls -l /dev/disk/by-id/
Anote la identificación del disco /dev/sdc como lo haremos en «piezas stonith” comando.
Ahora ejecute debajo del comando «pcs stonith» desde cualquiera de los nodos para crear un dispositivo de cercado (disk_fencing)
[[email protected] ~]# pcs stonith create disk_fencing fence_scsi pcmk_host_list="nfs1.example.com nfs2.example.com" pcmk_monitor_action="metadata" pcmk_reboot_action="off" devices="/dev/disk/by-id/wwn-0x6001405e49919dad5824dc2af5fb3ca0" meta provides="unfencing" [[email protected] ~]#
Verifique el estado de stonith usando el siguiente comando,
[[email protected] ~]# pcs stonith show disk_fencing (stonith:fence_scsi): Started nfs1.example.com [[email protected] ~]#
Correr «estado de las piezasComando para ver el estado del clúster
[[email protected] ~]# pcs status Cluster name: nfs_cluster Stack: corosync Current DC: nfs2.example.com (version 1.1.16-12.el7_4.7-94ff4df) - partition with quorum Last updated: Sun Mar 4 03:18:47 2018 Last change: Sun Mar 4 03:16:09 2018 by root via cibadmin on nfs1.example.com 2 nodes configured 1 resource configured Online: [ nfs1.example.com nfs2.example.com ] Full list of resources: disk_fencing (stonith:fence_scsi): Started nfs1.example.com Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled [[email protected] ~]#
Nota: Si sus nodos de clúster son máquinas virtuales y están alojados en VMware, puede usar «cerca_vmware_soap” agente de esgrima. Para configurar “fence_vmware_soap” como agente de protección, consulte los pasos lógicos a continuación:
1) Verifique si los nodos de su clúster pueden llegar al hipervisor VMware o Vcenter
# fence_vmware_soap -a <vCenter_IP_address> -l <user_name> -p <password> --ssl -z -v -o list |egrep "(nfs1.example.com|nfs2.example.com)" or # fence_vmware_soap -a <vCenter_IP_address> -l <user_name> -p <password> --ssl -z -o list |egrep "(nfs1.example.com|nfs2.example.com)"
si puede ver los nombres de las máquinas virtuales en la salida, está bien; de lo contrario, debe verificar por qué los nodos del clúster no pueden establecer una conexión con esxi o vcenter.
2) Defina el dispositivo de esgrima usando el siguiente comando,
# pcs stonith create vmware_fence fence_vmware_soap pcmk_host_map="node1:nfs1.example.com;node2:nfs2.example.com" ipaddr=<vCenter_IP_address> ssl=1 login=<user_name> passwd=<password>
3) verifique el estado de stonith usando el siguiente comando,
# pcs stonith show
Paso 5) Instale nfs y formatee el disco compartido nfs
Instale el paquete ‘nfs-utils’ en ambos servidores nfs
[[email protected] ~]# yum install nfs-utils -y [[email protected] ~]# yum install nfs-utils -y
Detener y deshabilitar local “bloqueo nfs” servicio en ambos nodos ya que este servicio será controlado por marcapasos
[[email protected] ~]# systemctl stop nfs-lock && systemctl disable nfs-lock [[email protected] ~]# systemctl stop nfs-lock && systemctl disable nfs-lock
Supongamos que tenemos un disco compartido «/dev/sdb» de 10 GB de tamaño entre dos nodos de clúster, cree una partición en él y formatéelo como sistema de archivos xfs
[[email protected] ~]# fdisk /dev/sdb
Ejecute el comando partprobe en ambos nodos y reinicie una vez.
~]# partprobe
Ahora formatee «/dev/sdb1» como sistema de archivos xfs
[[email protected] ~]# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=256 agcount=4, agsize=655296 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=2621184, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [[email protected] ~]#
Cree un punto de montaje para este sistema de archivos en ambos nodos,
[[email protected] ~]# mkdir /nfsshare [[email protected] ~]# mkdir /nfsshare
Paso 6) Configure todos los recursos NFS necesarios en los nodos del clúster
Los siguientes son los recursos NFS requeridos:
- recurso del sistema de archivos
- recurso del servidor nfs
- recurso de exportación
- Recurso de dirección IP flotante IPaddr2
Para el recurso del sistema de archivos, necesitamos un almacenamiento compartido entre los nodos del clúster, ya hemos creado una partición en el disco compartido (/dev/sdb1) en los pasos anteriores, por lo que usaremos esa partición. Utilice a continuación “pcs recurso crearComando para definir el recurso del sistema de archivos desde cualquiera de los nodos,
[[email protected] ~]# pcs resource create nfsshare Filesystem device=/dev/sdb1 directory=/nfsshare fstype=xfs --group nfsgrp [[email protected] ~]#
En el comando anterior, hemos definido el sistema de archivos NFS como «nfsshare«bajo el grupo»nfsgrp“. A partir de ahora, todos los recursos nfs se crearán bajo el grupo nfsgrp.
Crear recurso nfsserver con nombre ‘nfsd‘ usando el siguiente comando,
[[email protected] ~]# pcs resource create nfsd nfsserver nfs_shared_infodir=/nfsshare/nfsinfo --group nfsgrp [[email protected] ~]#
Crear exportarfs recurso con el nombre “nfsroot”
[[email protected] ~]# pcs resource create nfsroot exportfs clientspec="192.168.1.0/24" options=rw,sync,no_root_squash directory=/nfsshare fsid=0 --group nfsgrp [[email protected] ~]#
En el comando anterior, clientspec indica los clientes permitidos que pueden acceder a nfsshare
Crear NFS IPaddr2 recurso usando el siguiente comando,
[[email protected] ~]# pcs resource create nfsip IPaddr2 ip=192.168.1.51 cidr_netmask=24 --group nfsgrp [[email protected] ~]#
Ahora vea y verifique el clúster usando el estado de pcs
[[email protected] ~]# pcs status
Una vez que haya terminado con los recursos NFS, permita los puertos del servidor nfs en el firewall del sistema operativo desde ambos servidores nfs,
~]# firewall-cmd --permanent --add-service=nfs ~]# firewall-cmd --permanent --add-service=mountd ~]# firewall-cmd --permanent --add-service=rpc-bind ~]# firewall-cmd --reload
Paso 7) Intente montar el recurso compartido NFS en los clientes
Ahora intente montar el recurso compartido nfs usando el comando de montaje, el ejemplo se muestra a continuación
[[email protected] ~]# mkdir /mnt/nfsshare [[email protected] ~]# mount 192.168.1.51:/ /mnt/nfsshare/ [[email protected] ~]# df -Th /mnt/nfsshare Filesystem Type Size Used Avail Use% Mounted on 192.168.1.51:/ nfs4 10G 32M 10G 1% /mnt/nfsshare [[email protected] ~]# [[email protected] ~]# cd /mnt/nfsshare/ [[email protected] nfsshare]# ls nfsinfo [[email protected] nfsshare]#
Para las pruebas de clúster, detenga el servicio de clúster en cualquiera de los nodos y vea si se puede acceder a nfsshare o no. Supongamos que voy a detener el servicio de clúster en «nfs1.example.com»
[[email protected] ~]# pcs cluster stop Stopping Cluster (pacemaker)... Stopping Cluster (corosync)... [[email protected] ~]#
Ahora vaya a la máquina cliente y vea si todavía se puede acceder a nfsshare. En mi caso, todavía puedo acceder a él y crear archivos en él.
[[email protected] nfsshare]# touch test [[email protected] nfsshare]#
Ahora habilite el servicio de clúster en «nfs1.example.com» usando el siguiente comando,
[[email protected] ~]# pcs cluster start Starting Cluster... [[email protected] ~]#
Eso es todo de este artículo, confirma que hemos configurado con éxito la agrupación en clústeres activo-pasivo de NFS usando marcapasos. Comparta sus comentarios y comentarios en la sección de comentarios a continuación.
Leer también : Configure el clúster Squid de dos nodos con Pacemaker en CentOS 7/RHEL 7