GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar y configurar DRBD en CentOS

Este tutorial explica cómo instalar y configurar DRBD para su servidor. Antes de comenzar, déjame explicarte qué representa DRBD y para qué se utiliza. DRBD significa dispositivo de bloque replicado distribuido, una solución de almacenamiento replicado, sin nada compartido y basada en software para duplicar el contenido de dispositivos de bloque como discos duros, particiones, volúmenes lógicos, etc. El objetivo principal de DRBD es proporcionar una solución alternativa a encontrar escenarios de Alta Disponibilidad como FailOver o Disaster Recovery. Puede ver los detalles fundamentales en su sitio web aquí  .

1. Nota preliminar


Para este tutorial, estoy usando CentOS 6.4 en la versión de 32 bits. El resultado final del ejemplo mostrará cómo crear archivos o carpetas dentro de una partición en el Servidor A y mostrar correctamente todo el contenido en otro servidor (Servidor B) usando DRBD.

A continuación se muestra el boceto de la arquitectura del servidor:-

+----------------------------------------+                                                        +----------- ------------------+
| [ Servidor DRBD A ]                 | 192.168.43.101 | 192.168.43.102     | [ Servidor DRBD B ]         |
| OEL641                               +-----------------------+-----------------------+      OEL642 |
| carpetaA                                 | | carpetaB                  |
+----------------------------------------------------+                                                        +------ -----------------------+

Este tutorial es compatible con cualquier versión de CentOS/Redhat/Oracle Linux 6. Es necesario que el servidor en el que desea instalar DRBD tenga un dispositivo de bloqueo gratuito. Este ejemplo muestra cómo configurar y usar el dispositivo de bloque /dev/sdb1.

2. Fase de instalación


Antes de comenzar, debemos actualizar el sistema e instalar los paquetes necesarios para las dependencias de DRBD. A continuación se encuentran los comandos que deben ejecutarse y la lista de paquetes que se actualizan o instalan. Para estos casos, estamos usando el comando yum para obtener los paquetes más recientes del repositorio público de CentOS.

yum -y update 
yum -y install gcc make automake autoconf libxslt libxslt-devel flex rpm-build kernel-devel
Setting up Install Process
Package gcc-4.4.7-3.el6.i686 already installed and latest version
Package 1:make-3.81-20.el6.i686 already installed and latest version
Package automake-1.11.1-4.el6.noarch already installed and latest version
Package autoconf-2.63-5.1.el6.noarch already installed and latest version
Package libxslt-1.1.26-2.0.2.el6_3.1.i686 already installed and latest version
Package libxslt-devel-1.1.26-2.0.2.el6_3.1.i686 already installed and latest version
Package flex-2.5.35-8.el6.i686 already installed and latest version
Package rpm-build-4.8.0-32.el6.i686 already installed and latest version
Package kernel-devel-2.6.32-358.el6.i686 already installed and latest version

Tenemos que hacer el paso anterior en ambos servidores.

Una vez finalizada la instalación del paquete de dependencias en ambos servidores, comenzaremos a instalar los paquetes DRBD. Los paquetes se pueden descargar desde  este sitio web.

A continuación se muestran los pasos.

Primero, creo una carpeta en la ruta /root/ con el nombre BUILD, BUILDROOT, etc. Esta ruta es necesaria para almacenar el archivo rpm después de compilar los paquetes DRBD.

mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

Descargue los paquetes DRBD.

wget http://oss.linbit.com/drbd/drbd-utils-latest.tar.gz http://oss.linbit.com/drbd/8.4/drbd-8.4.7-1.tar.gz

Extraiga los archivos del paquete drbd-8.4.7-1.tar.gz y drbd-utils-latest.tar.gz.

tar -zxvf drbd-8.4.7-1.tar.gz
tar -zxvf drbd-utils-latest.tar.gz

Compile el paquete DRBD.

cd drbd-8.4.7-1 
drbd-8.4.7-1]# make km-rpm
...
...
You have now:
/root/rpmbuild/RPMS/i686/drbd-km-debuginfo-8.4.7-1.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-km-2.6.32_358.el6.i686-8.4.7-1.i686.rpm

Compilar y configurar el paquete.

cd ..
cd drbd-utils-8.9.6
./configure
make rpm
...
...
You have now:
/root/rpmbuild/RPMS/i686/drbd-utils-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-debuginfo-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-heartbeat-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-xen-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-km-debuginfo-8.4.7-1.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-pacemaker-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-bash-completion-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-km-2.6.32_358.el6.i686-8.4.7-1.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-udev-8.9.6-1.el6.i686.rpm

Vaya a /root/rpmbuild/RPMS/i686. Los paquetes de rpm de la compilación existirán allí e instalarán paquetes de rpm relacionados.

cd /root/rpmbuild/RPMS/i686
rpm -Uvh drbd-xen* drbd-udev* drbd-pacemaker* drbd-bash-completion* drbd-utils-*.rpm drbd-km-*.rpm drbd-8*
Preparing... ########################################### [100%]
1:drbd-utils ########################################### [ 13%]
2:drbd-xen ########################################### [ 25%]
3:drbd-udev ########################################### [ 38%]
4:drbd-pacemaker ########################################### [ 50%]
5:drbd-bash-completion ########################################### [ 63%]
6:drbd ########################################### [ 75%]
7:drbd-km-2.6.32_358.el6.########################################### [ 88%]
8:drbd-km-debuginfo ########################################### [100%]


Una vez hecho en el primer servidor, siga los mismos pasos en el servidor OEL642 .

3. Fase de verificación


Ahora estamos a mitad de camino de la finalización. Centrémonos en el OEL641 lado de configuración. Primero, verifique el nombre de host de su servidor, esto es importante porque la configuración de DRBD requerirá el mismo nombre que su nombre de host. A continuación se muestran los pasos:

uname -n
OEL641

Luego actualice el módulo DRBD

modprobe drbd
lsmod |grep drbd
drbd 341783 0
libcrc32c 841 1 drbd

4. Eso es todo, ahora crearemos una nueva partición de disco para que actúe como disco DRDB. Aquí tengo un nuevo disco /dev/sdb. Crearé una partición /dev/sdb1 y la usaré como disco DRBD.

fdisk -l
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130):
Using default value 130
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdb1 1 130 1044193+ 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
fdisk -l
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x89770d51
Device Boot Start End Blocks Id System
/dev/sdb1 1 130 1044193+ 83 Linux

Una vez hecho esto, repita los pasos en OEL642

5. Configuración DRBD


Ahora llegamos al paso final, que es la configuración de DRBD. Básicamente, necesitamos establecer qué disco de partición y servidor deben actuar bajo el módulo DRBD. Para hacer eso, crearemos un archivo de respuesta como se muestra a continuación y lo copiaremos a OEL642 para que ambos servidores tengan la misma configuración.

cd /etc/drbd.d/
vi s1.res
resource s1 {
on OEL641 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.43.101:7799;
meta-disk internal;
}
on OEL642 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.43.102:7799;
meta-disk internal;
}
}

Copie el archivo con scp al segundo servidor:

scp /etc/drbd.d/s1.res [email protected]:/etc/drbd.d/s1.res

Una vez hecho esto, necesitamos inicializar la partición en ambos servidores. A continuación se muestran los pasos:

drbdadm create-md s1
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
success

s1 es el nombre del recurso que definimos en el archivo s1.res anterior.

Inicie sesión en el servidor OEL642 y siga los mismos pasos de arriba:

drbdadm create-md s1
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
success


Ahora regrese al servidor OEL641 y podemos iniciar el servicio DRBD. A continuación se muestran los pasos:-

/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by [email protected], 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
[[email protected] ~]# /etc/init.d/drbd start
Starting DRBD resources: [
create res: s1
prepare disk: s1
adjust disk: s1
adjust net: s1
]
..........
***************************************************************
DRBD's startup script waits for the peer node(s) to appear.
- If this node was already a degraded cluster before the
reboot, the timeout is 0 seconds. [degr-wfc-timeout]
- If the peer was available before the reboot, the timeout
is 0 seconds. [wfc-timeout]
(These values are for resource 's1'; 0 sec -> wait forever)
To abort waiting enter 'yes' [ 26]:
.


Observe arriba que el servicio DRBD aún no se inició. Esto se debe al servidor OEL641 está buscando el servicio DRBD en OEL642 .

Por lo tanto, durante este tiempo, inicie sesión en OEL642 e inicie el servicio DRBD de la misma manera que lo hizo con om OEL641 . Notará que una vez que el servicio DRBD en OEL642 se inicia, servicio DRBD en OEL641 dejará de esperar y comenzará también.

Una vez hecho esto, el estado del servicio DRBD se mostrará a continuación en ambos servidores:

/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by [email protected], 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
1:s1 Connected Secondary/Secondary Inconsistent/Inconsistent C


Ahora siga los pasos a continuación en el servidor OEL641 solamente. Esto es para inicializar quién será el servidor primario inicial.

drbdadm -- --overwrite-data-of-peer primary s1
/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by [email protected], 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
... sync'ed: 0.8% (1037872/1044124)K
1:s1 SyncSource Primary/Secondary UpToDate/Inconsistent C

Luego verifique OEL642:

/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by [email protected], 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
... sync'ed: 12.2% (921244/1044124)K
1:s1 SyncTarget Secondary/Primary Inconsistent/UpToDate C


Notará en el informe de estado anterior que ahora el servidor OEL641 se ha verificado como principal y OEL642 como servidor secundario.

Esto significa que ahora cualquier archivo o carpeta que hayamos creado en la partición DRBD en el servidor OEL641 se sincronizará con la partición DRBD en OEL642 .

6. Fase de prueba DRBD

Ahora, hemos llegado a la parte final, que es probar el servicio DRBD para garantizar que cumpla con el objetivo.

Primero, montemos la partición DRBD.

Realice los pasos a continuación una vez en el servidor principal OEL641 ¡SOLO!

mkfs.ext3 /dev/drbd1
...
...
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done


Esto formatea la partición con el sistema de archivos ext3.

Ahora cree una carpeta y monte la partición DRBD en ella.

mkdir /folderA
mount /dev/drbd1 /folderA
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/drbd1 1004M 18M 936M 2% /folderA
cd /folderA/
ls -h
lost+found

Como se muestra arriba, la nueva carpeta llamada carpetaA se ha creado con éxito.

Ahora vamos a crear un archivo con un tamaño de 30Mb dentro de la carpeta:

dd if=/dev/zero of=/folderA/testfile bs=1M count=30
30+0 records in
30+0 records out
31457280 bytes (31 MB) copied, 0.178448 s, 176 MB/s
ls -lh
total 31M
drwx------. 2 root root 16K Aug 21 08:55 lost+found
-rw-r--r--. 1 root root 30M Aug 21 09:09 testfile


Estos han sido los requisitos previos, comencemos a probar el proceso.

Como resultado final, una vez que montamos la partición DRBD en el servidor OEL642 , el archivo de prueba debe existir dentro de la carpeta.

Ahora vamos a desmontar la partición DRBD en OEL641 y hacerlo como estado secundario. El estado secundario significa que no podrá montar la partición DRBD en el sistema operativo para su uso.

/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by [email protected], 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
1:s1 Connected Primary/Secondary UpToDate/UpToDate C /folderA ext3
umount /folderA
drbdadm secondary s1
/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by [email protected], 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
1:s1 Connected Secondary/Secondary UpToDate/UpToDate C


Ahora ambos servidores DRBD están en estado secundario. Vamos al servidor OEL642 y cámbielo del estado Secundario a Primario.

Primero cree una carpeta vacía y móntela en la partición DRBD en OEL642 :

mkdir /folderB
cd /folderB
ls -lh
total 0
/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by [email protected], 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
1:s1 Connected Secondary/Secondary UpToDate/UpToDate C
drbdadm primary s1
/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by [email protected], 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
1:s1 Connected Primary/Secondary UpToDate/UpToDate C
mount /dev/drbd1 /folderB
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_oel641-lv_root
96G 3.5G 88G 4% /
tmpfs 640M 80K 640M 1% /dev/shm
/dev/sda1 485M 32M 428M 7% /boot
/dev/drbd1 1004M 48M 906M 5% /folderB
ls -lh /folderB/
total 31M
drwx------. 2 root root 16K Aug 21 08:55 lost+found
-rw-r--r--. 1 root root 30M Aug 21 09:09 testfile


Una vez que haya montado con éxito la partición DRBD en su nueva carpeta, notará que el archivo que creó en el servidor OEL641 ¡antes existía automáticamente!


¡HECHO! ¡Has instalado y configurado correctamente DRBD en CentOS!


Cent OS
  1. Cómo instalar y configurar Nginx en CentOS 7

  2. Cómo instalar dig en CentOS 7 y 8

  3. Cómo instalar Node.js y NPM en CentOS 7

  4. Cómo instalar y configurar Redis en CentOS 7

  5. Cómo instalar Node.js y NPM en CentOS

Cómo instalar y configurar GitLab CE en CentOS 7

Cómo instalar y configurar Zabbix en CentOS 7

Cómo configurar e instalar Oracle Weblogic en CentOS 7

Cómo instalar y configurar GitLab CE en CentOS 8

Cómo instalar y configurar Nagios 4.0.7 en CentOS 7

Cómo instalar y configurar Asterisk 13 (PBX) en Centos 7