O documento discute técnicas para implementar alta disponibilidade em servidores Linux. Ele aborda conceitos como redundância de fontes de alimentação e discos, particionamento flexível com LVM, balanceamento de carga de rede com bonding e redundância de firewalls com KeepAlived. O palestrante também apresenta como configurar essas técnicas e discute clusters de alta disponibilidade para aplicações.
1. Linux Day Impacta
...
Implementando Alta Disponibilidade
em Servidores Linux
Administração de Sistemas e Alta Disponibilidade
Jansen Sena
Setembro, 2012.
São Paulo, SP.
Prof. M.Sc. Jansen Sena – Copyleft (2012)
2. Sobre o palestrante
● Formação acadêmica e técnica
● Mestrado pelo Instituto de Computação da Unicamp/SP
– Segurança de redes
– Administração de sistemas Unix/Linux
● LPI Certified Professional (LPIC1 / LPIC2)
● ITIL Foundations Certified
● Atividades atuais
● Atech Tecnologias Críticas (www.atech.com.br)
● Consultor de TI, sw livre e segurança
● http://www.jsena.info
Prof. M.Sc. Jansen Sena – Copyleft (2012)
3. Vamos começar?
# /etc/init.d/palestra start
Prof. M.Sc. Jansen Sena – Copyleft (2012)
5. O básico...
● Fontes de alimentação redundantes em circuitos elétricos
distintos
● Cenário nem sempre é possível em hardwares mais simples
● Discos rígidos
● Utilização de RAID 1, RAID 5, RAID 5 + 0, RAID 6 e outras
combinações são fundamentais
● Solução a ser utilizada depende de cada cenário
● Particionamento
● Partições separadas para sistemas de arquivos mais relevantes
– Não há regra geral para todos os ambientes...
– Decisões, novamente, dependem de cada situação!
Prof. M.Sc. Jansen Sena – Copyleft (2012)
6. O básico...
● Particionamento (cont.)
● Uso do LVM (Logical Volume Manager) é importante para
evitar problemas de realocação de espaço.
● Controle restrito sobre os repositórios adicionados ao
gerenciador de pacotes;
● Imagens do sistema operacional são “truques”
interessantes... e salvadores! :)
● Clonezilla pode ser uma simples e interessante opção
– Alternativa em software livre ao Norton Ghost
● http://www.clonezilla.org
Prof. M.Sc. Jansen Sena – Copyleft (2012)
7. E agora?
LVM: Partições mais “flexíveis”
Prof. M.Sc. Jansen Sena – Copyleft (2012)
8. LVM
● Logical Volume Manager
● Recurso presente na grande maioria das distribuições Linux
● Maneira versártil e eficiente de trabalhar com “partições”
● Operações em tempo real (hot swap)
– Tamanho das partições
– Capacidade do VG
● Backups através do mecanismo de snapshots
● Interface de comando simples e bem documentada
Prof. M.Sc. Jansen Sena – Copyleft (2012)
9. LVM
● Logical Volume Manager
Prof. M.Sc. Jansen Sena – Copyleft (2012)
11. LVM
● Colocando as mãos na massa no “feijão com arroz”
● Cria um Physical Volume com a partição /dev/sda3
– Tipo da partição pelo fdisk: 8e
# pvcreate /dev/sda3
● Cria um Volume Group (VG) usando o PV anterior
# vgcreate VG01 /dev/sda3
● Cria Logical Volumes (LV) dentro do VG criado anteriormente
# lvcreate L 35G n lvol_dados01 VG01
# lvcreate L 12G n lvol_tmp VG01
● Formata LV
# mkfs.ext4 /dev/VG01/lvol_dados01
Prof. M.Sc. Jansen Sena – Copyleft (2012)
12. E agora?
Placas de Rede em Alta
Disponibilidade
Prof. M.Sc. Jansen Sena – Copyleft (2012)
13. Network bonding
● Network bonding
● Recurso presente no kernel do GNU/Linux
● Faz com que várias interfaces de rede comportemse como
uma única placa de rede “virtual”
– Falhas físicas nas conexões de rede são transparentes para
aplicações e para os usuários do sistema operacional
● Do ponto de vista das aplicações e dos usuários, a interface
virtual é como qualquer outra
– Exemplo: iptables cria regras considerando a interface de rede virtual
(e.g. “bond0”)
● Recurso muito pouco documentado e difundido entre
adminstradores de sistemas GNU/Linux.
Prof. M.Sc. Jansen Sena – Copyleft (2012)
14. O antes e o depois...
eth0 (192.168.10.1)
eth1 (192.168.20.1) Servidor padrão sem
eth2 (192.168.30.1) Network Bonding
eth3 (192.168.40.1)
bond0 (192.168.10.1)
eth0
eth1 Servidor padrão com
eth2 Network Bonding
eth3
Prof. M.Sc. Jansen Sena – Copyleft (2012)
15. Um cenário real
bond1 bond0
(192.168.20.1) (200.10.20.30)
eth4 eth0
REDE eth5 eth1
MGMT eth6 eth2 REDE EXTERNA
eth7 eth3
eth10
eth11
eth8
eth9
bond2
(192.168.10.1)
REDE STORAGE
Prof. M.Sc. Jansen Sena – Copyleft (2012)
16. HandsOn
● Como configurar o network bonding?
● Instalar pacote ifenslave...
# apt-get install ifenslave-2.6
● …e editar o arquivo /etc/network/interfaces
Prof. M.Sc. Jansen Sena – Copyleft (2012)
17. HandsOn
● Está funcionando?
Prof. M.Sc. Jansen Sena – Copyleft (2012)
18. E agora?
Firewalls e Alta Disponibilidade
Prof. M.Sc. Jansen Sena – Copyleft (2012)
19. E a redundância entre firewalls?
bond0 bond1
G (192.168.10.1) (192.168.20.1) AY
AT EW
EW
GAT
AY
192.168.10.X 192.168.10.254 192.168.20.254 192.168.20.X
ethX
ethY
(IP VIRTUAL) (IP VIRTUAL)
AY
EW
G
AT
AT
G
E
bond1
W
bond0
AY
(192.168.10.2) (192.168.20.2)
Prof. M.Sc. Jansen Sena – Copyleft (2012)
20. Qual é a nossa solução?
● KeepAlived
● http://www.keepalived.org;
● GNU General Public License;
● Presente nos repositórios da maioria das distribuições;
– Debian GNU/Linux, Ubuntu Linux, Fedora, …
● Implementação livre do protocolo VRRPv2;
– Virtual Router Redundancy Protocol;
● Daemon do KeepAlived deve ser executado em todas as
máquinas que fazem parte do “cluster”.
Prof. M.Sc. Jansen Sena – Copyleft (2012)
21. Configurando o KeepAlived
● Como sempre, o primeiro passo é instalar!
# apt-get install keepalived
● Configurações do KeepAlived ficam no arquivo
/etc/keepalived/keepalived.conf
● São declarados grupos de recursos que precisam estar em alta
disponibilidade;
● Scripts customizados podem ser configurados para serem
executados em mudanças...
– Transformação de um node em MASTER;
– Transformação de um node em SLAVE;
– Ocorrências de falhas.
Prof. M.Sc. Jansen Sena – Copyleft (2012)
22. keepalived.conf do MASTER
Scripts
customizados
Recurso a ser
mantido em HA
Rotas
adicionadas
Prof. M.Sc. Jansen Sena – Copyleft (2012)
23. keepalived.conf do SLAVE
No caso do
SLAVE, o valor
do campo
priority
deve ser menor
que o valor
inserido no
MASTER
Prof. M.Sc. Jansen Sena – Copyleft (2012)
24. E agora?
● Iniciando o KeepAlived em seus firewalls...
/etc/init.d/keepalived start
● Assim que os daemons são inicializados, os firewalls já
assumem a posição de MASTER e/ou SLAVE.
Prof. M.Sc. Jansen Sena – Copyleft (2012)
25. E agora?
● /var/log/syslog (MASTER)
Prof. M.Sc. Jansen Sena – Copyleft (2012)
26. E agora?
● /var/log/syslog (SLAVE)
Prof. M.Sc. Jansen Sena – Copyleft (2012)
27. IPs virtuais no firewall MASTER
● Comando “ip addr show” apresenta os IPs virtuais
configurados no firewall MASTER
Prof. M.Sc. Jansen Sena – Copyleft (2012)
28. Alguns comentários...
● Scripts de regras entre ambos os firewalls precisam ser
exatamente iguais...
● Caso contrário, chaveamento entre firewalls MASTER e SLAVE
podem provocar problemas.
● Regras voltadas para as máquinas clientes devem
sempre considerar os IPs virtuais;
● Isso torna o chaveamento entre MASTER e SLAVE
transparente para todos os clientes da rede;
● IPs “diretos” devem ser utilizados apenas para regras
referentes aos acessos dos próprios fw's
Prof. M.Sc. Jansen Sena – Copyleft (2012)
29. Alguns comentários...
● Atualizações devem ser “síncronas” entre ambos os
firewalls!!!
● Caso contrário, um pode estar “menos seguro” que o outro!
Esse é um risco silencioso!
● Existem boas alternativas para resolver...
● Cenário apresentado considera a utilização de regras
convencionais;
● Sem o uso do recurso do iptables para gerar regras com base
nos estados das conexões TCP;
● Se esse for o caso, é necessário acrescentar outro
componente na estrutura: conntrackd.
Prof. M.Sc. Jansen Sena – Copyleft (2012)
31. Clusters para aplicações
● Existem diversas soluções e combinações possíveis
● Pode ser utilizada mesmo em ambientes com restrições
de recursos
● É capaz de manter as aplicações operacionais mesmo
diante de falhas de hardware e software
● Efeitos de “bugs” podem ser minimizados para usuários
até que uma solução definitiva seja adotada
● Permite testes de novas configurações com menor risco
Prof. M.Sc. Jansen Sena – Copyleft (2012)
32. Estrutura básica de cluster de HA
REDE EXTERNA
REDE Número
PRIVADA
escalável de
servidores
node01 node02
STORAGE
Dados
Storage
compartilhados
Prof. M.Sc. Jansen Sena – Copyleft (2012)
33. Hora de terminar...
# /etc/init.d/palestra stop
Prof. M.Sc. Jansen Sena – Copyleft (2012)