SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
Sistemas Distribuídos
Alta Disponibilidade utilizando Pacemaker
Frederico Madeira
LPIC­1, LPIC­2, CCNA
fred@madeira.eng.br
www.madeira.eng.br
“Um sistema de alta disponibilidade é aquele que utiliza
mecanismos de detecção, recuperação e mascaramento de
falhas, visando manter o funcionamento dos serviços durante o
máximo de tempo possível, inclusive no decurso de
manutenções programadas”
Definição – Alta Disponibilidade
“Disponibilidade refere-se a capacidade de um usuário de
determinado sistema acessar, incluir ou modificar os dados
existentes em qualquer intervalo de tempo. Caso, por qualquer
que seja o motivo, um usuário não tenha acesso, é dito então
que ele está indisponível, sendo o tempo total de
indisponibilidade conhecido pelo termo downtime.”
Definição – Disponibilidade
•Níveis de Disponibilidade
Geralmente, quanto maior a disponibilidade,
maior a redundância e custo das soluções: tudo
depende do tipo de serviço que se pretende
disponibilizar
• Infraestrutura do Cluster (CMAN, DLM, Fencing)
– Provê as principais funções para que os nós trabalhem
juntos como um cluster
– Gerenciamento dos arquivos de configuração,
gerenciamento das associações (membership), lock
management e fencing
• Gerenciamento de Serviços HA (rgmanager)
– Provê failover dos serviços de um cluster para o outro
quando o nó fica inoperante
Principais Componentes
• Ferramentas de Administralçao do Cluster
(pacemaker, CCS, Conga)
– Ferramentas de configuração e gerenciamento para
configurar e criar clusters
– Gerencia a alta disponibilidade para uso dos componentes
do cluster, serviços e storage
Principais Componentes
Estrutura do Cluster HA
Funcionamento
IP VIRTUAL
IP’s FIXOS
Instalação Cluster Ativo/Passivo
➔
Instalação do Pacemaker stack e ferramenta pcs
nos dois nós
yum install pacemaker pcs cman
➔
Inicialização do serviço e definição para iniciar no
boot do servidor
Centos 7
systemctl enable pcsd.service
systemctl start pcsd.service
systemctl enable pacemaker.service
Centos 6
/etc/init.d/pcsd start
chkconfig pcsd on
chkconfig pacemaker on
Instalação
➔
Depois da instalação dos pacotes, um novo
usuário chamado hacluster foi criado. Este usuário
é usado para sincronização da configuração e
gerenciamento dos serviços nos nós. É necessário
definir a mesma senha em todos os servidores
[root@node1 ~]# passwd hacluster
➔
Desativando o Firewall (esta ação só deve ser feita
no lab em sala, em implementações deve ser
realizado os ajustes nas regras do firewall)
[root@node1 ~]# iptables -F
[root@node1 ~]# chkconfig iptables off
Instalação
➔
Definir os servidores com IP fixo
[root@node2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=52:54:00:2D:9C:7E
TYPE=Ethernet
UUID=25d96521-de19-4957-b010-a39c0d1280e7
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.122.204
NETMASK=255.255.255.0
GATEWAY=192.168.122.1
➔
Inserir hostname no /etc/hosts
[root@node1 ~]# vim /etc/hosts
192.168.122.203 node1
192.168.122.204 node2
Instalação
➔
Configuração da autenticação entre os dois hosts
para que possa ser executado comandos em
apenas um dos nós.
[root@node1 ~]# pcs cluster auth node1 node2
Username: hacluster
Password:
node1: Authorized
node2: Authorized
Instalação
➔
Criando um novo cluster chamado cluster_apache
e sincronizado as configurações do corosync entre
os nós.
[root@node1 ~]# pcs cluster setup --start --name cluster_apache
node1 node2
node1: Updated cluster.conf...
node2: Updated cluster.conf...
Starting cluster on nodes: node1, node2...
node1: Starting Cluster...
node2: Starting Cluster...
Obs: Se receber o erro abaixo, crie nos dois nós a pasta
/etc/cluster
Error connecting to node1 - (HTTP error: 500)
Error: Unable to set cluster.conf
Verificando o status do Cluster
[root@node1 ~]# pcs status
Cluster name: cluster_apache
WARNING: no stonith devices and stonith-enabled is not
false
Last updated: Sun Oct 18 22:33:51 2015
Last change: Sun Oct 18 22:33:10 2015
Stack: cman
Current DC: node1 - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured
0 Resources configured
Online: [ node1 node2 ]
Full list of resources:
Adicionando recursos: IP VIP
Se o cluster estiver online, podemos inserir os recursos no
mesmo.
Antes prescisaremos desativar o STONITH, pois em nossa
configuração não temos nenhum dispositivo para fencing.
[root@node1 ~]# pcs property set stonith-enabled=false
Adicionando um IP Virtual para nosso cluster, esse recurso
será chamado de VirtualIP
[root@node1 ~]# pcs resource create VirtualIP IPaddr2
ip=192.168.122.100 cidr_netmask=24
Verificando o status do Cluster
[root@node1 ~]# pcs status
Cluster name: cluster_apache
Last updated: Sun Oct 18 22:57:21 2015
Last change: Sun Oct 18 22:55:41 2015
Stack: cman
Current DC: node1 - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured
1 Resources configured
Online: [ node1 node2 ]
Full list of resources:
VirtualIP (ocf::heartbeat:IPaddr2): Started node1
Verificando o status do Cluster
[root@node1 ~]# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
pfifo_fast state UP qlen 1000
link/ether 52:54:00:e0:dc:2a brd ff:ff:ff:ff:ff:ff
inet 192.168.122.203/24 brd 192.168.122.255 scope global
eth0
inet 192.168.122.100/24 brd 192.168.122.255 scope global
secondary eth0
inet6 fe80::5054:ff:fee0:dc2a/64 scope link
valid_lft forever preferred_lft forever
A partir de um host client ping o IP VIP do cluster
[root@node1 ~]# pcs cluster standby node1
[root@node1 ~]# pcs cluster unstandby node1
Adicionando recursos: Apache
Vamos inserir o apache para rodar em nosso cluster, faça
os processos abaixo nos dois nós
[root@node1 ~]# yum install httpd
O Apache Resource Agent do pacemaker utiliza a página de
status do apache para verificar a saúde do serviço. Para
ativar a página de status, siga os paços abaixo:
[root@node1 ~]# vi /etc/httpd/conf.d/status.conf
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Location>
Adicionando recursos: Apache
Inserindo o recurso no cluster
[root@node1 ~]# pcs resource create httpd
ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf
statusurl="http://127.0.0.1/server-status" op monitor
interval=20s
Onde:
create httpd - é o nome do recurso
configfile=/etc/httpd/conf/httpd.conf – é o local do
arquivo de configuração do apache
Statusurl="http://127.0.0.1/server-status" -
Caminho usado para monitorar o status do servidor web
op monitor interval=20s – Monitora o serviço a cada 20s
Verificando o status do Cluster
[root@node1 ~]# pcs status
Cluster name: cluster_apache
Last updated: Sun Oct 18 23:36:16 2015
Last change: Sun Oct 18 23:33:30 2015
Stack: cman
Current DC: node1 - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured
2 Resources configured
Online: [ node1 node2 ]
Full list of resources:
VirtualIP (ocf::heartbeat:IPaddr2): Started node1
httpd (ocf::heartbeat:apache): Started node2
Adicionando recursos: Apache
Os recursos foram distribuidos entro os nós, mas tanto o IP
VIP como o Apache precisam rodar no mesmo nó.
[root@node1 ~]# pcs resource move httpd
Constraint
Através das constraint é possível ordenar o startup dos
serviços e definir quais recursos devem rodar juntos no
mesmo nó.
[root@node1 ~]# pcs constraint colocation add VirtualIP
httpd INFINITY
Mova apenas um recurso para o outro nó e você verá que
ambos recursos serão movidos.
[root@node1 ~]# pcs resource move httpd nome_do_nó
O DRBD (Distributed Replicated Block Device) consiste em um
módulo para o kernel Linux que faz o espelhamento dos dados
de um dispositivo de bloco (partições de disco) entre diferentes
servidores, interligados geralmente através de uma rede
Ethernet.
DRBD = RAID 1 via Rede
Definição -DRBD
➔
Cada dispositivo de bloco envolvido na configuração do DRBD
tem um estado, que pode ser primário ou secundário.
➔
Operações de escrita feitas no primário são replicadas para o
secundário
➔
O protocolo padrão de replicação garante a sincronia e a
integridade dos dados replicados.
➔
Operações de leitura, são sempre realizadas localmente.
Funcionamento
➔
O DRBD suporta três distintos modos de replicação,
permitindo três graus de sincronnização da replicação. O
➔
Protocolo A é assíncrono.
➔
As operações de escrita no nodo primário são
consideradas completas quando a escrita no disco local
termina e o pacote de replicação está no buffer TCP.
➔
Em casos de fail-over deve ocorrer perda de dados
com este protocolo.
Funcionamento
➔
O Protocol B é um semi-síncrono protocolo de
replicação.
➔
Operações locais são escritas no nodo primário e são
consideradas completas quando estão escritas no diso
local e a relpicação do pacote alcançou o outro nodo
na rede.
➔
O Protocol C é sincrono por completo.
➔
Com este protocolo as operações no nodo primário são
consideradas completas quando ocorre a escrita no
nodo primário e no secundário.
Funcionamento
Funcionamento
Escrita
DRBD - Instalação
Nos dois nós
[root@node1 ~]# rpm --import
https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@node1 ~]# rpm -Uvh http://www.elrepo.org/elrepo-
release-6-6.el6.elrepo.noarch.rpm
[root@node1 ~]# yum install drbd84-utils kmod-drbd84
Adicione um disco de 1Gb na máquina virtual, no meu caso
o novo dispositivo foi /dev/vdb em ambas as máquinas
DRBD - Configuração
Criar e configurar o arquivo de configuração abaixo nos
dois nós:
[root@node1 ~]# vim /etc/drbd.d/drbd0.res
resource drbd0 {
disk /dev/vdb1;
device /dev/drbd0;
meta-disk internal;
Protocol C;
on node1 {
address 192.168.122.203:7789;
}
on node2 {
address 192.168.122.204:7789;
}
}
DRBD - Configuração
Inicializando o volume /dev/drbd0 nos dois nós:
[root@node1 ~]# drbdadm create-md drbd0
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
success
[root@node2 ~]# drbdadm create-md drbd0
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
success
DRBD - Configuração
Ativando o /dev/drbd0 nos dois nós:
[root@node1 ~]# drbdadm up drbd0
[root@node2 ~]# drbdadm up drbd0
[root@node1 ~]# cat /proc/drbd
version: 8.4.6 (api:1/proto:86-101)
GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70
build by phil@Build64R6, 2015-04-09 14:35:00
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:f oos:1048220
O DRBD marcou os dois recursos como inconsistentes pois
ainda não foi marcado quem é o nó primário.
DRBD - Configuração
Marcando o volume do node1 como primário
[root@node1 ~]# drbdadm primary --force drbd0
[root@node2 ~]# cat /proc/drbd
version: 8.4.6 (api:1/proto:86-101)
GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by
phil@Build64R6, 2015-04-09 14:35:00
0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C
r-----
ns:0 nr:560232 dw:560232 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1
wo:f oos:487988
[=========>..........] sync'ed: 53.6% (487988/1048220)K
finish: 0:00:25 speed: 18,960 (13,664) want: 21,640 K/sec
DRBD - Configuração
Após o sincronismo dos dois volumes
[root@node1 ~]# cat /proc/drbd
version: 8.4.6 (api:1/proto:86-101)
GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by
phil@Build64R6, 2015-04-09 14:35:00
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:1048220 nr:0 dw:0 dr:1048884 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1
wo:f oos:0
Onde:
cs (connection state). Status da conexão de rede.
ro (roles). Se o nó é primeira ou secundário
ds (disk states). Status dos discos.O primeiro parâmetro representa o
disco local e depois da barra representa o nó remoto.
DRBD – Criando um FS no
recurso DRBD
No nó em que o DRBD estiver como primário, vamos criar
o FS. Toda ação que for feita no volume /dev/drbd0 será
replicada para o outro nó.
[root@node1 ~]# mkfs.ext3 /dev/drbd0
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262055 blocks
13102 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 32768, 98304, 163840, 229376
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
DRBD – Testando
Siga os passos abaixo a fim de testar a integridade do
volume drbd nos dois nós.
#Montando o volume /dev/drbd0 e criando conteudo dentro dele
[root@node1 ~]# mkdir /media/teste_drbd
[root@node1 ~]# mount /dev/drbd0 /media/teste_drbd/
[root@node1 ~]# touch /media/teste_drbd/node1_teste.txt
[root@node1 ~]# umount /dev/drbd0
[root@node1 ~]# drbdadm secondary drbd0
[root@node1 ~]# drbd-overview
0:drbd0/0 Connected Secondary/Secondary UpToDate/UpToDate
DRBD – Testando
Montando o volume DRBD no nó 2 e verificando se o
arquivo criado no nó 1 foi replicado.
[root@node2 ~]# mkdir /media/teste_drbd
[root@node2 ~]# mount /dev/drbd0 /media/teste_drbd/
mount: você precisa especificar o tipo do sistema de arquivos
O erro acima ocorreu pois o volume drbd não está como primário neste nó.
[root@node2 ~]# drbdadm primary drbd0
[root@node2 ~]# drbd-overview
0:drbd0/0 Connected Primary/Secondary UpToDate/UpToDate
[root@node2 ~]# mount /dev/drbd0 /media/teste_drbd/
[root@node2 ~]# ls /media/teste_drbd/
lost+found node1_teste.txt
Como o arquivo node1_teste.txt (criado no node1) apareceu, significa que
ele foi replicado do node1 para o node2.
DRBD – Integrando o FS /dev/drbd0 ao Cluster
Nosso cluster está configurado com os seguintes recursos:
– IP VIP
– Servidor Web Apache
Necessário adicionar DRBD como recurso do cluster
Desativar o DRBD da inicialização do linux
[root@node1 ~]# chkconfig drbd off
Desmontar o volume DRBD onde ele estiver montado
[root@node1 ~]# umount /dev/drbd0
[root@node2 ~]# umount /dev/drbd0
DRBD – Integrando o FS /dev/drbd0 ao Cluster
O PCS tem a possibilidade de enfileirar diversos comandos
para em seguida aplicá-los todos de uma vez só. Esse
recurso é possível através da CIB (Cluster Information
Base)
[root@node1 ~]# pcs cluster cib drbd_config
Através do pcs -f vamos inserir regras dentro do
drbd_cofnig. Essas regras só serão inseridas após o push
destas configurações.
[root@node1 ~]# pcs -f drbd_config resource create DrbdVol
ocf:linbit:drbd drbd_resource=drbd0 op monitor interval=60s
[root@node1 ~]# pcs -f drbd_config resource master
DrbdVolClone DrbdVol master-max=1 master-node-max=1 clone-
max=2 clone-node-max=1 notify=true
DRBD – Integrando o FS /dev/drbd0 ao Cluster
[root@node1 ~]# pcs -f drbd_config resource show
VirtualIP (ocf::heartbeat:IPaddr2): Started node1
httpd (ocf::heartbeat:apache): Started node1
Master/Slave Set: DrbdVolClone [DrbdVol]
Stopped: [ node1 node2 ]
Se as configurações estiverem corretas, podemos agora
inserir as configurações no Cluster
[root@node1 ~]# pcs cluster cib-push drbd_config
CIB updated
DRBD – Integrando o FS /dev/drbd0 ao Cluster
[root@node1 ~]# pcs status
Cluster name: cluster_apache
Last updated: Sun Oct 25 16:21:57 2015
Last change: Sun Oct 25 16:20:40 2015
Stack: cman
Current DC: node1 - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured
4 Resources configured
Online: [ node1 node2 ]
Full list of resources:
VirtualIP (ocf::heartbeat:IPaddr2): Started node1
httpd (ocf::heartbeat:apache): Started node1
Master/Slave Set: DrbdVolClone [DrbdVol]
Masters: [ node2 ]
Slaves: [ node1 ]
DRBD – Integrando o FS /dev/drbd0 ao Cluster
Uma vez que o DRBD já está inserido no Cluster, devemos agora
inserir um filesystem para ser montado pelo nosso cluster e definir
que ele só deve ser montado no nó primário
# Add FS
[root@node1 ~]# pcs cluster cib fs_config
[root@node1 ~]# pcs -f fs_config resource create DrbdFS
Filesystem device="/dev/drbd0" directory="/var/www/html"
fstype="ext3"
# Definindo a constraint
[root@node1 ~]# pcs -f fs_config constraint colocation add
DrbdFS DrbdVolClone INFINITY with-rsc-role=Master
[root@node1 ~]# pcs -f fs_config constraint order promote
DrbdVolClone then start DrbdFS
Adding DrbdVolClone DrbdFS (kind: Mandatory) (Options: first-
action=promote then-action=start)
DRBD – Integrando o FS /dev/drbd0 ao Cluster
Precisamos definir que o Apache deve rodar no mesmo nó onde o
FS estiver ativo e que o FS deve ser montado antes do inicio do
apache
[root@node1 ~]# pcs -f fs_config constraint colocation add httpd
DrbdFS INFINITY
[root@node1 ~]# pcs -f fs_config constraint order DrbdFS then
httpd
Adding DrbdFS httpd (kind: Mandatory) (Options: first-
action=start then-action=start)
DRBD – Integrando o FS /dev/drbd0 ao Cluster
Verificando os recursos e constraint da CIB fs_config
[root@node1 ~]# pcs -f fs_config constraint
Location Constraints:
Resource: httpd
Enabled on: node1 (score:INFINITY) (role: Started)
Ordering Constraints:
promote DrbdVolClone then start DrbdFS (kind:Mandatory)
start DrbdFS then start httpd (kind:Mandatory)
Colocation Constraints:
VirtualIP with httpd (score:INFINITY)
DrbdFS with DrbdVolClone (score:INFINITY) (with-rsc-
role:Master)
httpd with DrbdFS (score:INFINITY)
DRBD – Integrando o FS /dev/drbd0 ao Cluster
Verificando os recursos e constraint da CIB fs_config
[root@node1 ~]# pcs -f fs_config resource show
VirtualIP (ocf::heartbeat:IPaddr2): Started node1
httpd (ocf::heartbeat:apache): Started node1
Master/Slave Set: DrbdVolClone [DrbdVol]
Masters: [ node2 ]
Slaves: [ node1 ]
DrbdFS (ocf::heartbeat:Filesystem): Stopped
Se tudo estiver certo, podemos fazer o push das configurações
[root@node1 ~]# pcs cluster cib-push fs_config
CIB updated
DRBD – Integrando o FS /dev/drbd0 ao Cluster
Verificando o status
[root@node1 ~]# pcs status
2 Nodes configured
5 Resources configured
Online: [ node1 node2 ]
Full list of resources:
VirtualIP (ocf::heartbeat:IPaddr2): Started node1
httpd (ocf::heartbeat:apache): Started node1
Master/Slave Set: DrbdVolClone [DrbdVol]
Masters: [ node1 ]
Slaves: [ node2 ]
DrbdFS (ocf::heartbeat:Filesystem): Started node1
Testando
➔
Coloque o nó 1 em standby e observe que o a
pasa /var/www/html está vazia. No nó 2 ela
será montada com todo o conteúdo
apresentado no nó 1 antes do standby.
[root@node1 ~]# pcs cluster standby node1
➔
Faça com que o nó 1 reassuma. Verifique o
status do device /dev/drbd0 e dos dados na
pasta /var/www/html
[root@node1 ~]# pcs cluster unstandby node1
Sistemas Distribuídos
Alta Disponibilidade utilizando Heartbeat + drbd
Frederico Madeira
LPIC­1, LPIC­2, CCNA
fred@madeira.eng.br
www.madeira.eng.br

Mais conteúdo relacionado

Mais procurados

Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosFrederico Madeira
 
desafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidosdesafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidosHélio Jovo
 
Introdução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosIntrodução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosVictor Hazin da Rocha
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoAdriano Teixeira de Souza
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosFrederico Madeira
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao PythonMarcio Palheta
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoThiago Marinho
 
Agentes Moveis - Aspectos De Desenvolvimento
Agentes Moveis - Aspectos De  DesenvolvimentoAgentes Moveis - Aspectos De  Desenvolvimento
Agentes Moveis - Aspectos De DesenvolvimentoLuiz Matos
 
System monitoring zabbix
System monitoring zabbixSystem monitoring zabbix
System monitoring zabbixSu Diro
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoVinícius de Paula
 
Comandos do linux
Comandos do linuxComandos do linux
Comandos do linuxPeslPinguim
 
Inteligência Computacional Unidade 01 – Introdução
Inteligência Computacional Unidade 01 – IntroduçãoInteligência Computacional Unidade 01 – Introdução
Inteligência Computacional Unidade 01 – IntroduçãoLeonardo Goliatt
 
Modelagem de Sistemas de Informação
Modelagem de Sistemas de InformaçãoModelagem de Sistemas de Informação
Modelagem de Sistemas de InformaçãoHelder Lopes
 

Mais procurados (20)

Sd06 (si) exclusão mútua
Sd06 (si)   exclusão mútuaSd06 (si)   exclusão mútua
Sd06 (si) exclusão mútua
 
Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas Distribuídos
 
desafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidosdesafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidos
 
Introdução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosIntrodução a Sistemas Distribuídos
Introdução a Sistemas Distribuídos
 
Sistemas Distribuídos - Clusters
Sistemas Distribuídos - ClustersSistemas Distribuídos - Clusters
Sistemas Distribuídos - Clusters
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
 
Algoritmo lamport
Algoritmo lamportAlgoritmo lamport
Algoritmo lamport
 
Modelo caso uso
Modelo caso usoModelo caso uso
Modelo caso uso
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas Distribuidos
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - Conceito
 
POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em JavaPOO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
 
Controle de congestionamento tcp
Controle de congestionamento tcpControle de congestionamento tcp
Controle de congestionamento tcp
 
Agentes Moveis - Aspectos De Desenvolvimento
Agentes Moveis - Aspectos De  DesenvolvimentoAgentes Moveis - Aspectos De  Desenvolvimento
Agentes Moveis - Aspectos De Desenvolvimento
 
System monitoring zabbix
System monitoring zabbixSystem monitoring zabbix
System monitoring zabbix
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
 
Comandos do linux
Comandos do linuxComandos do linux
Comandos do linux
 
Inteligência Computacional Unidade 01 – Introdução
Inteligência Computacional Unidade 01 – IntroduçãoInteligência Computacional Unidade 01 – Introdução
Inteligência Computacional Unidade 01 – Introdução
 
Modelagem de Sistemas de Informação
Modelagem de Sistemas de InformaçãoModelagem de Sistemas de Informação
Modelagem de Sistemas de Informação
 
Modelagem de Sistemas de Informação 10 Diagrama de Sequência
Modelagem de Sistemas de Informação 10 Diagrama de SequênciaModelagem de Sistemas de Informação 10 Diagrama de Sequência
Modelagem de Sistemas de Informação 10 Diagrama de Sequência
 

Destaque

SI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplinaSI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplinaFrederico Madeira
 
Linux - Instalação de Programas
Linux - Instalação de ProgramasLinux - Instalação de Programas
Linux - Instalação de ProgramasFrederico Madeira
 
Gil - Virtualisation and High Availability
Gil - Virtualisation and High AvailabilityGil - Virtualisation and High Availability
Gil - Virtualisation and High AvailabilityLuciano Rocha
 
Using Secure Shell on Linux: What Everyone Should Know
Using Secure Shell on Linux: What Everyone Should KnowUsing Secure Shell on Linux: What Everyone Should Know
Using Secure Shell on Linux: What Everyone Should KnowNovell
 
Tópicos - Cluster de Balanceamento de Carga
Tópicos - Cluster de Balanceamento de CargaTópicos - Cluster de Balanceamento de Carga
Tópicos - Cluster de Balanceamento de CargaLuiz Arthur
 
Linux - Servidor de FTP VSFTPD
Linux - Servidor de FTP VSFTPDLinux - Servidor de FTP VSFTPD
Linux - Servidor de FTP VSFTPDFrederico Madeira
 
Shell Script - Controle de fluxo
Shell Script - Controle de fluxoShell Script - Controle de fluxo
Shell Script - Controle de fluxoFrederico Madeira
 
Open Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software LivreOpen Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software LivreFrederico Madeira
 
Corosync and Pacemaker
Corosync and PacemakerCorosync and Pacemaker
Corosync and PacemakerMarian Marinov
 
Tópicos - Cluster de Balanceamento de Carga com DNS
Tópicos - Cluster de Balanceamento de Carga  com  DNSTópicos - Cluster de Balanceamento de Carga  com  DNS
Tópicos - Cluster de Balanceamento de Carga com DNSLuiz Arthur
 
Alta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores LinuxAlta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores Linuxelliando dias
 
Redes VoIP - O Futuro da Telefonia
Redes VoIP - O Futuro da TelefoniaRedes VoIP - O Futuro da Telefonia
Redes VoIP - O Futuro da TelefoniaFrederico Madeira
 

Destaque (14)

SI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplinaSI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplina
 
Linux - Instalação de Programas
Linux - Instalação de ProgramasLinux - Instalação de Programas
Linux - Instalação de Programas
 
Gil - Virtualisation and High Availability
Gil - Virtualisation and High AvailabilityGil - Virtualisation and High Availability
Gil - Virtualisation and High Availability
 
Using Secure Shell on Linux: What Everyone Should Know
Using Secure Shell on Linux: What Everyone Should KnowUsing Secure Shell on Linux: What Everyone Should Know
Using Secure Shell on Linux: What Everyone Should Know
 
Tópicos - Cluster de Balanceamento de Carga
Tópicos - Cluster de Balanceamento de CargaTópicos - Cluster de Balanceamento de Carga
Tópicos - Cluster de Balanceamento de Carga
 
Linux - Servidor de FTP VSFTPD
Linux - Servidor de FTP VSFTPDLinux - Servidor de FTP VSFTPD
Linux - Servidor de FTP VSFTPD
 
Shell Script - Controle de fluxo
Shell Script - Controle de fluxoShell Script - Controle de fluxo
Shell Script - Controle de fluxo
 
Linux Editor VI
Linux Editor VILinux Editor VI
Linux Editor VI
 
Open Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software LivreOpen Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software Livre
 
Linux shell
Linux shellLinux shell
Linux shell
 
Corosync and Pacemaker
Corosync and PacemakerCorosync and Pacemaker
Corosync and Pacemaker
 
Tópicos - Cluster de Balanceamento de Carga com DNS
Tópicos - Cluster de Balanceamento de Carga  com  DNSTópicos - Cluster de Balanceamento de Carga  com  DNS
Tópicos - Cluster de Balanceamento de Carga com DNS
 
Alta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores LinuxAlta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores Linux
 
Redes VoIP - O Futuro da Telefonia
Redes VoIP - O Futuro da TelefoniaRedes VoIP - O Futuro da Telefonia
Redes VoIP - O Futuro da Telefonia
 

Semelhante a Alta Disponibilidade utilizando Pacemaker e DRBD

Alta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdAlta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdFrederico Madeira
 
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...Marlon Willrich
 
Project HA
Project HAProject HA
Project HAKarpv
 
Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalaçãoLuís Eduardo
 
Cluster de Alta disponibilidade
Cluster de Alta disponibilidadeCluster de Alta disponibilidade
Cluster de Alta disponibilidadeMarcelo Garcia
 
Virtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesVirtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesJoao Galdino Mello de Souza
 
Mini Curso - Pen Test - Univem
Mini Curso - Pen Test - UnivemMini Curso - Pen Test - Univem
Mini Curso - Pen Test - Univemevandrovv
 
Seguranca em Servidores Linux
Seguranca em Servidores LinuxSeguranca em Servidores Linux
Seguranca em Servidores LinuxAlessandro Silva
 
Cluster de Alta Disponibilidade em Linux
Cluster de Alta Disponibilidade em LinuxCluster de Alta Disponibilidade em Linux
Cluster de Alta Disponibilidade em LinuxFrederico Madeira
 
Giovaneli_-_Apresentação_ DNS ANYCAST.pdf
Giovaneli_-_Apresentação_ DNS ANYCAST.pdfGiovaneli_-_Apresentação_ DNS ANYCAST.pdf
Giovaneli_-_Apresentação_ DNS ANYCAST.pdfEwersonLuizOliveira
 
Aula PIT 3 - Ambientes
Aula PIT 3 - AmbientesAula PIT 3 - Ambientes
Aula PIT 3 - AmbientesDirceu Belém
 
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)Caio Candido
 
Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)elliando dias
 

Semelhante a Alta Disponibilidade utilizando Pacemaker e DRBD (20)

Alta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdAlta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e Drbd
 
GlusterFs
GlusterFsGlusterFs
GlusterFs
 
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
 
Project HA
Project HAProject HA
Project HA
 
Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalação
 
Cluster de Alta disponibilidade
Cluster de Alta disponibilidadeCluster de Alta disponibilidade
Cluster de Alta disponibilidade
 
Virtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesVirtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno Domingues
 
Consegi 2011: Puppet
Consegi 2011: PuppetConsegi 2011: Puppet
Consegi 2011: Puppet
 
Orquestração com Mcollective
Orquestração com McollectiveOrquestração com Mcollective
Orquestração com Mcollective
 
Squid proxy
Squid proxySquid proxy
Squid proxy
 
Mini Curso - Pen Test - Univem
Mini Curso - Pen Test - UnivemMini Curso - Pen Test - Univem
Mini Curso - Pen Test - Univem
 
Seguranca em Servidores Linux
Seguranca em Servidores LinuxSeguranca em Servidores Linux
Seguranca em Servidores Linux
 
Vagrant + Puppet
Vagrant + PuppetVagrant + Puppet
Vagrant + Puppet
 
Cluster de Alta Disponibilidade em Linux
Cluster de Alta Disponibilidade em LinuxCluster de Alta Disponibilidade em Linux
Cluster de Alta Disponibilidade em Linux
 
Giovaneli_-_Apresentação_ DNS ANYCAST.pdf
Giovaneli_-_Apresentação_ DNS ANYCAST.pdfGiovaneli_-_Apresentação_ DNS ANYCAST.pdf
Giovaneli_-_Apresentação_ DNS ANYCAST.pdf
 
Aula PIT 3 - Ambientes
Aula PIT 3 - AmbientesAula PIT 3 - Ambientes
Aula PIT 3 - Ambientes
 
Cluster
ClusterCluster
Cluster
 
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
 
Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)
 
Automação de Data Center
Automação de Data CenterAutomação de Data Center
Automação de Data Center
 

Mais de Frederico Madeira

Introdução a Cloud Computing
Introdução a Cloud ComputingIntrodução a Cloud Computing
Introdução a Cloud ComputingFrederico Madeira
 
SI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoSI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoFrederico Madeira
 
SI - SAD - Sistemas de Arquivos Distribuídos
SI - SAD  - Sistemas de Arquivos DistribuídosSI - SAD  - Sistemas de Arquivos Distribuídos
SI - SAD - Sistemas de Arquivos DistribuídosFrederico Madeira
 
Proteja seus dados em casa e na internet
Proteja seus dados em casa e na internetProteja seus dados em casa e na internet
Proteja seus dados em casa e na internetFrederico Madeira
 
Linux e o modelo open source
Linux e o modelo open sourceLinux e o modelo open source
Linux e o modelo open sourceFrederico Madeira
 
Redes NGN - Next Generation Networks
Redes NGN - Next Generation NetworksRedes NGN - Next Generation Networks
Redes NGN - Next Generation NetworksFrederico Madeira
 
Ferramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em RedesFerramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em RedesFrederico Madeira
 
Arquiteturas de Gerência de Redes
Arquiteturas de Gerência de RedesArquiteturas de Gerência de Redes
Arquiteturas de Gerência de RedesFrederico Madeira
 
Introdução a Gerência de Redes
Introdução a Gerência de RedesIntrodução a Gerência de Redes
Introdução a Gerência de RedesFrederico Madeira
 
Apresentação da disciplina de Gerência de Redes
Apresentação da disciplina de Gerência de RedesApresentação da disciplina de Gerência de Redes
Apresentação da disciplina de Gerência de RedesFrederico Madeira
 
O Uso de Captchas de Áudio no Combate ao spam em Telefonia IP
O Uso de Captchas de Áudio no Combate ao spam em Telefonia IPO Uso de Captchas de Áudio no Combate ao spam em Telefonia IP
O Uso de Captchas de Áudio no Combate ao spam em Telefonia IPFrederico Madeira
 
Segurança em Redes de Voz Sobre IP
Segurança em Redes de Voz Sobre IPSegurança em Redes de Voz Sobre IP
Segurança em Redes de Voz Sobre IPFrederico Madeira
 

Mais de Frederico Madeira (20)

WebServices
WebServicesWebServices
WebServices
 
IoT - Internet of Things
IoT -  Internet of ThingsIoT -  Internet of Things
IoT - Internet of Things
 
Introdução a Cloud Computing
Introdução a Cloud ComputingIntrodução a Cloud Computing
Introdução a Cloud Computing
 
SI - Comunicação
SI - ComunicaçãoSI - Comunicação
SI - Comunicação
 
SI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoSI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de Código
 
SI - Arquiteturas
SI - ArquiteturasSI - Arquiteturas
SI - Arquiteturas
 
SI - SAD - Sistemas de Arquivos Distribuídos
SI - SAD  - Sistemas de Arquivos DistribuídosSI - SAD  - Sistemas de Arquivos Distribuídos
SI - SAD - Sistemas de Arquivos Distribuídos
 
Proteja seus dados em casa e na internet
Proteja seus dados em casa e na internetProteja seus dados em casa e na internet
Proteja seus dados em casa e na internet
 
Linux e o modelo open source
Linux e o modelo open sourceLinux e o modelo open source
Linux e o modelo open source
 
Redes NGN - Next Generation Networks
Redes NGN - Next Generation NetworksRedes NGN - Next Generation Networks
Redes NGN - Next Generation Networks
 
MRTG - SNMP na Prática
MRTG - SNMP na PráticaMRTG - SNMP na Prática
MRTG - SNMP na Prática
 
Introdução ao SNMP
Introdução ao SNMPIntrodução ao SNMP
Introdução ao SNMP
 
Ferramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em RedesFerramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em Redes
 
Arquiteturas de Gerência de Redes
Arquiteturas de Gerência de RedesArquiteturas de Gerência de Redes
Arquiteturas de Gerência de Redes
 
Introdução a Gerência de Redes
Introdução a Gerência de RedesIntrodução a Gerência de Redes
Introdução a Gerência de Redes
 
Apresentação da disciplina de Gerência de Redes
Apresentação da disciplina de Gerência de RedesApresentação da disciplina de Gerência de Redes
Apresentação da disciplina de Gerência de Redes
 
O Uso de Captchas de Áudio no Combate ao spam em Telefonia IP
O Uso de Captchas de Áudio no Combate ao spam em Telefonia IPO Uso de Captchas de Áudio no Combate ao spam em Telefonia IP
O Uso de Captchas de Áudio no Combate ao spam em Telefonia IP
 
Segurança em Redes de Voz Sobre IP
Segurança em Redes de Voz Sobre IPSegurança em Redes de Voz Sobre IP
Segurança em Redes de Voz Sobre IP
 
Shell Scipt - Comandos
Shell Scipt - ComandosShell Scipt - Comandos
Shell Scipt - Comandos
 
Asterisk Voice Mail
Asterisk Voice MailAsterisk Voice Mail
Asterisk Voice Mail
 

Alta Disponibilidade utilizando Pacemaker e DRBD

  • 1. Sistemas Distribuídos Alta Disponibilidade utilizando Pacemaker Frederico Madeira LPIC­1, LPIC­2, CCNA fred@madeira.eng.br www.madeira.eng.br
  • 2. “Um sistema de alta disponibilidade é aquele que utiliza mecanismos de detecção, recuperação e mascaramento de falhas, visando manter o funcionamento dos serviços durante o máximo de tempo possível, inclusive no decurso de manutenções programadas” Definição – Alta Disponibilidade
  • 3. “Disponibilidade refere-se a capacidade de um usuário de determinado sistema acessar, incluir ou modificar os dados existentes em qualquer intervalo de tempo. Caso, por qualquer que seja o motivo, um usuário não tenha acesso, é dito então que ele está indisponível, sendo o tempo total de indisponibilidade conhecido pelo termo downtime.” Definição – Disponibilidade
  • 4. •Níveis de Disponibilidade Geralmente, quanto maior a disponibilidade, maior a redundância e custo das soluções: tudo depende do tipo de serviço que se pretende disponibilizar
  • 5. • Infraestrutura do Cluster (CMAN, DLM, Fencing) – Provê as principais funções para que os nós trabalhem juntos como um cluster – Gerenciamento dos arquivos de configuração, gerenciamento das associações (membership), lock management e fencing • Gerenciamento de Serviços HA (rgmanager) – Provê failover dos serviços de um cluster para o outro quando o nó fica inoperante Principais Componentes
  • 6. • Ferramentas de Administralçao do Cluster (pacemaker, CCS, Conga) – Ferramentas de configuração e gerenciamento para configurar e criar clusters – Gerencia a alta disponibilidade para uso dos componentes do cluster, serviços e storage Principais Componentes
  • 9. Instalação Cluster Ativo/Passivo ➔ Instalação do Pacemaker stack e ferramenta pcs nos dois nós yum install pacemaker pcs cman ➔ Inicialização do serviço e definição para iniciar no boot do servidor Centos 7 systemctl enable pcsd.service systemctl start pcsd.service systemctl enable pacemaker.service Centos 6 /etc/init.d/pcsd start chkconfig pcsd on chkconfig pacemaker on
  • 10. Instalação ➔ Depois da instalação dos pacotes, um novo usuário chamado hacluster foi criado. Este usuário é usado para sincronização da configuração e gerenciamento dos serviços nos nós. É necessário definir a mesma senha em todos os servidores [root@node1 ~]# passwd hacluster ➔ Desativando o Firewall (esta ação só deve ser feita no lab em sala, em implementações deve ser realizado os ajustes nas regras do firewall) [root@node1 ~]# iptables -F [root@node1 ~]# chkconfig iptables off
  • 11. Instalação ➔ Definir os servidores com IP fixo [root@node2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=52:54:00:2D:9C:7E TYPE=Ethernet UUID=25d96521-de19-4957-b010-a39c0d1280e7 ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.122.204 NETMASK=255.255.255.0 GATEWAY=192.168.122.1 ➔ Inserir hostname no /etc/hosts [root@node1 ~]# vim /etc/hosts 192.168.122.203 node1 192.168.122.204 node2
  • 12. Instalação ➔ Configuração da autenticação entre os dois hosts para que possa ser executado comandos em apenas um dos nós. [root@node1 ~]# pcs cluster auth node1 node2 Username: hacluster Password: node1: Authorized node2: Authorized
  • 13. Instalação ➔ Criando um novo cluster chamado cluster_apache e sincronizado as configurações do corosync entre os nós. [root@node1 ~]# pcs cluster setup --start --name cluster_apache node1 node2 node1: Updated cluster.conf... node2: Updated cluster.conf... Starting cluster on nodes: node1, node2... node1: Starting Cluster... node2: Starting Cluster... Obs: Se receber o erro abaixo, crie nos dois nós a pasta /etc/cluster Error connecting to node1 - (HTTP error: 500) Error: Unable to set cluster.conf
  • 14. Verificando o status do Cluster [root@node1 ~]# pcs status Cluster name: cluster_apache WARNING: no stonith devices and stonith-enabled is not false Last updated: Sun Oct 18 22:33:51 2015 Last change: Sun Oct 18 22:33:10 2015 Stack: cman Current DC: node1 - partition with quorum Version: 1.1.11-97629de 2 Nodes configured 0 Resources configured Online: [ node1 node2 ] Full list of resources:
  • 15. Adicionando recursos: IP VIP Se o cluster estiver online, podemos inserir os recursos no mesmo. Antes prescisaremos desativar o STONITH, pois em nossa configuração não temos nenhum dispositivo para fencing. [root@node1 ~]# pcs property set stonith-enabled=false Adicionando um IP Virtual para nosso cluster, esse recurso será chamado de VirtualIP [root@node1 ~]# pcs resource create VirtualIP IPaddr2 ip=192.168.122.100 cidr_netmask=24
  • 16. Verificando o status do Cluster [root@node1 ~]# pcs status Cluster name: cluster_apache Last updated: Sun Oct 18 22:57:21 2015 Last change: Sun Oct 18 22:55:41 2015 Stack: cman Current DC: node1 - partition with quorum Version: 1.1.11-97629de 2 Nodes configured 1 Resources configured Online: [ node1 node2 ] Full list of resources: VirtualIP (ocf::heartbeat:IPaddr2): Started node1
  • 17. Verificando o status do Cluster [root@node1 ~]# ip addr 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:e0:dc:2a brd ff:ff:ff:ff:ff:ff inet 192.168.122.203/24 brd 192.168.122.255 scope global eth0 inet 192.168.122.100/24 brd 192.168.122.255 scope global secondary eth0 inet6 fe80::5054:ff:fee0:dc2a/64 scope link valid_lft forever preferred_lft forever A partir de um host client ping o IP VIP do cluster [root@node1 ~]# pcs cluster standby node1 [root@node1 ~]# pcs cluster unstandby node1
  • 18. Adicionando recursos: Apache Vamos inserir o apache para rodar em nosso cluster, faça os processos abaixo nos dois nós [root@node1 ~]# yum install httpd O Apache Resource Agent do pacemaker utiliza a página de status do apache para verificar a saúde do serviço. Para ativar a página de status, siga os paços abaixo: [root@node1 ~]# vi /etc/httpd/conf.d/status.conf <Location /server-status> SetHandler server-status Order Deny,Allow Deny from all Allow from 127.0.0.1 </Location>
  • 19. Adicionando recursos: Apache Inserindo o recurso no cluster [root@node1 ~]# pcs resource create httpd ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://127.0.0.1/server-status" op monitor interval=20s Onde: create httpd - é o nome do recurso configfile=/etc/httpd/conf/httpd.conf – é o local do arquivo de configuração do apache Statusurl="http://127.0.0.1/server-status" - Caminho usado para monitorar o status do servidor web op monitor interval=20s – Monitora o serviço a cada 20s
  • 20. Verificando o status do Cluster [root@node1 ~]# pcs status Cluster name: cluster_apache Last updated: Sun Oct 18 23:36:16 2015 Last change: Sun Oct 18 23:33:30 2015 Stack: cman Current DC: node1 - partition with quorum Version: 1.1.11-97629de 2 Nodes configured 2 Resources configured Online: [ node1 node2 ] Full list of resources: VirtualIP (ocf::heartbeat:IPaddr2): Started node1 httpd (ocf::heartbeat:apache): Started node2
  • 21. Adicionando recursos: Apache Os recursos foram distribuidos entro os nós, mas tanto o IP VIP como o Apache precisam rodar no mesmo nó. [root@node1 ~]# pcs resource move httpd
  • 22. Constraint Através das constraint é possível ordenar o startup dos serviços e definir quais recursos devem rodar juntos no mesmo nó. [root@node1 ~]# pcs constraint colocation add VirtualIP httpd INFINITY Mova apenas um recurso para o outro nó e você verá que ambos recursos serão movidos. [root@node1 ~]# pcs resource move httpd nome_do_nó
  • 23. O DRBD (Distributed Replicated Block Device) consiste em um módulo para o kernel Linux que faz o espelhamento dos dados de um dispositivo de bloco (partições de disco) entre diferentes servidores, interligados geralmente através de uma rede Ethernet. DRBD = RAID 1 via Rede Definição -DRBD
  • 24. ➔ Cada dispositivo de bloco envolvido na configuração do DRBD tem um estado, que pode ser primário ou secundário. ➔ Operações de escrita feitas no primário são replicadas para o secundário ➔ O protocolo padrão de replicação garante a sincronia e a integridade dos dados replicados. ➔ Operações de leitura, são sempre realizadas localmente. Funcionamento
  • 25. ➔ O DRBD suporta três distintos modos de replicação, permitindo três graus de sincronnização da replicação. O ➔ Protocolo A é assíncrono. ➔ As operações de escrita no nodo primário são consideradas completas quando a escrita no disco local termina e o pacote de replicação está no buffer TCP. ➔ Em casos de fail-over deve ocorrer perda de dados com este protocolo. Funcionamento
  • 26. ➔ O Protocol B é um semi-síncrono protocolo de replicação. ➔ Operações locais são escritas no nodo primário e são consideradas completas quando estão escritas no diso local e a relpicação do pacote alcançou o outro nodo na rede. ➔ O Protocol C é sincrono por completo. ➔ Com este protocolo as operações no nodo primário são consideradas completas quando ocorre a escrita no nodo primário e no secundário. Funcionamento
  • 28. DRBD - Instalação Nos dois nós [root@node1 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org [root@node1 ~]# rpm -Uvh http://www.elrepo.org/elrepo- release-6-6.el6.elrepo.noarch.rpm [root@node1 ~]# yum install drbd84-utils kmod-drbd84 Adicione um disco de 1Gb na máquina virtual, no meu caso o novo dispositivo foi /dev/vdb em ambas as máquinas
  • 29. DRBD - Configuração Criar e configurar o arquivo de configuração abaixo nos dois nós: [root@node1 ~]# vim /etc/drbd.d/drbd0.res resource drbd0 { disk /dev/vdb1; device /dev/drbd0; meta-disk internal; Protocol C; on node1 { address 192.168.122.203:7789; } on node2 { address 192.168.122.204:7789; } }
  • 30. DRBD - Configuração Inicializando o volume /dev/drbd0 nos dois nós: [root@node1 ~]# drbdadm create-md drbd0 initializing activity log NOT initializing bitmap Writing meta data... New drbd meta data block successfully created. success [root@node2 ~]# drbdadm create-md drbd0 initializing activity log NOT initializing bitmap Writing meta data... New drbd meta data block successfully created. success
  • 31. DRBD - Configuração Ativando o /dev/drbd0 nos dois nós: [root@node1 ~]# drbdadm up drbd0 [root@node2 ~]# drbdadm up drbd0 [root@node1 ~]# cat /proc/drbd version: 8.4.6 (api:1/proto:86-101) GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by phil@Build64R6, 2015-04-09 14:35:00 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:f oos:1048220 O DRBD marcou os dois recursos como inconsistentes pois ainda não foi marcado quem é o nó primário.
  • 32. DRBD - Configuração Marcando o volume do node1 como primário [root@node1 ~]# drbdadm primary --force drbd0 [root@node2 ~]# cat /proc/drbd version: 8.4.6 (api:1/proto:86-101) GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by phil@Build64R6, 2015-04-09 14:35:00 0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r----- ns:0 nr:560232 dw:560232 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:487988 [=========>..........] sync'ed: 53.6% (487988/1048220)K finish: 0:00:25 speed: 18,960 (13,664) want: 21,640 K/sec
  • 33. DRBD - Configuração Após o sincronismo dos dois volumes [root@node1 ~]# cat /proc/drbd version: 8.4.6 (api:1/proto:86-101) GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by phil@Build64R6, 2015-04-09 14:35:00 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:1048220 nr:0 dw:0 dr:1048884 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0 Onde: cs (connection state). Status da conexão de rede. ro (roles). Se o nó é primeira ou secundário ds (disk states). Status dos discos.O primeiro parâmetro representa o disco local e depois da barra representa o nó remoto.
  • 34. DRBD – Criando um FS no recurso DRBD No nó em que o DRBD estiver como primário, vamos criar o FS. Toda ação que for feita no volume /dev/drbd0 será replicada para o outro nó. [root@node1 ~]# mkfs.ext3 /dev/drbd0 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 65536 inodes, 262055 blocks 13102 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=268435456 8 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done
  • 35. DRBD – Testando Siga os passos abaixo a fim de testar a integridade do volume drbd nos dois nós. #Montando o volume /dev/drbd0 e criando conteudo dentro dele [root@node1 ~]# mkdir /media/teste_drbd [root@node1 ~]# mount /dev/drbd0 /media/teste_drbd/ [root@node1 ~]# touch /media/teste_drbd/node1_teste.txt [root@node1 ~]# umount /dev/drbd0 [root@node1 ~]# drbdadm secondary drbd0 [root@node1 ~]# drbd-overview 0:drbd0/0 Connected Secondary/Secondary UpToDate/UpToDate
  • 36. DRBD – Testando Montando o volume DRBD no nó 2 e verificando se o arquivo criado no nó 1 foi replicado. [root@node2 ~]# mkdir /media/teste_drbd [root@node2 ~]# mount /dev/drbd0 /media/teste_drbd/ mount: você precisa especificar o tipo do sistema de arquivos O erro acima ocorreu pois o volume drbd não está como primário neste nó. [root@node2 ~]# drbdadm primary drbd0 [root@node2 ~]# drbd-overview 0:drbd0/0 Connected Primary/Secondary UpToDate/UpToDate [root@node2 ~]# mount /dev/drbd0 /media/teste_drbd/ [root@node2 ~]# ls /media/teste_drbd/ lost+found node1_teste.txt Como o arquivo node1_teste.txt (criado no node1) apareceu, significa que ele foi replicado do node1 para o node2.
  • 37. DRBD – Integrando o FS /dev/drbd0 ao Cluster Nosso cluster está configurado com os seguintes recursos: – IP VIP – Servidor Web Apache Necessário adicionar DRBD como recurso do cluster Desativar o DRBD da inicialização do linux [root@node1 ~]# chkconfig drbd off Desmontar o volume DRBD onde ele estiver montado [root@node1 ~]# umount /dev/drbd0 [root@node2 ~]# umount /dev/drbd0
  • 38. DRBD – Integrando o FS /dev/drbd0 ao Cluster O PCS tem a possibilidade de enfileirar diversos comandos para em seguida aplicá-los todos de uma vez só. Esse recurso é possível através da CIB (Cluster Information Base) [root@node1 ~]# pcs cluster cib drbd_config Através do pcs -f vamos inserir regras dentro do drbd_cofnig. Essas regras só serão inseridas após o push destas configurações. [root@node1 ~]# pcs -f drbd_config resource create DrbdVol ocf:linbit:drbd drbd_resource=drbd0 op monitor interval=60s [root@node1 ~]# pcs -f drbd_config resource master DrbdVolClone DrbdVol master-max=1 master-node-max=1 clone- max=2 clone-node-max=1 notify=true
  • 39. DRBD – Integrando o FS /dev/drbd0 ao Cluster [root@node1 ~]# pcs -f drbd_config resource show VirtualIP (ocf::heartbeat:IPaddr2): Started node1 httpd (ocf::heartbeat:apache): Started node1 Master/Slave Set: DrbdVolClone [DrbdVol] Stopped: [ node1 node2 ] Se as configurações estiverem corretas, podemos agora inserir as configurações no Cluster [root@node1 ~]# pcs cluster cib-push drbd_config CIB updated
  • 40. DRBD – Integrando o FS /dev/drbd0 ao Cluster [root@node1 ~]# pcs status Cluster name: cluster_apache Last updated: Sun Oct 25 16:21:57 2015 Last change: Sun Oct 25 16:20:40 2015 Stack: cman Current DC: node1 - partition with quorum Version: 1.1.11-97629de 2 Nodes configured 4 Resources configured Online: [ node1 node2 ] Full list of resources: VirtualIP (ocf::heartbeat:IPaddr2): Started node1 httpd (ocf::heartbeat:apache): Started node1 Master/Slave Set: DrbdVolClone [DrbdVol] Masters: [ node2 ] Slaves: [ node1 ]
  • 41. DRBD – Integrando o FS /dev/drbd0 ao Cluster Uma vez que o DRBD já está inserido no Cluster, devemos agora inserir um filesystem para ser montado pelo nosso cluster e definir que ele só deve ser montado no nó primário # Add FS [root@node1 ~]# pcs cluster cib fs_config [root@node1 ~]# pcs -f fs_config resource create DrbdFS Filesystem device="/dev/drbd0" directory="/var/www/html" fstype="ext3" # Definindo a constraint [root@node1 ~]# pcs -f fs_config constraint colocation add DrbdFS DrbdVolClone INFINITY with-rsc-role=Master [root@node1 ~]# pcs -f fs_config constraint order promote DrbdVolClone then start DrbdFS Adding DrbdVolClone DrbdFS (kind: Mandatory) (Options: first- action=promote then-action=start)
  • 42. DRBD – Integrando o FS /dev/drbd0 ao Cluster Precisamos definir que o Apache deve rodar no mesmo nó onde o FS estiver ativo e que o FS deve ser montado antes do inicio do apache [root@node1 ~]# pcs -f fs_config constraint colocation add httpd DrbdFS INFINITY [root@node1 ~]# pcs -f fs_config constraint order DrbdFS then httpd Adding DrbdFS httpd (kind: Mandatory) (Options: first- action=start then-action=start)
  • 43. DRBD – Integrando o FS /dev/drbd0 ao Cluster Verificando os recursos e constraint da CIB fs_config [root@node1 ~]# pcs -f fs_config constraint Location Constraints: Resource: httpd Enabled on: node1 (score:INFINITY) (role: Started) Ordering Constraints: promote DrbdVolClone then start DrbdFS (kind:Mandatory) start DrbdFS then start httpd (kind:Mandatory) Colocation Constraints: VirtualIP with httpd (score:INFINITY) DrbdFS with DrbdVolClone (score:INFINITY) (with-rsc- role:Master) httpd with DrbdFS (score:INFINITY)
  • 44. DRBD – Integrando o FS /dev/drbd0 ao Cluster Verificando os recursos e constraint da CIB fs_config [root@node1 ~]# pcs -f fs_config resource show VirtualIP (ocf::heartbeat:IPaddr2): Started node1 httpd (ocf::heartbeat:apache): Started node1 Master/Slave Set: DrbdVolClone [DrbdVol] Masters: [ node2 ] Slaves: [ node1 ] DrbdFS (ocf::heartbeat:Filesystem): Stopped Se tudo estiver certo, podemos fazer o push das configurações [root@node1 ~]# pcs cluster cib-push fs_config CIB updated
  • 45. DRBD – Integrando o FS /dev/drbd0 ao Cluster Verificando o status [root@node1 ~]# pcs status 2 Nodes configured 5 Resources configured Online: [ node1 node2 ] Full list of resources: VirtualIP (ocf::heartbeat:IPaddr2): Started node1 httpd (ocf::heartbeat:apache): Started node1 Master/Slave Set: DrbdVolClone [DrbdVol] Masters: [ node1 ] Slaves: [ node2 ] DrbdFS (ocf::heartbeat:Filesystem): Started node1
  • 46. Testando ➔ Coloque o nó 1 em standby e observe que o a pasa /var/www/html está vazia. No nó 2 ela será montada com todo o conteúdo apresentado no nó 1 antes do standby. [root@node1 ~]# pcs cluster standby node1 ➔ Faça com que o nó 1 reassuma. Verifique o status do device /dev/drbd0 e dos dados na pasta /var/www/html [root@node1 ~]# pcs cluster unstandby node1
  • 47. Sistemas Distribuídos Alta Disponibilidade utilizando Heartbeat + drbd Frederico Madeira LPIC­1, LPIC­2, CCNA fred@madeira.eng.br www.madeira.eng.br