FreeBsd com Alta Disponibilidade

35
FreeBSD com Alta Disponibilidade Denis Augusto ([email protected]) Comece pequeno, pense grande, cresça rápido”

description

Boteco 4Linux - 02/12/08Tema: FreeBsd com Alta DisponibilidadePalestrante: Denis Souza

Transcript of FreeBsd com Alta Disponibilidade

Page 1: FreeBsd com Alta Disponibilidade

FreeBSD com Alta Disponibilidade

Denis Augusto

([email protected])

“Comece pequeno, pense grande, cresça rápido”

Page 2: FreeBsd com Alta Disponibilidade

Agenda

• Visão geral

– O que é FreeBSD?

– Para que usar FreeBSD?

– Novidades para pensar

• O que é Alta Disponibilidade?

• Ferramentas com FreeBSD em Alta Disponibilidade

– CARP (Common Address Redundancy Protocol)

– RAID (Redundant Array of Independent Drives )

– Snapshots

– ZFS (Zettabyte File System)

– Sistemas iSCSI

• Aplicações práticas

• Links recomendados

Page 3: FreeBsd com Alta Disponibilidade

O que é FreeBSD

Sistema Operacional

Específico para

Servidores

Derivado do

386BSD (1993)

SO muito customizável

com recursos de

storage

Page 4: FreeBsd com Alta Disponibilidade

Para que usar FreeBSD?

• Multitarefa preemptiva com ajuste dinâmico de prioridades e

algoritmos para a proteção de áreas de memória;

• O mais popular sistema BSD;

• Para aplicações de grande I/O de disco

– o Servidores de bases de dados;

– o Aplicações de imagem e vídeo;

• Uso de Storages;

• Servidores para resolução de nomes DNS;

• Para execução eficiente de binários pertencentes a outros sistemas

operacionais, principalmente de Linux;

• Serviços de Web Proxy, Web Cache, Web Servers, roteadores,

impressão, correio eletrônico, roteadores e muito mais;

• Concentra o record de armazenamento de 2TBytes em um único

sistema operacional.

Page 5: FreeBsd com Alta Disponibilidade

O Gerente de TI é a Assim?

Page 6: FreeBsd com Alta Disponibilidade

O Gerente de TI

Page 7: FreeBsd com Alta Disponibilidade

Pontos de Preocupação

Desempenho

Segurança

Estabilidade

Gerenciamento

Proteção de

Ativos

Page 8: FreeBsd com Alta Disponibilidade

Proteção de Ativos

1

Page 9: FreeBsd com Alta Disponibilidade

Novidades para Pensar

“Como configurar o acesso a porta 22/TCP feito por 20 origens

diferentes?”

Em Linux (20 vezes a mesma linha):

/usr/sbin/iptables -v -A INPUT -p tcp -s IPfonte/32 --destination-port 22 -j ACCEPT

Usando Packet Filter (Uma Só linha):

pass in from <Tabela_IPs_Fonte> to $Interface_Externa port = 22 queue SSH

Page 10: FreeBsd com Alta Disponibilidade

O que é Alta Disponibilidade?

• Conceito Geral

• Alta Disponibilidade X SLA (Service Level Agreement)

– Para que serve o SLA?

– Usando MTBF (Mean Time Between Failures/Tempo Médio Entre Falhas)

– Usando MTTR (Mean Time To Repair/Tempo Médio para Recuperação)

– Disponibilidade = MTBF / (MTBF + MTTR)

– Alta Disponibilidade X Custos

Nível do SLA Downtime/mês Downtime/ano

95% 1 dias 12:00:00h 18 dias 6:00:00h

96% 1 dias 4:48:00h 14 dias 14:24:00h

97% 0 dias 21:36:00h 10 dias 22:48:00h

98% 0 dias 14:24:00h 7 dias 7:12:00h

99% 0 dias 7:12:00h 3 dias 15:36:00h

99,9% 0 dias 0:43:11.99h 0 dias 8:45:35.99h

99,99% 0 dias 0:04:19.20h 0 dias 0:52:33.60h

99,999% 0 dias 0:00:25.92h 0 dias 0:05:15.36h

Page 11: FreeBsd com Alta Disponibilidade

Exemplo

Page 12: FreeBsd com Alta Disponibilidade

Ferramentas com FreeBSD

• Baseado nas RFCs RFC3768 e RFC2281

• Compilando no Kernel com a opção

device carp

• Simples uso

• Nativo do kernel

• Seguro

– criptografia e senha para autenticação

• CARP com interfaces de sincronia (pfsync)

Page 13: FreeBsd com Alta Disponibilidade

Ferramentas com FreeBSD

• Funcionamento Geral

Page 14: FreeBsd com Alta Disponibilidade

Ferramentas com FreeBSD

• Customizando o Kernel

Variável Descrição

net.inet.carp.allow Aceita pacotes CARP entrando pelas interfaces ou não. O padrão é 1 (ativado).

net.inet.carp.preempt

Ativa os hosts que participam do grupo CARP e verificar melhor a ausência do

host master. Esta opção ativa em todas as interfaces a verificação de falha

(failover). Esta opção é desabilitada por padrão.

net.inet.carp.log Registra em log os pacotes CARP ruins. O padrão é 1(ativado).

net.inet.carp.arpbalance

Balanceamento de carga sob múltiplos grupos de redundância. Isto é aplicado a

operações de balanceamento de carga (load balance). O padrão é 0

(desabilitado).

net.inet.ip.same_prefix_carp_onlyEvita o conflito de endereços IP quando um mesmo esdereço é usado por clientes

distintos.

net.inet.carp.suppress_preemptO estado de failover pode ser manualmente suprimido se a interface do pfsync

não estiver funcionando ou se o link estar ausente.

Page 15: FreeBsd com Alta Disponibilidade

Proteção de Ativos

2

Page 16: FreeBsd com Alta Disponibilidade

Ferramentas com FreeBSD

• O que é RAID (Redundant Array of Independent Drives)?

• Auxílio na performance e na redundância

• Exemplos: RAID 0, RAID 1, RAID 5 e RAID 0+1

“Deus salve os pessimistas, pois eles inventaram o backup."

Anônimo

Page 17: FreeBsd com Alta Disponibilidade

Ferramentas com FreeBSD

• O que é RAID 0?

Page 18: FreeBsd com Alta Disponibilidade

Ferramentas com FreeBSD

• O que é RAID 1?

Page 19: FreeBsd com Alta Disponibilidade

Ferramentas com FreeBSD

• O que é RAID 5?

Page 20: FreeBsd com Alta Disponibilidade

Ferramentas com FreeBSD

• O que é RAID 0+1?

Page 21: FreeBsd com Alta Disponibilidade

Ferramentas com FreeBSD

• O que são Snaphots?

Page 22: FreeBsd com Alta Disponibilidade

Ferramentas com FreeBSD

• O que são ZFS?

• Sistema desenvolvido pela Sun Microsystems

• Específico para storages

• Características

– O tamanho máximo de arquivos é de 16EiB (264 bytes);

– Numero máximo de arquivos na ordem de 248 (281.474.976.710.656);

– Tamanho em bytes para nomes de arquivos: 255;

– Tamanho máximo para cada volume usado 16EiB;

– Podemos ter até 264 snapshots em um sistema de arquivos ZFS;

– Os dados armazenados podem superar facilmente sistemas de 64bits;

– Sistemas stripes dinâmicos;

• 1 exbibyte = 260 bytes = 1,152,921,504,606,846,976 bytes = 1,024

pebibytes e 1 pebibyte = 250 bytes = 1,125,899,906,842,624 bytes =

1,024 tebibytes e 1 tebibyte = 240 bytes = 1,099,511,627,776 bytes =

1,024 gibibytes

Page 23: FreeBsd com Alta Disponibilidade

Ferramentas com FreeBSD

• O que são Sistemas iSCSI?

– padrão de comunicação definido pela RFC 3720 para acesso remoto a blocos

de dados em ambientes de storage

Servidor de Banco

de DadosServidor de

E-Mail

Servidor FTPServidor de

Vídeo

Servdiro Web

iSCSI Initiator iSCSI Initiator iSCSI Initiator iSCSI Initiator iSCSI Initiator

Servidor iSCSI

iSCSI Target

Disco Virtual 1

Disco Virtual 2

Disco Virtual N

Page 24: FreeBsd com Alta Disponibilidade

Proteção de Ativos

3

Page 25: FreeBsd com Alta Disponibilidade

Vendo na Prática

• Criando um sistema em CARP

# sysctl -w net.inet.carp.allow=1

# ifconfig carp1 create

# ifconfig carp1 vhid 1 pass P@ssw0rd carpdev em0 advskew 100 10.0.0.1

255.255.255.0

# ifconfig carp1

carp1: flags=8802<UP,BROADCAST,SIMPLEX,MULTICAST> mtu 1500

carp: MASTER carpdev em0 vhid 1 advbase 1 advskew 100

inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255

Page 26: FreeBsd com Alta Disponibilidade

Vendo na Prática

• RAID 0

# kldload geom_stripe

# gstripe create stripefs /dev/da0 /dev/da1

# bsdlabel -wB /dev/stripe/stripefs

Agora é basta formatar e disponibilizar para uso:

# newfs /dev/stripe/stripefs

/dev/stripe/stripefs: 149504.0MB (306184192 sectors) block size 16384, fragment

size 2048

using 814 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.

super-block backups (for fsck -b #) at:

160, 376512, 752864, 1129216, 1505568, ... ... ...

#

# mkdir /mnt/stripe

# mount /dev/stripe/stripefs /mnt/stripe/

# gstripe load

Page 27: FreeBsd com Alta Disponibilidade

Vendo na Prática

• RAID 0

– Vendo o status dos discos

# gstripe status

Name Status Components

stripe/stripefs UP da0

da1

– Parando o stripe (RAID 0):

# umount /mnt/stripe

# gstripe stop stripefs

Page 28: FreeBsd com Alta Disponibilidade

Vendo na Prática

• RAID 0+1

Page 29: FreeBsd com Alta Disponibilidade

Vendo na Prática

• RAID 0+1

# kldstat

Id Refs Address Size Name

1 9 0xc0400000 906518 kernel

2 1 0xc0d07000 6a32c acpi.ko

3 1 0xc23db000 22000 linux.ko

5 1 0xc2682000 15000 geom_mirror.ko

6 1 0xc26c0000 7000 geom_stripe.ko

Crie os stripes envolvendo os dois pares de discos

Page 30: FreeBsd com Alta Disponibilidade

Vendo na Prática

• RAID 0+1

# gmirror label -v -b round-robin mirrorfs2 /dev/stripe/stripefs1 /dev/stripe/stripefs2

Metadata value stored on /dev/stripe/stripefs1.

Metadata value stored on /dev/stripe/stripefs2.

Done.

# mkdir /mnt/espelhamento

# newfs /dev/mirror/mirrorfs2

/dev/mirror/mirrorfs2: 149504.0MB (306184188 sectors) block size 16384, fragment

size 2048

using 814 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.

super-block backups (for fsck -b #) at:

160, 376512, 752864, 1129216, 1505568, 1881920, 2258272, 2634624, 3010976,

3387328, 3763680, 4140032, 4516384, 4892736, 5269088, 5645440,

6021792, 6398144, 6774496, 7150848, 7527200, ... ... ...

# mount /dev/mirror/mirrorfs2 /mnt/espelhamento

Page 31: FreeBsd com Alta Disponibilidade

Vendo na Prática

• Snapshots

Criando:

# mkdir /usr/snapshots

# mksnap_ffs /usr /usr/snapshots/snapshot_usr.snap

Montando:

# mdconfig –a –t vnode –f /usr/snapshot/snapshot_usr.snap

WARNING: opening backing store: /usr/snapshot/snapshot_usr.snap readonly md0

# mkdir /mnt/snapshot_testes

# mount –r /dev/md0 /mnt/snapshot_testes

Removendo:

# umount /mnt/snapshot_testes

# mdconfig –d –u 0

Page 32: FreeBsd com Alta Disponibilidade

Vendo na Prática• Sistemas iSCSI

• Utilitário iscsi-target do NetBSD (/usr/ports/net/iscsi-target)

• Exempllo para o arquivo de configuração

# Storage Arquivo início Tamanho

extent0 /mnt/iSCSI/iscsi-target0 0 100MB

# target flags Storage Rede ou maquina para acesso

target0 rw extent0 192.168.241.0/24

• Iniciando o serviço

# /usr/local/etc/rc.d/iscsi_target start

Starting iscsi_target.

Reading configuration from `/usr/local/etc/iscsi/targets'

target0:rw:192.168.241.0/24

extent0:/mnt/iSCSI/iscsi-target0:0:104857600

DISK: 1 logical unit (204800 blocks, 512 bytes/block), type iscsi fs

DISK: LUN 0: 100 MB disk storage for "target0"

TARGET: TargetName is iqn.1994-04.org.netbsd.iscsi-target

Page 33: FreeBsd com Alta Disponibilidade

Vendo na Prática• Um Sistemas iSCSI Seguro

Page 34: FreeBsd com Alta Disponibilidade

Links Recomendados

• Alta Disponibilidade:

http://pt.wikipedia.org/wiki/Sistema_de_alta_disponibilidade

• Site de Jorge Castro (Gestão de TI, ITIL, Gestão de Processos de

Negócio)

– (http://webinsider.uol.com.br/index.php/author/jorge_castro)

• VMware High Availability (HA)

– (http://www.vmware.com/products/vi/vc/ha.html)

• How to install FreeBSD 7.0 under ZFS

– (https://www.ish.com.au/solutions/articles/freebsdzfs)

• WHEN TO (AND NOT TO) USE RAID-Z

– (http://blogs.sun.com/roller/page/roch?entry=when_to_and_not_to)

• ZFS, Sun's Cutting-Edge File System (Part 2: Ease of

Administration and Future Enhancements)

– (http://www.sun.com/bigadmin/features/articles/zfs_part2_ease.jsp)

• Official Linux Unionfs home page

– (http://unionfs.filesystems.org/)

Page 35: FreeBsd com Alta Disponibilidade