Marcapasos Cluster Storage + DRBD (Dual primario) + ctdb

Buen dia, Habrovsk. Hubo una tarea: implementar almacenamiento de alta disponibilidad tolerante a fallas utilizando pacamaker + drbd (en modo primario dual) + clvmd + ctdb, que se montará en el servidor. Haré una reserva de que me encuentro con todas estas herramientas por primera vez y me complacerán las críticas y adiciones / correcciones. No hay instrucciones en Internet específicamente para este enlace o la información está desactualizada. Esto está funcionando en este momento, pero hay un problema cuya solución, espero encontrar en el futuro cercano. Todas las acciones deben realizarse en ambos nodos, a menos que se indique lo contrario.

Empecemos Tenemos dos máquinas virtuales en CentOS 7.

1) Para confiabilidad, preséntelos a / etc / hosts

192.168.0.1 node1 192.168.0.2 node2 

2) No hay DRBD en los repositorios estándar, por lo que debe conectar uno de terceros.

 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 

3) Instalar drbd versión 8.4 (no pude obtener 9.0 en modo primario dual)

 yum install -y kmod-drbd84 drbd84-utils 

4) Activar y habilitar el módulo de kernel drbd en el inicio

 modprobe drbd echo drbd > /etc/modules-load.d/drbd.conf 

5) Cree el archivo de configuración para el recurso drbd /etc/drbd.d/r0.res

 resource r0 { protocol C; device /dev/drbd0; meta-disk internal; disk /dev/sdb; net { allow-two-primaries; } disk { fencing resource-and-stonith; } handlers { fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh"; } on node1 { address 192.168.0.1:7788; } on node2 { address 192.168.0.2:7788; } 

6) Desactive la unidad drbd (el marcapasos posterior será responsable de ello), cree metadatos para el disco drbd, aumente el recurso

 systemctl disable drbd drbdadm create-md r0 drbdadm up r0 

7) En el primer nodo, haga que el recurso sea primario

 drbdadm primary --force r0 

8) poner el marcapasos

 yum install -y pacemaker pcs resource-agents 

9) Establezca una contraseña para el usuario hacluster para autorización en nodos

 echo CHANGEME | passwd --stdin hacluster 

10) Ejecutar marcapasos en ambos nodos

 systemctl enable pcsd systemctl start pcsd 

11) Inicie sesión en el clúster. Desde esta etapa, hacemos todo en un nodo

 pcs cluster auth node1 node2 -u hacluster 

12) Crear un clúster llamado samba_cluster

 pcs cluster setup --force --name samba_cluster node1 node2 

13) activar nodos

 pcs cluster enable --all pcs cluster start --all 

14) Como tenemos máquinas virtuales como servidores, desactivamos el mecanismo STONITH

 pcs property set stonith-enabled=false pcs property set no-quorum-policy=ignore 

15) Crea un VIP

 pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.10 cidr_netmask=24 op monitor interval=60s 

16) Crear un recurso drbd

 pcs cluster cib drbd_cfg pcs -f drbd_cfg resource create DRBD ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s pcs -f drbd_cfg resource master DRBDClone DRBD master-max=2 master-node-max=1 clone-node-max=1 clone-max=2 notify=true interleave=true pcs cluster cib-push drbd_cfg 

17) Instale los paquetes necesarios para clvm y prepare clvm

 yum install -y lvm2-cluster gfs2-utils /sbin/lvmconf --enable-cluster 

18) Agregue el recurso dlm y clvd al marcapasos

 pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true pcs constraint colocation add clvmd-clone with dlm-clone 

19) En este punto, iniciar clvmd y dlm debería arrojar un error. Vamos a la interfaz web marcapasos 192.168.0.1 : 2224. Si el clúster no aparece, agréguelo a "Edd existente". A continuación, vaya a Recursos - dlm - argumentos opcionales y establezca el valor allow_stonith_disabled = true

20) Establecemos la cola de carga de recursos

 pcs constraint order start DRBDClone then dlm-clone pcs constraint order start dlm-clone then clvmd-clone 

21) Prohibir a LVM escribir caché y borrarlo. En ambos nodos

 sed -i 's/write_cache_state = 1/write_cache_state = 0/' /etc/lvm/lvm.conf rm /etc/lvm/cache/* 

22) Editamos /etc/lvm/lvm.conf para que lvm no vea / dev / sdb. En ambos nodos

 # This configuration option has an automatic default value. # filter = [ "a|.*/|" ] filter = [ "r|^/dev/sdb$|" ] 

23) Crear una partición CLVM. Hacemos solo en una nota

 $ vgcreate -Ay -cy cl_vg /dev/drbd0 Physical volume "/dev/drbd0" successfully created. Clustered volume group "cl_vg" successfully created $ lvcreate -l100%FREE -n r0 cl_vg Logical volume "r0" created. 

24) Marcamos la sección en gfs2

 mkfs.gfs2 -j2 -p lock_dlm -t drbd-gfs2:r0 /dev/cl_vg/r0 

25) A continuación, agregue el montaje de esta sección en marcapasos y dígale que arranque después de clvmd

 pcs resource create fs ocf:heartbeat:Filesystem device="/dev/cl_vg/r0" directory="/mnt/" fstype="gfs2" --clone pcs constraint order start clvmd-clone then fs-clone 

26) Ahora es el turno de ctdb que ejecutará samba

 yum install -y samba ctdb cifs-utils 

27) Edite la configuración /etc/ctdb/ctdbd.conf

 CTDB_RECOVERY_LOCK="/mnt/ctdb/.ctdb.lock" CTDB_NODES=/etc/ctdb/nodes CTDB_MANAGES_SAMBA=yes CTDB_LOGGING=file:/var/log/ctdb.log CTDB_DEBUGLEVEL=NOTICE 

28) Cree un archivo con una lista de nodos. ATENCION! Después de cada IP en la lista de nodos, debe estar presente un avance de línea. De lo contrario, el nodo fallará durante la inicialización.

 cat /etc/ctdb/nodes 192.168.0.1 192.168.0.2 

29) Agregar a la configuración /etc/samba/smb.conf

 [global] clustering = yes private dir = /mnt/ctdb lock directory = /mnt/ctdb idmap backend = tdb2 passdb backend = tdbsam [test] comment = Cluster Share path = /mnt browseable = yes writable = yes 

30) Finalmente, cree el recurso ctdb e indique que debe cargarse después

 pcs constraint order start fs-clone then samba 

Y ahora sobre el problema que aún no he decidido. Si reinicia el nodo, todo el grupo colapsa, ya que drbd necesita tiempo para activar / dev / drbd0. DLM no ve la partición, ya que aún no está activada y no se inicia, etc. La solución consiste en activar la partición manualmente y reiniciar los recursos del marcapasos

 vgchage -ay pcs resource refresh 

Source: https://habr.com/ru/post/es435906/


All Articles