Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

linux:artigos:drbd-master-master-centos [13/01/2015 10:44] (atual)
Linha 1: Linha 1:
 +~~NOTOC~~
 +====== DRBD: Configurando DRBD Multimaster no CentOS ======
 +
 +**Para este artigo, vamos levar em conta que você tem uma instalação limpa do CentOS 5.5.**
 +
 +===== Ambiente =====
 +
 +**Máquina Master**
 +
 +  * SO: CentOS 5.5
 +  * Eth0: 172.16.0.1 (HA)
 +  * Eth1: 192.168.0.1 (Lan)
 +  * SDA: Insalação do SO
 +  * SDB: Unica partição a ser usada pelo DRBD
 +
 +**Máquina Slave**
 +
 +  * SO: CentOS 5.5
 +  * Eth0: 172.16.0.2 (HA)
 +  * Eth1: 192.168.0.2 (Lan)
 +  * SDA: Insalação do SO
 +  * SDB: Unica partição a ser usada pelo DRBD
 +
 +===== Desabilitando o SELINUX =====
 +
 +Nessa etapa, vamos desabilitar o selinux para evitar que ele venha nos atrapalhar.
 +
 +[root@centos1 ~]# vi /​etc/​selinux/​config
 +
 +SELINUX=disabled
 +[root@centos2 ~]# vi /​etc/​selinux/​config
 +
 +SELINUX=disabled
 +Configuração da Rede
 +
 +É recomendado que para utilização do DRBD você possua uma estrutura de rede física separada da rede de produção da empresa, ou seja, é importante possuir uma rede isolada para a replicação.
 +
 +Também não é recomendado que você utilize o sistema de replicação através de roteadores.
 +
 +Para configurar a rede, veja exemplo mostrado a seguir:
 +
 +[root@centos1 ~]# vi /​etc/​resolv.conf
 +
 +nameserver 192.168.0.254
 +
 +[root@centos1 ~]# vi /​etc/​sysconfig/​network
 +
 +NETWORKING=yes
 +NETWORKING_IPV6=no
 +HOSTNAME=centos1
 +GATEWAY=192.168.0.254
 +
 +[root@centos1 ~]# vi /​etc/​sysconfig/​network-scripts/​ifcfg-eth0
 +
 +DEVICE=eth0
 +BOOTPROTO=static
 +ONBOOT=yes
 +ADDRESS=172.16.0.1
 +NETMASK=255.255.255.252
 +NETWORK=172.16.0.0
 +BROADCAST=172.16.0.3
 +
 +[root@centos1 ~]# vi /​etc/​sysconfig/​network-scripts/​ifcfg-eth1
 +
 +DEVICE=eth1
 +BOOTPROTO=static
 +ONBOOT=yes
 +ADDRESS=192.168.0.1
 +NETMASK=255.255.255.0
 +NETWORK=192.168.0.0
 +BROADCAST=192.168.0.255
 +
 +[root@centos2 ~]# vi /​etc/​resolv.conf
 +
 +nameserver 192.168.0.254
 +
 +[root@centos2 ~]# vi /​etc/​sysconfig/​network
 +
 +NETWORKING=yes
 +NETWORKING_IPV6=no
 +HOSTNAME=centos2
 +GATEWAY=192.168.0.254
 +
 +[root@centos2 ~]# vi /​etc/​sysconfig/​network-scripts/​ifcfg-eth0
 +
 +DEVICE=eth0
 +BOOTPROTO=static
 +ONBOOT=yes
 +ADDRESS=172.16.0.2
 +NETMASK=255.255.255.252
 +NETWORK=172.16.0.0
 +BROADCAST=172.16.0.3
 +
 +[root@centos2 ~]# vi /​etc/​sysconfig/​network-scripts/​ifcfg-eth1
 +
 +DEVICE=eth1
 +BOOTPROTO=static
 +ONBOOT=yes
 +ADDRESS=192.168.0.2
 +NETMASK=255.255.255.0
 +NETWORK=192.168.0.0
 +BROADCAST=192.168.0.255
 +
 +Não podemos esquecer de configurar o /etc/hosts para que as máquinas possam se achar por nome.
 +
 +[root@centos1 ~]# vi /etc/hosts
 +
 +172.30.0.1 ​     centos1
 +172.30.0.2 ​     centos2
 +192.168.0.1 ​    ​centos1.dominio.local ​     centos1
 +192.168.0.2 ​    ​centos2.dominio.local ​     centos2
 +
 +[root@centos2 ~]# vi /etc/hosts
 +
 +172.30.0.2 ​     centos2
 +172.30.0.1 ​     centos1
 +192.168.0.2 ​    ​centos2.dominio.local ​     centos2
 +192.168.0.1 ​    ​centos1.dominio.local ​     centos1
 +
 +Preparando as partições
 +
 +Precisamos também preparar os HDs e criar as partições para receber o DRBD de forma correta. Vamos usar o fdisk para isso.
 +
 +[root@centos1 ~]# 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 or +size or +sizeM or +sizeK (1-130, default 130): 
 +Using default value 130
 +
 +Command (m for help): w
 +The partition table has been altered!
 +
 +Calling ioctl() to re-read partition table.
 +Syncing disks.
 +
 +[root@centos2 ~]# 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 or +size or +sizeM or +sizeK (1-130, default 130): 
 +Using default value 130
 +
 +Command (m for help): w
 +The partition table has been altered!
 +
 +Calling ioctl() to re-read partition table.
 +Syncing disks.
 +
 +===== Limpando todo e qualquer dado que exista no disco =====
 +
 +Nesta etapa, vamos zerar todos os dados que possam existir dentro dos HDs que estamos usando.
 +
 +[root@centos1 ~]# dd if=/​dev/​zero of=/​dev/​sdb1 bs=1M count=128
 +[root@centos2 ~]# dd if=/​dev/​zero of=/​dev/​sdb1 bs=1M count=128
 +
 +Instalando e configurando o DRBD
 +
 +Chegou a hora de montar a estrutura do DRBD. Vamos começar instalando os pacotes necessários.
 +
 +[root@centos1 ~]# yum -y install drbd83 kmod-drbd83
 +[root@centos2 ~]# yum -y install drbd83 kmod-drbd83
 +
 +Em seguida, vamos configurar o arquivo de configuração do DRBD. Veja um modelo a seguir:
 +
 +[root@centos1 ~]# vi /​etc/​drbd.conf
 +
 +global {
 +  usage-count yes;
 +}
 +
 +common {
 +  syncer {
 +    rate 100M;
 +    al-extents 257;
 +  }
 +}
 +
 +resource resource-name {
 +  protocol C;
 +  ​
 +  handlers {
 +  }
 +
 +  startup {
 +    wfc-timeout ​ 15;
 +    degr-wfc-timeout 20;    # 2 minutes.
 +    become-primary-on both;
 +  }
 +
 +  disk {
 +    on-io-error ​  ​detach;​
 +  }
 +
 +  net {
 +    sndbuf-size 512k;
 +    timeout ​      ​60; ​   #  6 seconds ​ (unit = 0.1 seconds)
 +    connect-int ​  ​10; ​   # 10 seconds ​ (unit = 1 second)
 +    ping-int ​     10;    # 10 seconds ​ (unit = 1 second)
 +    ping-timeout ​  ​5; ​   # 500 ms (unit = 0.1 seconds)
 +    max-buffers 2048;
 +
 +    allow-two-primaries;​
 +
 +    after-sb-0pri discard-zero-changes;​
 +    after-sb-0pri discard-least-changes;​
 +    after-sb-1pri discard-secondary;​
 +    after-sb-2pri disconnect;
 +  }
 +
 +  syncer {
 +    rate 100M;
 +    al-extents 257;
 +  }
 +
 +  on centos1 {
 +    device ​    /​dev/​drbd0;​
 +    disk       /​dev/​sdb1;​
 +    address ​   172.30.0.1:​7788;​
 +    meta-disk ​ internal;
 +  }
 +
 +  on centos2 {
 +    device ​   /dev/drbd0;
 +    disk      /dev/sdb1;
 +    address ​  ​172.30.0.2:​7788;​
 +    meta-disk internal;
 +  }
 +}
 +
 +Em seguida, vamos copiar o arquivo recem criado para o centos2 pois o arquivo é idêntico para ambas máquinas.
 +
 +[root@centos1 ~]# scp /​etc/​drbd.conf centos2:/​etc/​
 +
 +root@centos2'​s password: *********
 +drbd.conf ​                                       100% 1699     ​1.7KB/​s ​  00:00
 +
 +Em seguida, vamos criar o metadata do resource para DRBD.
 +
 +[root@centos1 ~]# drbdadm create-md resource-name
 +[root@centos2 ~]# drbdadm create-md resource-name
 +
 +O pŕoximo passo, é anexar o dispositivo ao metadata criado. Poderá ocorrer erro na hora de anexar. Caso aconteça, desanexe e anexe novamente.
 +
 +[root@centos1 ~]# drbdadm detach resource-name
 +[root@centos2 ~]# drbdadm detach resource-name ​
 +[root@centos1 ~]# drbdadm attach resource-name
 +[root@centos2 ~]# drbdadm attach resource-name
 +
 +O próximo comando, vai iniciar a sincronização do dispositivo.
 +
 +[root@centos1 ~]# drbdadm syncer resource-name
 +[root@centos2 ~]# drbdadm syncer resource-name
 +
 +E por fim, vamos conectar os nodes. Caso o sistema apresente erro de conexão, desconecte e conecte novamente.
 +
 +[root@centos1 ~]# drbdadm disonnect resource-name
 +[root@centos2 ~]# drbdadm disconnect resource-name
 +[root@centos1 ~]# drbdadm connect resource-name
 +[root@centos2 ~]# drbdadm connect resource-name
 +
 +Observe o arquivo /proc/drbd para ver o progresso de sincronização dos dados do DRBD
 +
 +[root@centos1 ~]# cat /proc/drbd
 +
 + ​version:​ 8.3.0 (api:​88/​proto:​86-89)
 + ​GIT-hash:​ 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by buildsystem@linbit,​ 2008-12-18 16:02:26
 + 1: cs:​Connected ro:​Secondary/​Secondary ds:​UpToDate/​UpToDate C r---
 + ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:200768
 +[root@centos2 ~]# cat /proc/drbd
 +
 + ​version:​ 8.3.0 (api:​88/​proto:​86-89)
 + ​GIT-hash:​ 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by buildsystem@linbit,​ 2008-12-18 16:02:26
 + 1: cs:​Connected ro:​Secondary/​Secondary ds:​UpToDate/​UpToDate C r---
 + ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:200768
 +Ambos os discos em ambos servidores agora estão alocados. Hora de iniciar o serviço DRBD.
 +
 +[root@centos1 ~]# service drbd restart
 +[root@centos2 ~]# service drbd restart
 +
 +Note no /proc/drbd que ambos os servidores estão em modo Secondary. Para transformá-los em multimaster,​ execute o comando a seguir:
 +
 +[root@centos1 ~]# drbdsetup /dev/drbd0 primary -o
 +[root@centos2 ~]# drbdsetup /dev/drbd0 primary -o
 +
 +Feito isso, observe no /proc/drbd que agora ambos estão em modo master.
 +
 +[root@centos1 ~]# cat /proc/drbd
 +
 + ​version:​ 8.3.0 (api:​88/​proto:​86-89)
 + ​GIT-hash:​ 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by buildsystem@linbit,​ 2008-12-18 16:02:26
 + 1: cs:​Connected ro:​Primary/​Primary ds:​UpToDate/​UpToDate C r---
 + ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:200768
 +[root@centos2 ~]# cat /proc/drbd
 +
 + ​version:​ 8.3.0 (api:​88/​proto:​86-89)
 + ​GIT-hash:​ 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by buildsystem@linbit,​ 2008-12-18 16:02:26
 + 1: cs:​Connected ro:​Primary/​Primary ds:​UpToDate/​UpToDate C r---
 + ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:200768
 +Não podemos esquecer de habilitar o DRBD para ser iniciado no boot da máquina.
 +
 +[root@centos1 ~]# chkconfig --level 35 drbd on
 +[root@centos2 ~]# chkconfig --level 35 drbd on
 +
 +Neste ponto, finalizamos a configuração do DRBD. Aguarde a sincronização dos HDs finalizar e continue a configuração,​ agora realizando a etapa do GFS.
 +
 +Instalando e configurando o cluster de filesystem com GFS
 +
 +Primeiramente vamos instalar o grupo de pacotes para Cluster existente no CentOS.
 +
 +[root@centos1 ~]# yum -y groupinstall "​Cluster Storage"​ "​Clustering"​
 +[root@centos2 ~]# yum -y groupinstall "​Cluster Storage"​ "​Clustering"​
 +
 +Precisamos criar o arquivo /​etc/​cluster/​cluster.conf que terá a configuração de Cluster do GFS responsável pelo gerenciamento dos locks dos arquivos.
 +
 +[root@centos1 ~]# vi /​etc/​cluster/​cluster.conf
 +
 +<?xml version="​1.0"?>​
 +<cluster name="​resource-name"​ config_version="​1">​
 +
 +  <cman two_node="​1"​ expected_votes="​1"/>​
 +
 +  <​clusternodes>​
 +    <​clusternode name="​centos1"​ votes="​1"​ nodeid="​1">​
 +      <​fence>​
 +        <method name="​single">​
 +          <device name="​manual"​ ipaddr="​172.30.0.1"/>​
 +        </​method>​
 +      </​fence>​
 +    </​clusternode>​
 +
 +    <​clusternode name="​centos2"​ votes="​1"​ nodeid="​2">​
 +      <​fence>​
 +        <method name="​single">​
 +          <device name="​manual"​ ipaddr="​172.30.0.2"/>​
 +        </​method>​
 +      </​fence>​
 +    </​clusternode>​
 +  </​clusternodes>​
 +
 +  <​fence_daemon clean_start="​1"​ post_fail_delay="​0"​ post_join_delay="​3"/>​
 +
 +  <​fencedevices>​
 +    <​fencedevice name="​manual"​ agent="​fence_manual"/>​
 +  </​fencedevices>​
 +
 +</​cluster>​
 +
 +Como arquivo pronto, vamos copiá-lo para o centos2 pois o arquivo é idêntico para ambas máquinas.
 +
 +[root@centos1 ~]# scp /​etc/​cluster/​cluster.conf centos2:/​etc/​cluster/​
 +
 +root@centos2'​s password: *********
 +cluster.conf ​                                       100% 1529     ​1.6KB/​s ​  00:00
 +
 +Em seguida, vamos iniciar os serviços cman.
 +
 +[root@centos1 ~]# /​etc/​init.d/​cman start
 +
 +Starting cluster: ​
 +Loading modules... done
 +Mounting configfs... done
 +Starting ccsd... done
 +Starting cman... done
 +Starting daemons... done
 +Starting fencing... done
 +                                              [  OK  ]
 +[root@centos2 ~]# /​etc/​init.d/​cman start
 +
 +Starting cluster: ​
 +Loading modules... done
 +Mounting configfs... done
 +Starting ccsd... done
 +Starting cman... done
 +Starting daemons... done
 +Starting fencing... done
 +                                              [  OK  ]
 +Em seguida, vamos iniciar outros serviços.
 +
 +[root@centos1 ~]# /​etc/​init.d/​clvmd start
 +[root@centos1 ~]# /​etc/​init.d/​gfs start
 +[root@centos1 ~]# /​etc/​init.d/​gfs2 start
 +[root@centos2 ~]# /​etc/​init.d/​clvmd start
 +[root@centos2 ~]# /​etc/​init.d/​gfs start
 +[root@centos2 ~]# /​etc/​init.d/​gfs2 start
 +
 +No próximo passo, vamos configurar esses serviços para serem iniciados no boot do sistema.
 +
 +[root@centos1 ~]# chkconfig --level 35 cman on
 +[root@centos1 ~]# chkconfig --level 35 clvmd on
 +[root@centos1 ~]# chkconfig --level 35 gfs on
 +[root@centos1 ~]# chkconfig --level 35 gfs2 on
 +[root@centos2 ~]# chkconfig --level 35 cman on
 +[root@centos2 ~]# chkconfig --level 35 clvmd on
 +[root@centos2 ~]# chkconfig --level 35 gfs on
 +[root@centos2 ~]# chkconfig --level 35 gfs2 on 
 +
 +Em seguida, vamos formatar a unidade do DRBD com o GFS. Execute essa etapa apenas em um servidor.
 +
 +[root@centos1 ~]# gfs_mkfs -p lock_dlm -t resource-name:​gfs -j 2 /dev/drbd0
 +
 +Agora, vamos criar um ponto de montagem e montar o device DRBD para ver se ja podemos utilizá-lo como área de armazenamento. Faça isso nas duas máquinas para ter certeza que esta OK em ambas.
 +
 +[root@centos1 ~]# mkdir /​srv/​cluster
 +[root@centos1 ~]# mount -t gfs /dev/drbd0 /​srv/​cluster
 +[root@centos2 ~]# mkdir /​srv/​cluster
 +[root@centos2 ~]# mount -t gfs /dev/drbd0 /​srv/​cluster
 +
 +Se você optar por realizar um teste de escrita e leitura para ter certeza que tudo esta sincronizado e funcionando,​ crie um arquivo qualquer dentro do /​srv/​cluster de uma das máquinas e depois verifique se o arquivo se encontra na outra máquina. É interessante que você realize esse teste na outra máquina também para ter certeza que esta tudo sendo replicado de maneira correta.
 +
 +Para finalizar, adicione a linha de montagem da unidade DRBD na inicialização da máquina.
 +
 +[root@centos1 ~]# vi /etc/fstab
 +
 +/​dev/​drbd0 ​    /​srv/​cluster ​        ​gfs ​   defaults ​    0 0 
 +
 +----
 +
 +Artigo baseado no manual oficial de instalação e configuração do DRBD em [[http://​www.drbd.org/​users-guide-emb/​users-guide.html]] e no artigo pessoal do grande amigo Gilmar Cabral (gilmarjcabral[em]gmail.com),​ fornecido gentilmente.
  
linux/artigos/drbd-master-master-centos.txt · Última modificação: 13/01/2015 10:44 (edição externa)