Anda di halaman 1dari 27

Alta disponibilidade

com PostgreSQL
Leonardo Cezar, FISL #14 Porto Alegre

quinta-feira, 4 de julho de 13 1
Sobre o palestrante
DBA por profisso h mais de 10 anos;
Desenvolvedor por diverso;
Colaborador em alguns projetos opensource notavelmente
relacionados ao PostgreSQL;
Colaborador (quase ausente) na comunidade PostgreSQL
Brasil.
Atualmente trabalhando na DATAPREV
Dados Abertos; GIS; Big Data; BI; PostgreSQL
quinta-feira, 4 de julho de 13 2
Agenda

Alta disponibilidade
Redundncia
Balanceamento de carga
Arquitetura
Ferramentas

quinta-feira, 4 de julho de 13 3
O que alta disponibilidade?

Sistema resiliente com


suporte e preveno
falhas externas em seus
subsistemas.

quinta-feira, 4 de julho de 13 4
Princpios da AD

Planejamento
Redundncia
Persistncia
Simplicidade (KIS)

quinta-feira, 4 de julho de 13 5
Como identificar?
Acordo de Nvel de Servio
Requisitos no-funcionais
Carga transacional
Tempo de indisponibilidade (downtime)
Servios parados impactam?

quinta-feira, 4 de julho de 13 6
Objetivo

Aumentar o tempo mdio entre falhas (MTBF)


Reduzir o tempo mdio entre reparos (MTTR)
Minimizar a perda de dados
Prover escalabilidade

quinta-feira, 4 de julho de 13 7
Objetivo

Reduzir SPOFs (pontos de falha)


Reduo de downtime (perodo de inatividade)
Prover redundncia (hardware e software)

quinta-feira, 4 de julho de 13 8
Indisponibilidade
Programada
Manuteno, atualizao
No programada
Falha de rede
Falha de software
Falha de hardware
quinta-feira, 4 de julho de 13 9
Indisponibilidade no programada
dias indisponveis
20

18
15
14

10
10

7
5

3
0
95,00% 96,00% 97,00% 98,00% 99,00% 0
99,9%

quinta-feira, 4 de julho de 13 10
Redundncia

Provisionar hardware extra (preferencialmente com as


mesmas caractersticas)
Disponibilizar contingncia de componentes de software e
servios
Replicar informaes e dados

quinta-feira, 4 de julho de 13 11
Solues de replicao

Disco compartilhado (no duplica os dados)


Rplica de storage
Cpia de sistema de arquivos
Replicao de instruo SQL
Replicao baseada em gatilhos

quinta-feira, 4 de julho de 13 12
Utilitrios
Log Shipping PgPool-II
Streaming Replication
Slony
PgCluster
Postgres-XC
RubyRep
XDB
DRBD
PyReplica

OMNIpitr
Londiste Sequoia

Wal-E
Bucardo repmgr

quinta-feira, 4 de julho de 13 13
Qual utilizar?

Depende... :-)
Requisitos funcionais
Maturidade da soluo
Suporte

quinta-feira, 4 de julho de 13 14
Balanceamento de carga

Distribuio de carga em mltiplos servidores


Hot Standby (servidor em modo leitura)

quinta-feira, 4 de julho de 13 15
PgPool-II
pgpool.conf
backend_hostname0 = node1
backend_weight0 = 1
backend_hostname1 = node2
backend_weight1 = 1
replication_mode = false
master_slave_mode = true
master_slave_sub_mode = stream
load_balance_mode = true
enable_query_cache = true

quinta-feira, 4 de julho de 13 16
Agrupadores de conexo

Mantm um cache das conexes com o banco de dados


Desonera o impacto das conexes
Essencial quando existem muitas conexes (portal web, por
exemplo)

quinta-feira, 4 de julho de 13 17
PgBouncer
pgbouncer.ini

[databases]
dbfoo = host=localhost dbname=postgres
listen_addr = *
[pgbouncer]
pool_mode = transaction
min_pool_size = 2000
[...]

quinta-feira, 4 de julho de 13 18
Replicao nativa no Postgres
Master/Slave
Arquivos de log de transao (WAL)
Warm standby
Hot standby
Streaming Replication ([as]sncrono SR)
Bases mais consistentes
Streaming de registros WAL (walsender/walreceiver)
quinta-feira, 4 de julho de 13 19
Streaming Replication
postgresql.conf
wal_level = hot_standby
max_wal_senders = 5
wal_keep_segments = 32
archive_command = rsync %p foo@bar:/
archive/%f

quinta-feira, 4 de julho de 13 20
Streaming Replication (cont.)
pg_basebackup -H <host> -R -D $PGDATA
recovery.conf
primary_conninfo = host=node1

pg_ctl start
pg_ctl promote # switchover

quinta-feira, 4 de julho de 13 21
Sistema operacional AD
Pacemaker
gerenciador de recursos
Corosync
Camada de mensagens
Resource Agent (RA)
Scripts para controle do servio (LSB ou OCFs)
quinta-feira, 4 de julho de 13 22
Arquitetura SR

quinta-feira, 4 de julho de 13 23
Bucardo multimaster
Configurao bucardo
# aptitude install bucardo
# bucardo install
# bucardo add database foo host=node1
# bucardo add database bar host=node2
# bucardo add all tables db=foo
# bucardo add sync foobar source=default
targetdb=bar
# bucardo start

quinta-feira, 4 de julho de 13 24
O que vem por a?
Replicao multimaster nativa
BIDR (BiDirection Replication)
LLSR (Logical Log Streaming Replication)
1o. passo postgres 9.3
fast failover
arquitetura independente e remastering
BgWorkers customizados
quinta-feira, 4 de julho de 13 25
Prximos eventos
Conferncia PostgreSQL PGBR 2013 (antigo PgCon)
15-17, agosto
Brasil, Porto Velho, RO
http://pgbr.postgresql.org.br
Postgres Open 2013; 16-18, setembro, Chicago, US
http://postgresopen.org/
PostgreSQL Conference Europe, Dublin, Ireland
http://2013.pgconf.eu/
quinta-feira, 4 de julho de 13 26
Obrigado!

lhcezar
lhcezar
lhcezar

quinta-feira, 4 de julho de 13 27

Anda mungkin juga menyukai