Cluster File System com OCFS2

RÁPIDA INTRODUÇÃO

OCFS2 é utilizado para criação de cluster de file system em abientes com disco compartilhado, pode ser utilizado em ambiente que não possuem cluster.

O file system OCFS2 podem ser montados em cluster e single-mode.

Para iniciar vamos utilizar os pacotes abaixos:

ocfs2-tools-1.8.2-0.19.1.x86_64.rpm
ocfs2console-1.8.2-0.19.1.x86_64.rpm
ocfs2-tools-o2cb-1.8.2-0.19.1.x86_64.rpm

# zypper install ocfs2-tools ocfs2console ocfs2-tools-o2cb

NOTA:

Para RHEL é necessário instalar o pacote de componentes do kernel de acordo com a versão atual do kernel instalada.

INICIANDO A CONFIGURAÇÃO

Basta editar o arquivo /etc/ocfs2/cluster.conf e para propagar facilmente utilizamos o utilitário ocfs2console.

# vi /etc/ocfs2/cluster.conf

node:
ip_port = 7777 # porta utilizada / não alterar
ip_address = 192.168.56.30 # ip (preferencial private network)
number = 0 # node number (0-254)
name = node1 # node name /hostname
cluster = ocfs2 # cluster name

node:
ip_port = 7777 # porta utilizada / não alterar
ip_address = 192.168.56.31 # ip (preferencial private network)
number = 1 # node number (0-254)
name = node2 # node name / hostname
cluster = ocfs2 # cluster name

cluster:
node_count = 2 # quantidade de nodes no cluster
heartbeat_mode = local
name = ocfs2 # cluster name

NOTA:

O nome do node deve ser o mesmo do hostname, não precisa incluir domínio e o endereço IP de serviço não precisa ser o mesmo node/hostname.

TIMEOUT CONFIGURATION

Configurações necessárias para heartbeat de disco / rede, parâmetros ficam armazenados em /etc/sysconfig/o2cb.

# /etc/init.d/o2cb configure

Load O2CB driver on boot (y/n) [y]:
Cluster stack backing O2CB [o2cb]:
Cluster to start on boot (Enter “none” to clear) [ocfs2]: ocfs2
Specify heartbeat dead threshold (>=7) [31]:
Specify network idle timeout in ms (>=5000) [30000]:
Specify network keepalive delay in ms (>=1000) [2000]:
Specify network reconnect delay in ms (>=2000) [2000]:
Writing O2CB configuration: OK
Cluster webcluster already online

NOTA:

Heartbeat de disco é definido pelo parâmetro O2CB_HEARTBEAT_THRESHOLD, sendo o padrão um timeout de 60s calculado pela seguinte fórmula HB_TH = (((timeout in seconds) / 2) + 1). Logo para um timeout de 60s, HB_TH = ((60/2) +1) = 31

KERNEL CONFIGURATION

Necessário habilitar parâmetro no kernel para transformar um oops em panic para que o servidor seja reiniciado em caso de falha de thread do kernel necessária ao OCFS2 evitando travamento do cluster.

Se não estiver definido os demais cluster nodes poderão não ter retorno com relação ao node que apresentou falha.

# vi /etc/sysctl.conf

kernel.panic_on_oops = 1
kernel.panic = 30

# sysctl -p /etc/sysctl.conf

FORMATANDO FS TIPO OCFS2

O padrão utilizado para block-size e cluster-size é de 4K (não recomentado valores menores), para o journal é 64MB em datafiles e 256MB em mail files.

mkfs.ocfs2 -L “volume-label” /dev/sdb1

Habilitando file system features.

# tunefs.ocfs2 -q -Q “All Features: %M %H %O\n” /dev/sdb1
All Features: BackupSuper SparseAlloc UnwrittenExtents

Exemplo para formatação para datafiles.

# mkfs.ocfs2 -T datafiles -L “volume-label” /dev/sdb1

Exemplo para formatação alterando journal size, especificando quantidade de cluster nodes (padrão é 4) e habilitando features durante a formatação.

# mkfs.ocfs2 -b 4K -C 4K -N 8 -L “volume-label” -J size=128M –fs-feature-level=max-compat /dev/sdb1

MOUNT / UNMOUNT

O cluster stack precisa estar on-line.

# /etc/init.d/o2cb online

Realizar a montagem. (Não é instantâneo por aguardar o cluster node se juntar o domínio DLM)

# mount /dev/sdb1 /u01

Realizar a montagem utilizando label.

# mount -L volume-label /u01

FINALIZANDO

Adicionar serviços na inicialização e no fstab para mount automático.

# chkconfig –add o2cb
# chkconfig –add ocfs2
# cat /etc/fstab
/dev/sdb1 /u01 ocfs2 _netdev,nointr,defaults 0 0

Se Oracle RAC

# cat /etc/fstab
/dev/sdb1 /u01 ocfs2 datavolume,nointr,defaults 0 0

TROUBLESHOOTING

FSCK para full scan

# fsck.ocfs2 -f /dev/sdb1

ADICIONANDO NOVO NODE ON-LINE AO CLUSTER

# o2cb_ctl -C -i -n node3 -t node -a number=3 -a ip_address=192.168.56.32 -a ip_port=7777 -a cluster=ocfs2

NOTA:

Necessário atualizar o arquivo /etc/ocfs2/cluster.conf e propagar para todos os cluster nodes.
Havendo problemas de conexão, executar comando abaixo:
o2cb_ctl -H -n ocfs2 -t cluster -a online=yes

Tags: , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

© TIAGO.DIAS.ETI.BR
CyberChimps