DestaqueGuias

Proxmox VE: Cluster KVM/OpenVZ/DRBD sem Storage externa

Configuração do DRBD

Para configurarmos os discos por DRBD, primeiro temos que correr o fdisk, para criar uma partição em LVM.

O segundo disco, se for um disco sata, deve ser o dispositivo:

/dev/sdb

Por isso, vamos correr o fdisk e criar uma partição LVM, nas duas máquinas, com os seguintes comandos.

fdisk /dev/sdb

The number of cylinders for this disk is set to 19457.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)                                                                                                                                

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-19457, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-19457, default 19457):
Using default value 19457                                                                                                                                       

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)                                                                                                            

Command (m for help): p                                                                                                                                         

Disk /dev/sdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x49e2fd2f                                                                                                                                     

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       19457   156288321   8e  Linux LVM                                                                                               

Command (m for help): w
The partition table has been altered!                                                                                                                           

Calling ioctl() to re-read partition table.                                                                                                                     

Syncing disks.

A bold coloco o imput que temos que dar no fdisk.

O que estamos a fazer com estes comandos é criar uma única partição primária, em que dizemos que é “Linux LVM”. Listamos a partição e escrevemos a configuração.

Como disse, esta acção tem que ser feita nos dois computadores.

Em seguida temos que instalar os utilitários do DRBD, para o configurarmos. Nos dois computadores corremos o comando:

apt-get install drbd8-utils

A primeira coisa a fazer, é configurar o ficheiro de configuração do DRBD, com a mesma configuração nas duas máquinas, com o comando:

nano /etc/drbd.conf

E vamos colocar o seguinte nos dois ficheiros:

global { usage-count no; }
common { syncer { rate 30M; } }
resource r0 {
        protocol C;
        startup {
                wfc-timeout  15;
                degr-wfc-timeout 60;
                become-primary-on both;
        }
        net {
                cram-hmac-alg sha1;
                shared-secret "my-secret";
                allow-two-primaries;
                after-sb-0pri discard-zero-changes;
                after-sb-1pri discard-secondary;
                after-sb-2pri disconnect;
        }
        on proxmox1 {
                device /dev/drbd0;
                disk /dev/sdb1;
                address 10.0.0.100:7788;
                meta-disk internal;
        }
        on proxmox2 {
                device /dev/drbd0;
                disk /dev/sdb1;
                address 10.0.0.101:7788;
                meta-disk internal;
        }
}

Como podem ver, estou a criar o dispositivo “/dev/drbd0”, usando os discos “/dev/sdb1”.

Coloco o DRBD a comunicar pela porta “7788”.

Nos dois servidores, vamos arrancar com o serviço do DRBD, com o comando:

/etc/init.d/drbd start

Em seguida temos que criar a metadata do dispositivo e por isso, corremos nas duas máquinas o seguinte comando:

drbdadm create-md r0

Depois temos que activar o dispositivo, com o seguinte comando, nas duas máquinas.

drbdadm up r0

Com isto, o DRBD está a funcionar, mas ainda não está a fazer sincronização. Se numa das duas máquinas corrermos o comando:

cat /proc/drbd

Teremos como resultado o seguinte:

version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by root@oahu, 2009-09-10 15:18:39
 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent 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:2096348

Podemos ver que o volume se encontra inconsistente.

Para sincronizarmos o volume, vamos correr o seguinte comando, na primeira máquina:

drbdadm -- --overwrite-data-of-peer primary r0

Atenção, este comando só se corre uma vez e só na primeira máquina.

Ele vai sincronizar e para vermos o progresso do sincronismo, corremos o seguinte comando numa das máquinas:

watch cat /proc/drbd

Devemos ver uma barra de progresso e temos que esperar que chegue aos 100%. O output é semelhante a isto:

version: 8.3.8 (api:88/proto:86-94)
srcversion: 299AFE04D7AFD98B3CA0AF9
 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----
    ns:22324224 nr:0 dw:0 dr:22324880 al:0 bm:1362 lo:0 pe:38 ua:0 ap:0 ep:1 wo:b oos:954407144
	[>....................] sync'ed:  2.3% (932036/953836)M delay_probe: 0
	finish: 7:53:24 speed: 33,580 (30,704) K/sec

O tempo que ele demora depende do tamanho dos discos. Com um disco de 1 TB em cada máquina, demora 8 horas.

Quando o sincronismo estiver acabado, temos que verificar se está tudo a funcionar nos dois nós. Para tal corremos o seguinte comando nas duas máquinas:

/etc/init.d/drbd stop

Seguido do comando nas duas máquinas:

/etc/init.d/drbd start

Para verificarmos que está tudo bem, nas duas máquinas, corremos o comando:

cat /proc/drbd

E devemos ter como output o seguinte:

version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by root@oahu, 2009-09-10 15:18:39
 0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r----
    ns:0 nr:0 dw:0 dr:268 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

Se estiver “UpToDate” nas duas máquinas, então correu tudo bem e podemos passar à configuração de LVM.

 

Configuração do LVM

Para configurar o LVM, temos que editar o ficheiro “/etc/lvm/lvm.conf” nas duas máquinas. Para tal, corremos o comando:

nano /etc/lvm/lvm.conf

Dentro deste ficheiro, temos que encontrar uma secção que diz:

# By default we accept every block device:

A seguir a esta linha, vamos colocar o seguinte:

filter = [ "r|/dev/sdb1|", "r|/dev/disk/|", "r|/dev/block/|", "a/.*/" ]

Na primeira máquina e só nesta, vamos criar um volume físico, com o comando:

pvcreate /dev/drbd0

Que deve ter como resultado o seguinte:

Physical volume "/dev/drbd0" successfully created

E verificamos se ficou criado, com o comando:

pvscan

Devemos ter como output o seguinte:

PV /dev/sda2    VG pve             lvm2 [148.55 GB / 4.00 GB free]
  PV /dev/drbd0                      lvm2 [931.48 GB]
  Total: 2 [1.05 TB] / in use: 1 [148.55 GB] / in no VG: 1 [931.48 GB]

Na primeira máquina e só nesta, vamos criar um grupo, com o comando:

vgcreate drbdvg /dev/drbd0

Que deve ter como resultado o seguinte:

Volume group "drbdvg" successfully created

E verificamos se ficou criado, com o comando:

pvscan

Devemos ter como output o seguinte:

PV /dev/sda2    VG pve      lvm2 [148.55 GB / 4.00 GB free]
  PV /dev/drbd0   VG drbdvg   lvm2 [931.48 GB / 931.48 GB free]
  Total: 2 [1.05 TB] / in use: 2 [1.05 TB] / in no VG: 0 [0   ]

 

Adicionar Storage no Proxmox VE

Para adicionarmos a storage que criamos anteriomente, no Proxmox, temos que aceder via consola Web ao nó Master. Neste caso. “https://192.168.1.100”

O certificado digital é gerado pelo servidor e por isso temos que o aceitar para poderemos efectuar o login.

No login, colocamos o utilizador root e a sua password.

No ecrã principal temos os dois nós do cluster e status de cada um dos nós.

Do lado esquerdo do menu, escolhemos a opção “Storage” e verificamos que só temos a storage local. Vai ser necessário, colocar o volume DRBD que criamos.

Para tal, escolhemos a opção “Storage List” e vamos carregar no botão:

Add LVM group

Temos um ecrã, que já se encontra parcialmente preenchido, pois ele detecta o grupo LVM.

O que temos que colocar é um nome no campo “Storage name” e escolher a opção “Shared”.

Na lista de storage, podemos ver a storage partilhada que acabamos de adicionar.

 

Condição Split Brain

No caso da ligação do DRBD entre os dois nós falhe, vamos ter uma condição de “split brain”, em que os dados estão inconsistentes.

Para verificar se há uma condição de “split brain” é verificar se existem entradas no syslog com a seguinte frase:

Split-Brain detected, dropping connection!

e se verificarem que o conteúdo do fcheiro “/proc/drbd” é diferente de:

version: 8.3.8 (api:88/proto:86-94)
srcversion: 299AFE04D7AFD98B3CA0AF9
 0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r----
    ns:0 nr:0 dw:0 dr:144 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

O que há a fazer nessa altura, é ligar novamente a ligação de rede, na consola de Proxmox, migrar as máquinas virtuais para um dos nós e no outro nó correr o comando:

drbdadm secondary r0

e

drbdadm -- --discard-my-data connect r0

No outro nó correr o comando:

cat /proc/drbd

Se estiver com a condição “StandAlone”, correr o seguinte comando:

drbdadm connect r0
Página anterior 1 2 3 4 5Página seguinte

Artigos Relacionados

Botão Voltar ao Topo