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
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