Instalación de DRBD: Diferenzas entre revisións
(Non se amosan 10 revisións do historial feitas polo mesmo usuario.) | |||
Liña 1: | Liña 1: | ||
==Introducción== |
==Introducción== |
||
''Distributed Replicated Block Device (DRBD)'' é un sistema de replicación distribuído similar ao RAID 1 entre dispositivos de bloques (discos, particións, volumes lóxicos...) en rede. Normalmente únicamente un nodo está activo, mentras que o outro está en modo pasivo copiando os cambios realizados no nodo activo, aínda que tamén se pode configurar un modo ''dual primary'', no que é posible ler e escribir simultáneamente nos dous nodos, o que require sistemas de arquivos especiais como [[wikipedia:OCFS2|OCFS2]] ou [[wikipedia:GFS2|GFS2]]. |
''Distributed Replicated Block Device (DRBD)'' é un sistema de replicación distribuído similar ao RAID 1 entre dispositivos de bloques (discos, particións, volumes lóxicos...) en rede. Normalmente únicamente un nodo está activo, mentras que o outro está en modo pasivo copiando os cambios realizados no nodo activo, aínda que tamén se pode configurar un modo ''dual primary'', no que é posible ler e escribir simultáneamente nos dous nodos, o que require sistemas de arquivos especiais como [[wikipedia:OCFS2|OCFS2]] ou [[wikipedia:GFS2|GFS2]]. No noso caso, configuraremos un sistema ''single primary'' no que únicamente un nodo poderá acceder ao recurso nun instante determiñado. |
||
==Creación do sistema DRBD== |
==Creación do sistema DRBD== |
||
En primeiro lugar precisamos instalar as utilidades DRBD, xa que o resto ven de serie nos últimos núcleos Linux: |
|||
<source lang='bash'> |
|||
apt-get install drbd8-utils |
|||
</source> |
|||
DRBD soporta tres modos de replicación: |
|||
*Modo A - Asíncrono. Unha vez escritos os datos no nodo principal se considera a operación finalizada. |
|||
*Modo B - Síncrono na memoria. Se considera finalizada a operación unha vez escritos os datos no nodo principal e recibidos no nodo secundario |
|||
*Modo C - Síncrono. Se considera finalizada a operación cando os datos se escriban nos dous nodos. |
|||
Utilizaremos o protocolo ''C'' por ser o máis seguro, aínda que probablemente co modo ''B'' obteríamos un maior rendimento con pouca perda de seguridade. |
|||
A configuración debe ser idéntica nos dous nodos, e se realiza no directorio ''/etc/drbd.d''. O ficheiro '''global-common.conf''' conten configuracións globais do sistema DRBD para todos os recursos configurados (deixaremos os seus valores por defecto), e para cada recurso que queiramos crear editaremos un ficheiro '''''nomerecurso''.res''', no que indicaremos a configuración para o recurso. No noso caso, a configuración nos dous nodos ''gandalf.iesrodeira.com'' e ''earendil.iesrodeira.com'' estará nun ficheiro '''r0.res''': |
|||
<source lang='bash'> |
|||
resource r0 { |
|||
net { |
|||
#on-congestion pull-ahead; |
|||
#congestion-fill 1G; |
|||
#congestion-extents 3000; |
|||
#sndbuf-size 1024k; |
|||
sndbuf-size 0; |
|||
max-buffers 8000; |
|||
max-epoch-size 8000; |
|||
timeout 60; |
|||
} |
|||
disk { |
|||
#no-disk-barrier; |
|||
#no-disk-flushes; |
|||
no-md-flushes; |
|||
} |
|||
syncer { |
|||
c-plan-ahead 20; |
|||
c-fill-target 50k; |
|||
c-min-rate 10M; |
|||
al-extents 3833; |
|||
rate 35M; |
|||
use-rle; |
|||
} |
|||
startup { |
|||
become-primary-on gandalf.iesrodeira.com ; |
|||
#wfc-timeout 30; |
|||
#degr-wfc-timeout 15; |
|||
} |
|||
protocol C; |
|||
device minor 1; |
|||
meta-disk internal; |
|||
on gandalf.iesrodeira.com { |
|||
address 172.21.1.200:7801; |
|||
disk /dev/Gandalf/servers; |
|||
device /dev/drbd0; |
|||
} |
|||
on earendil.iesrodeira.com { |
|||
address 172.21.1.100:7801; |
|||
disk /dev/Earendil/servers; |
|||
device /dev/drbd0; |
|||
} |
|||
} |
|||
</source> |
|||
Os dispositivos de bloques que formarán o DRBD deben ser do mesmo tamaño. En este caso serán os volumes lóxicos LVM ''/dev/Gandalf/servers'' e ''/dev/Earendil/servers'', que formarán o dispositivo '''/dev/drbd0''' mediante o que accederemos ao recurso no nodo activo, que será ''gandalf.iesrodeira.com''. |
|||
Cando creamos o dispositivo DRBD é necesario almacenar información sobre o mesmo. Esta información pode almacenarse no propio dispositivo (''internal metadata'') ou nun dispositivo externo (''external metadata''). No noso caso empregamos ''internal metadata''. |
|||
A replicación DRBD consume gran ancho de banda, polo que é oportuno o uso dunha conexión de rede dedicada (e mellor, directa, sen pasar por ningún switch). No noso caso faremos uso dos dispositivos '''eth0''' de ambos equipos coas IP ''172.21.1.100 en earendil'' e ''172.21.1.200 en gandalf'', ailladas na VLAN 5. |
|||
Unha vez creado o ficheiro de configuración ''r0.res'' nos dous nodos, necesitamos inicializar o dispositivo. O nodo primario (activo) pode ter datos almacenados, que se propagarán ao nodo secundario (pasivo). |
|||
<source lang='bash'> |
|||
drbdadm create-md r0 |
|||
drbdadm up resource |
|||
</source> |
|||
Podemos observar o estado do dispositivo: |
|||
<source lang='bash'> |
|||
cat /proc/drbd |
|||
</source> |
|||
Eleximos o nodo que queremos que conserve os datos (primario) e o inicializamos: |
|||
<source lang='bash'> |
|||
drbdadm primary --force resource |
|||
</source> |
|||
Si observamos de novo o dispositivo (''cat /proc/drbd'') veremos como se produce a sincronización. Xa podemos montar e utilizar o novo dispositivo '''/dev/drbd0''' |
|||
{{boxinfo|En certos casos pode darse a posibilidade que os dous nodos pensen que deben ser primarios, nese caso prodúcese unha situación de ''split-brain'' que debe ser resolta. Pode configurarse unha [http://www.drbd.org/users-guide-emb/s-configure-split-brain-behavior.html resolución automática de estas situacións] ou en caso necesario [http://www.drbd.org/users-guide-emb/s-resolve-split-brain.html resolvela manualmente]}} |
|||
==Referencias== |
==Referencias== |
||
[http://www.drbd.org/docs/about/ Documentación da Páxina Oficial] |
[http://www.drbd.org/docs/about/ Documentación da Páxina Oficial] |
||
[http://www.drbd.org/users-guide/ Guía de Usuario] |
Revisión actual feita o 17 de xullo de 2014 ás 13:52
Introducción
Distributed Replicated Block Device (DRBD) é un sistema de replicación distribuído similar ao RAID 1 entre dispositivos de bloques (discos, particións, volumes lóxicos...) en rede. Normalmente únicamente un nodo está activo, mentras que o outro está en modo pasivo copiando os cambios realizados no nodo activo, aínda que tamén se pode configurar un modo dual primary, no que é posible ler e escribir simultáneamente nos dous nodos, o que require sistemas de arquivos especiais como OCFS2 ou GFS2. No noso caso, configuraremos un sistema single primary no que únicamente un nodo poderá acceder ao recurso nun instante determiñado.
Creación do sistema DRBD
En primeiro lugar precisamos instalar as utilidades DRBD, xa que o resto ven de serie nos últimos núcleos Linux:
apt-get install drbd8-utils
DRBD soporta tres modos de replicación:
- Modo A - Asíncrono. Unha vez escritos os datos no nodo principal se considera a operación finalizada.
- Modo B - Síncrono na memoria. Se considera finalizada a operación unha vez escritos os datos no nodo principal e recibidos no nodo secundario
- Modo C - Síncrono. Se considera finalizada a operación cando os datos se escriban nos dous nodos.
Utilizaremos o protocolo C por ser o máis seguro, aínda que probablemente co modo B obteríamos un maior rendimento con pouca perda de seguridade.
A configuración debe ser idéntica nos dous nodos, e se realiza no directorio /etc/drbd.d. O ficheiro global-common.conf conten configuracións globais do sistema DRBD para todos os recursos configurados (deixaremos os seus valores por defecto), e para cada recurso que queiramos crear editaremos un ficheiro nomerecurso.res, no que indicaremos a configuración para o recurso. No noso caso, a configuración nos dous nodos gandalf.iesrodeira.com e earendil.iesrodeira.com estará nun ficheiro r0.res:
resource r0 {
net {
#on-congestion pull-ahead;
#congestion-fill 1G;
#congestion-extents 3000;
#sndbuf-size 1024k;
sndbuf-size 0;
max-buffers 8000;
max-epoch-size 8000;
timeout 60;
}
disk {
#no-disk-barrier;
#no-disk-flushes;
no-md-flushes;
}
syncer {
c-plan-ahead 20;
c-fill-target 50k;
c-min-rate 10M;
al-extents 3833;
rate 35M;
use-rle;
}
startup {
become-primary-on gandalf.iesrodeira.com ;
#wfc-timeout 30;
#degr-wfc-timeout 15;
}
protocol C;
device minor 1;
meta-disk internal;
on gandalf.iesrodeira.com {
address 172.21.1.200:7801;
disk /dev/Gandalf/servers;
device /dev/drbd0;
}
on earendil.iesrodeira.com {
address 172.21.1.100:7801;
disk /dev/Earendil/servers;
device /dev/drbd0;
}
}
Os dispositivos de bloques que formarán o DRBD deben ser do mesmo tamaño. En este caso serán os volumes lóxicos LVM /dev/Gandalf/servers e /dev/Earendil/servers, que formarán o dispositivo /dev/drbd0 mediante o que accederemos ao recurso no nodo activo, que será gandalf.iesrodeira.com.
Cando creamos o dispositivo DRBD é necesario almacenar información sobre o mesmo. Esta información pode almacenarse no propio dispositivo (internal metadata) ou nun dispositivo externo (external metadata). No noso caso empregamos internal metadata.
A replicación DRBD consume gran ancho de banda, polo que é oportuno o uso dunha conexión de rede dedicada (e mellor, directa, sen pasar por ningún switch). No noso caso faremos uso dos dispositivos eth0 de ambos equipos coas IP 172.21.1.100 en earendil e 172.21.1.200 en gandalf, ailladas na VLAN 5.
Unha vez creado o ficheiro de configuración r0.res nos dous nodos, necesitamos inicializar o dispositivo. O nodo primario (activo) pode ter datos almacenados, que se propagarán ao nodo secundario (pasivo).
drbdadm create-md r0
drbdadm up resource
Podemos observar o estado do dispositivo:
cat /proc/drbd
Eleximos o nodo que queremos que conserve os datos (primario) e o inicializamos:
drbdadm primary --force resource
Si observamos de novo o dispositivo (cat /proc/drbd) veremos como se produce a sincronización. Xa podemos montar e utilizar o novo dispositivo /dev/drbd0