Cluster Storage Pacemaker + DRBD (Dual primario) + samba

En la continuación del artículo "Pacemaker Cluster Storage + DRBD (Dual primary) + ctdb", presento una versión completamente terminada y funcional de las bolas de archivo del clúster HA para 2-4 nodos para centos 6 y centos 7. Si desea implementar esto, usted es un pervertido o usted No dieron ninguna opción, y es necesario implementarlo de alguna manera.

Simplemente describiré el pastel de hojaldre que recogeremos:

En el dispositivo de bloque, cree la tabla gpt => una partición para todo el espacio bajo lvm => grupo de volúmenes lvm para todo el espacio disponible => volumen lvm para todo el espacio disponible => dispositivo drbd => dlm => márquelo como el volumen físico de lvm para todo el espacio disponible => en él un grupo de volúmenes de lvm => volumen de lvm en todo el espacio disponible => marque fs gfs2 => conéctese al punto de montaje.
Y todo esto será impulsado por marcapasos con una dirección IP virtual.


Si aún quieres continuar, sigue leyendo debajo del corte.

De la fuente necesitamos lo siguiente:
CPU 1 núcleo
1 GB mínimo de memoria de acceso aleatorio
15 GB de disco + el lugar donde almacenará los datos
Los discos pueden ser cualquier número, incluso uno.

Si tiene una unidad, es mejor particionarla de la siguiente manera:
Tabla de particiones gpt => Partición de 200 MB para efi (opcional) => Partición de 1 GB para / boot => todo lo demás bajo lvm.

En un volumen lvm, debe crear 2 grupos de volúmenes. El primer grupo de volúmenes bajo el sistema operativo es 10 GB + dos veces el tamaño de RAM, pero no más de 4 GB.

Quien haya dicho eso, pero el intercambio a veces ayuda mucho, por lo que en el grupo lvm creamos una partición lvm para el intercambio igual al doble del tamaño de RAM, pero no más de 4 GB y el espacio restante se asigna a la raíz del sistema operativo.

El segundo grupo de lvm para almacenamiento de datos. Cree una sección lvm para el espacio restante.

Según los términos, nos dieron 2 máquinas virtuales y eso es todo. Es mejor poner Ceph para que funcione correctamente en 6 nodos, al menos 4, y sería bueno tener algo de experiencia con él, de lo contrario funcionará como un ratón en la nube. Gluster para cientos de miles de archivos pequeños en términos de rendimiento no funcionará, se debilita en la inmensidad del Habré muchas veces. ipfs, lustre y similares tienen los mismos requisitos que ceph o incluso más.

¡Comencemos la batalla! Tenía dos máquinas virtuales en CentOS 7 con 2 discos.


1) Pacemaker versión 1.1 no funciona con ip correctamente, por lo que para mayor confiabilidad agregamos entradas 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 yum localinstall -y http://ftp.nluug.nl/os/Linux/distr/elrepo/elrepo/el7/x86_64/RPMS/$(curl -s http://ftp.nluug.nl/os/Linux/distr/elrepo/elrepo/el7/x86_64/RPMS/ | grep -oP ">elrepo-release.*rpm" | cut -c 2-) 

3) Instalar drbd versión 8.4

 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) Crear una partición de disco y configurar lvm

 echo -e "g\nn\n\n\n\nt\n8e\nw\n" | fdisk /dev/sdb vgcreate drbd_vg /dev/sdb1 lvcreate -l +100%FREE --name r0 drbd_vg 

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

 resource r0 { protocol C; device /dev/drbd1; meta-disk internal; disk /dev/mapper/drbd_vg-r0; 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"; } startup { become-primary-on both; } on node1 { address 192.168.0.1:7788; } on node2 { address 192.168.0.2:7788; } 

7) Eliminamos el servicio drbd de la carga automática (luego el marcapasos se encargará de ello), creamos metadatos para el disco drbd, aumentamos el recurso

 systemctl disable drbd drbdadm create-md r0 drbdadm up r0 

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

 drbdadm primary --force r0 

9) Pon el marcapasos

 yum install -y pacemaker corosync pcs resource-agents fence-agents-all 

10) Establezca una contraseña para el grupo de usuarios para la autorización en los nodos

 echo CHANGEME | passwd --stdin hacluster 

11) Ejecute pcsd en ambos nodos

 systemctl enable pcsd systemctl start pcsd 

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

 pcs cluster auth node1 node2 -u hacluster -p CHANGEME --force 

13) Crear un clúster llamado samba_cluster

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

14) activar nodos y agregar servicios al inicio e iniciarlos

 pcs cluster enable --all pcs cluster start --all systemctl start corosync pcsd pacemaker systemctl enable corosync pcsd pacemaker 

15) Dado que tenemos máquinas virtuales como servidores, desactivamos el mecanismo STONITH, ya que no tenemos ningún mecanismo para administrarlos. También tenemos solo 2 autos, por lo que también deshabilitamos el quórum, solo funciona con 3 o más máquinas.

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

16) Crear VIP

 pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.10 cidr_netmask=32 nic=eth0 clusterip_hash=sourceip-sourceport op monitor interval=1s 

17) Crear un recurso drbd

 pcs resource create DRBD1 ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s master master-max=2 master-node-max=1 clone-node-max=1 clone-max=2 notify=true op start interval=0s timeout=240 promote interval=0s timeout=130 monitor interval=150s role=Master monitor interval=155s role=Slave 

18) Instale los paquetes necesarios para clvm y prepare clvm

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

19) Agregue el recurso dlm y clvd al marcapasos

 pcs resource create dlm ocf:pacemaker:controld allow_stonith_disabled=true clone meta interleave=true pcs resource create clvmd ocf:heartbeat:clvm clone meta interleave=true 

20) Prohibimos que LVM escriba un caché y lo borre. En ambos nodos

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


21) Crear una partición CLVM. Hacemos solo en una nota
 vgcreate -A y -cy cl_vg /dev/drbd1 lvcreate -l 100%FREE -n r0 cl_vg 

22) Marcamos la sección en gfs2, aquí es importante que la tabla de bloqueo tenga el mismo nombre que nuestro clúster en pacificador. Hacemos solo en una nota

 mkfs.gfs2 -j 2 -p lock_dlm -t samba_cluster:r0 /dev/cl_vg/r0 

23) Luego, 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 interleave=true 

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

 yum install -y samba ctdb cifs-utils 

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

26) Cree un archivo con una lista de nodos / etc / ctdb / nodo
ATENCION! Después de cada dirección en la lista debe haber un avance de línea. De lo contrario, el nodo no se encenderá durante la inicialización.

 192.168.0.1 192.168.0.2 

27) Finalmente, cree el recurso ctdb

 pcs resource create samba systemd:ctdb clone meta interleave=true 

28) Configuramos la cola de carga y las dependencias de recursos para ejecutar

 pcs constraint colocation add dlm-clone with DRBD1-master pcs constraint colocation add clvmd-clone with dlm-clone pcs constraint colocation add fs-clone with clvmd-clone pcs constraint colocation add samba-clone with fs-clone pcs constraint colocation add virtual_ip with samba-clone pcs constraint order promote DRBD1-master then dlm-clone pcs constraint order start dlm-clone then clvmd-clone pcs constraint order start clvmd-clone then fs-clone pcs constraint order start fs-clone then samba-clone 

29) Establecemos la cola para detener los recursos, sin esto su máquina puede congelarse en el momento del apagado

 pcs constraint order stop fs-clone then stop clvmd-clone pcs constraint order stop clvmd-clone then stop dlm-clone pcs constraint order stop dlm-clone then stop DRBD1-master pcs constraint order stop samba-clone then stop fs-clone 

PS


La bola en sí puede estar en nfs y en samba, pero conectarse a ellos es una conmutación por error por IP, aunque el almacenamiento HA en sí. Si desea HA completo, entonces, en lugar de samba y nfs, necesita instalar iSCSI y conectarse a través de múltiples rutas. Además, puede obtener splitbrain si uno de los nodos muere, y cuando el maestro se eleva, no lo hará. Verifiqué que si el sistema operativo se apaga correctamente, luego de levantar el nodo cuando no hay un maestro, pasa al modo desactualizado y no se convierte en el maestro para evitar cerebros divididos. Las opciones de quórum (DRBD y / o marcapasos) y cualquier distorsión de las construcciones en cascada de DRBD después de que su configuración sea insostenible debido a su alta complejidad, otro administrador tardará mucho tiempo en descubrirlo. Aunque con lo que escribí no mejor, no lo hagas.

Referencias

Hay una instrucción similar con sintaxis para marcapasos 1.0.

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


All Articles