>_Cluster CentOS 7.2 – LVM Cluster – GFS2 e IP VIP – 1.2

Criando um Cluster de dois nós para atender Containers Docker.

Neste segundo tutorial veremos a configuração dos seguintes itens: Lvm Cluster, Gfs2 e a configuração do IP VIP.

cluster

Antes de ir para a configuração, vou abordar alguns tópicos que considero importante.

journaling
Um sistema de arquivos com journaling dá permissão ao Sistema Operacional de manter um log (journal), de todas as mudanças no sistema de arquivos antes de escrever os dados no disco. Normalmente é um log circular alocado em uma área especial do sistema de arquivos.

GFS2
O sistema de arquivos GFS2 da Red Hat está incluído no Complemento de Armazenamento Resiliente. Ele é um sistema nativo de arquivos que lida diretamente com a interface do sistema de arquivos kernel do Linux (VFS layer). Quando implementado como um sistema de arquivos do cluster, o GFS2 implementa os metadados distribuídos e diários múltiplos. A Red Hat suporta o uso do sistema de arquivos GFS2 somente implementado do Complemento de Alta Disponibilidade.

No cenário que estou construindo, terei duas partições/diretórios em GFS2, são elas: /STORAGE/DOCKER_TMP E /STORAGE/DOCKER_WWW. Você deve estar se perguntando o porque dessas duas partições. Bom vamos lá, a primeiroa DOCKER_TMP servirá para atender o /tmp dos meus containers, já a segunda DOCKER_WWW servirá para atender o /var/www dos meus containers. Ainda sim, você deve estar perguntando: tmp? Sim como tenho uma aplicação antiga que precisa do diretório /tmp compartilhado, tive que fazer desta forma. Porém, para você que está acompanhando o tutorial, creio que não será necessário compartilhar o /tmp.

Passo 1 – Criando os diretórios /STORAGE/DOCKER_TMP e /STORAGE/DOCKER_WWW.
Servidor ba-vm-www1

[root@ba-vm-www1 ~]# mkdir -p /STORAGE/DOCKER_TMP
[root@ba-vm-www1 ~]# mkdir /STORAGE/DOCKER_WWW

Servidor ba-vm-www2

[root@ba-vm-www2 ~]# mkdir -p /STORAGE/DOCKER_TMP
[root@ba-vm-www2 ~]# mkdir /STORAGE/DOCKER_WWW

Passo 2 – Criando o LVM sobre os discos que estão configurados como multipath.
Observção: Esta ação será realizada somente no ba-vm-www1. O próprio CLVM será responsável pela replicação do ba-vm-www2.

PV (Physical Volume).

[root@ba-vm-www1 ~]# pvcreate /dev/mapper/mpatha 
  Physical volume "/dev/mapper/mpatha" successfully created
[root@ba-vm-www1 ~]# pvcreate /dev/mapper/mpathb
  Physical volume "/dev/mapper/mpathb" successfully created

Passo 3 – Verificando se tudo correu bem com o nó (ba-vm-www2).

[root@ba-vm-www2 ~]# pvs
  PV                VG   Fmt  Attr PSize  PFree 
  /dev/mapper/mpatha      lvm2 ---  45,00g 45,00g
  /dev/mapper/mpathb      lvm2 ---   5,00g  5,00g

Passo 4 – Criando os grupos de volumes cluster_docker_www e cluster_docker_tmp.
Observação:
[-A|–autobackup {y|n}]
[-c|–clustered {y|n}]

VG (Volume Group).

root@ba-vm-www1 ~]# vgcreate -Ay -cy cluster_docker_www /dev/mapper/mpatha
  Clustered volume group "cluster_docker_www" successfully created
[root@ba-vm-www1 ~]# vgcreate -Ay -cy cluster_docker_tmp /dev/mapper/mpathb
  Clustered volume group "cluster_docker_tmp" successfully created

Passo 5 – Criando os volumes lógicos de 44Gb (cluster_docker_www) e de 4G (cluster_docker_tmp).

LV (Logical Volume).

[root@ba-vm-www1 ~]# lvcreate -L44G -n www cluster_docker_www
  Logical volume "www" created.
[root@ba-vm-www1 ~]# lvcreate -L4G -n tmp cluster_docker_tmp
  Logical volume "tmp" created.

Passo 6 – Verificando com o comando lvs.

[root@ba-vm-www1 ~]# lvs
  LV   VG                 Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  tmp  cluster_docker_tmp -wi-a-----  4,00g                                                    
  www  cluster_docker_www -wi-a----- 44,00g

Passo 7 – Formatando os volumes lógicos para o GF2.
Observação:
-t Volume_lógico:Nome_do_cluster
-j Quantidades de Journaling

                                              
[root@ba-vm-www1 ~]# mkfs.gfs2 -p lock_dlm -t -j 2 tmp:cluster_docker /dev/mapper/cluster_docker_tmp-tmp 
[root@ba-vm-www1 ~]# mkfs.gfs2 -p lock_dlm -t -j 2 www:cluster_docker /dev/mapper/cluster_docker_www-www 

Passo 8 – Reboot em ambos os nós (ba-vm-www1 e ba-vm-www2).

# reboot

Passo 9 – Ajustando o fstab.

[root@ba-vm-www1 ~]# vim /etc/fstab 
/dev/mapper/cluster_docker_tmp-tmp      /STORAGE/DOCKER_TMP     gfs2 defaults,locktable=cluster_docker:tmp    0      0       
/dev/mapper/cluster_docker_www-www      /STORAGE/DOCKER_WWW     gfs2    defaults,locktable=cluster_docker:www    0      0
[root@ba-vm-www2 ~]# vim /etc/fstab 
/dev/mapper/cluster_docker_tmp-tmp      /STORAGE/DOCKER_TMP     gfs2    defaults,locktable=cluster_docker:tmp    0      0       
/dev/mapper/cluster_docker_www-www      /STORAGE/DOCKER_WWW     gfs2    defaults,locktable=cluster_docker:www    0      0

Passo 10 – Montando todos os pontos de montagem com o comando mount.

[root@ba-vm-www1 ~]# mount -a
[root@ba-vm-www2 ~]# mount -a

Passo 11 – Reboot.

[root@ba-vm-www1 ~]# reboot
[root@ba-vm-www2 ~]# reboot

Passo 11 – Criando o resource IP VIP.
Este passo deve ser executando somente no nó ba-vm-www1.
Observação:
IP: 192.168.0.116/22 (virtual).
Resource name: vip

[root@ba-vm-www1 DOCKER_TMP]# pcs resource create vip ocf:heartbeat:IPaddr2 params ip="192.168.0.116" cidr_netmask="22" op monitor interval="30s"

Passo 12 – Construindo e adicionando o resource vip ao resource scsi. O resource scsi foi criado no primeiro tutorial.

[root@ba-vm-www1 ~]# pcs constraint colocation add vip scsi INFINITY

Passo 13 – Definindo a ordem de inicialização dos resources.

[root@ba-vm-www1 ~]# pcs constraint order scsi then vip
Adding scsi vip (kind: Mandatory) (Options: first-action=start then-action=start)

Pass0 14 – Definindo a prioridade do resource vip. Neste caso, quem terá maior prioridade é o nó ba-vm-www1.

[root@ba-vm-www1 ~]# pcs constraint location vip prefers ba-vm-www1=51

Pass0 15 – Verificando a configuração/status com o comando crm_mon.

[root@ba-vm-www1 DOCKER_WWW]# crm_mon -Afr -1
Last updated: Fri Feb  5 12:56:34 2016          Last change: Thu Feb  4 17:42:02 2016 by root via cibadmin on ba-vm-www1
Stack: corosync
Current DC: ba-vm-www2 (version 1.1.13-10.el7-44eb2dd) - partition with quorum
2 nodes and 6 resources configured

Online: [ ba-vm-www1 ba-vm-www2 ]

Full list of resources:

 Clone Set: dlm-clone [dlm]
     Started: [ ba-vm-www1 ba-vm-www2 ]
 Clone Set: clvmd-clone [clvmd]
     Started: [ ba-vm-www1 ba-vm-www2 ]
 scsi   (stonith:fence_scsi):   Started ba-vm-www1
 vip    (ocf::heartbeat:IPaddr2):       Started ba-vm-www1

Node Attributes:
* Node ba-vm-www1:
* Node ba-vm-www2:

Migration Summary:
* Node ba-vm-www2:
* Node ba-vm-www1:

Passo 16 – Verificando os membros do cluster.

[root@ba-vm-www1 ~]# corosync-cmapctl | grep members
runtime.totem.pg.mrp.srp.members.1.config_version (u64) = 0
runtime.totem.pg.mrp.srp.members.1.ip (str) = r(0) ip(192.168.0.114) 
runtime.totem.pg.mrp.srp.members.1.join_count (u32) = 1
runtime.totem.pg.mrp.srp.members.1.status (str) = joined
runtime.totem.pg.mrp.srp.members.2.config_version (u64) = 0
runtime.totem.pg.mrp.srp.members.2.ip (str) = r(0) ip(192.168.0.115) 
runtime.totem.pg.mrp.srp.members.2.join_count (u32) = 1
runtime.totem.pg.mrp.srp.members.2.status (str) = joined

Passo 17 – Verificando o status do corosync.

[root@ba-vm-www1 ~]# pcs status corosync

Membership information
----------------------
    Nodeid      Votes Name
         1          1 ba-vm-www1 (local)
         2          1 ba-vm-www2

Passo 18 – Verificando como foi definida a construção do cluster.

[root@ba-vm-www1 DOCKER_TMP]#  pcs constraint
Location Constraints:
  Resource: vip
    Enabled on: ba-vm-www1 (score:51)
Ordering Constraints:
  start dlm-clone then start clvmd-clone (kind:Mandatory)
  start scsi then start vip (kind:Mandatory)
Colocation Constraints:
  clvmd-clone with dlm-clone (score:INFINITY)
  vip with scsi (score:INFINITY)

Verificando o status.

[root@ba-vm-www1 DOCKER_WWW]# pcs status resources
 Clone Set: dlm-clone [dlm]
     Started: [ ba-vm-www1 ba-vm-www2 ]
 Clone Set: clvmd-clone [clvmd]
     Started: [ ba-vm-www1 ba-vm-www2 ]
 vip    (ocf::heartbeat:IPaddr2):       Started ba-vm-www1
[root@ba-vm-www1 DOCKER_WWW]# pcs status
Cluster name: cluster_docker
Last updated: Fri Feb  5 13:23:11 2016          Last change: Thu Feb  4 17:42:02 2016 by root via cibadmin on ba-vm-www1
Stack: corosync
Current DC: ba-vm-www2 (version 1.1.13-10.el7-44eb2dd) - partition with quorum
2 nodes and 6 resources configured

Online: [ ba-vm-www1 ba-vm-www2 ]

Full list of resources:

 Clone Set: dlm-clone [dlm]
     Started: [ ba-vm-www1 ba-vm-www2 ]
 Clone Set: clvmd-clone [clvmd]
     Started: [ ba-vm-www1 ba-vm-www2 ]
 scsi   (stonith:fence_scsi):   Started ba-vm-www1
 vip    (ocf::heartbeat:IPaddr2):       Started ba-vm-www1

PCSD Status:
  ba-vm-www1: Online
  ba-vm-www2: Online

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

Continua no terceiro tutorial.

Fontes:
https://www.kernel.org/doc/Documentation/filesystems/gfs2-uevents.txt
http://linux.die.net/man/8/mkfs.gfs2
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Global_File_System_2/ch-clustsetup-GFS2.html

>_Cluster CentOS 7.2 – LVM Cluster – GFS2 e IP VIP – 1.2
Tagged on:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: