alta disponibilidade com postgresql

27
Alta disponibilidade com PostgreSQL Leonardo Cezar, FISL #14 – Porto Alegre 1 quinta-feira, 4 de julho de 13

Upload: leonardo-cezar

Post on 05-Jul-2015

1.383 views

Category:

Technology


12 download

DESCRIPTION

Esta palestra demonstra alguns elementos relacionados à alta disponibilidade com PostgreSQL. São discutidos assuntos como redundância, replicação e utilitários de gerenciamento de ambientes de contingência: log shipping, WAL, streaming replication e outros. Espero que seja útil, faça uma boa leitura e qualquer dúvida contate-me!

TRANSCRIPT

Page 1: Alta disponibilidade com PostgreSQL

Alta disponibilidade com PostgreSQL

Leonardo Cezar, FISL #14 – Porto Alegre

1quinta-feira, 4 de julho de 13

Page 2: Alta disponibilidade com PostgreSQL

Sobre o palestranteDBA por profissão há mais de 10 anos;

Desenvolvedor por diversão;

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; PostgreSQL2quinta-feira, 4 de julho de 13

Page 3: Alta disponibilidade com PostgreSQL

Agenda

Alta disponibilidade

Redundância

Balanceamento de carga

Arquitetura

Ferramentas

3quinta-feira, 4 de julho de 13

Page 4: Alta disponibilidade com PostgreSQL

O que é alta disponibilidade?

Sistema resiliente com suporte e prevenção à falhas externas em seus subsistemas.

4quinta-feira, 4 de julho de 13

Page 5: Alta disponibilidade com PostgreSQL

Princípios da AD

Planejamento

Redundância

Persistência

Simplicidade (KIS)

5quinta-feira, 4 de julho de 13

Page 6: Alta disponibilidade com PostgreSQL

Como identificar?

Acordo de Nível de Serviço

Requisitos não-funcionais

Carga transacional

Tempo de indisponibilidade (downtime)

Serviços parados impactam?

6quinta-feira, 4 de julho de 13

Page 7: Alta disponibilidade com PostgreSQL

Objetivo

Aumentar o tempo médio entre falhas (MTBF)

Reduzir o tempo médio entre reparos (MTTR)

Minimizar a perda de dados

Prover escalabilidade

7quinta-feira, 4 de julho de 13

Page 8: Alta disponibilidade com PostgreSQL

Objetivo

Reduzir SPOFs (pontos de falha)

Redução de downtime (período de inatividade)

Prover redundância (hardware e software)

8quinta-feira, 4 de julho de 13

Page 9: Alta disponibilidade com PostgreSQL

IndisponibilidadeProgramada

Manutenção, atualização

Não programada

Falha de rede

Falha de software

Falha de hardware

9quinta-feira, 4 de julho de 13

Page 10: Alta disponibilidade com PostgreSQL

Indisponibilidade não programada

0

5

10

15

20

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

18

14

10

7

3

0

dias indisponíveis

10quinta-feira, 4 de julho de 13

Page 11: Alta disponibilidade com PostgreSQL

Redundância

Provisionar hardware extra (preferencialmente com as mesmas características)

Disponibilizar contingência de componentes de software e serviços

Replicar informações e dados

11quinta-feira, 4 de julho de 13

Page 12: Alta disponibilidade com PostgreSQL

Soluções de replicação

Disco compartilhado (não duplica os dados)

Réplica de storage

Cópia de sistema de arquivos

Replicação de instrução SQL

Replicação baseada em gatilhos

12quinta-feira, 4 de julho de 13

Page 13: Alta disponibilidade com PostgreSQL

Utilitários

Bucardo

PgClu

ster

RubyRep

PyRe

plicaLog Shipping

Londiste

Postgres-XCSlony

XDB

repmgr

Streaming Replication

OMNI

pitr

SequoiaDRBD

PgPool-IIWal-E

13quinta-feira, 4 de julho de 13

Page 14: Alta disponibilidade com PostgreSQL

Qual utilizar?

Depende... :-)

Requisitos funcionais

Maturidade da solução

Suporte

14quinta-feira, 4 de julho de 13

Page 15: Alta disponibilidade com PostgreSQL

Balanceamento de carga

Distribuição de carga em múltiplos servidores

Hot Standby (servidor em modo leitura)

15quinta-feira, 4 de julho de 13

Page 16: Alta disponibilidade com PostgreSQL

PgPool-IIpgpool.conf

backend_hostname0 = ‘node1’backend_weight0 = 1backend_hostname1 = ‘node2’backend_weight1 = 1replication_mode = falsemaster_slave_mode = truemaster_slave_sub_mode = ‘stream’load_balance_mode = trueenable_query_cache = true

16quinta-feira, 4 de julho de 13

Page 17: Alta disponibilidade com PostgreSQL

Agrupadores de conexão

Mantém um cache das conexões com o banco de dados

Desonera o impacto das conexões

Essencial quando existem muitas conexões (portal web, por exemplo)

17quinta-feira, 4 de julho de 13

Page 18: Alta disponibilidade com PostgreSQL

PgBouncerpgbouncer.ini

[databases]dbfoo = host=localhost dbname=postgreslisten_addr = ‘*’[pgbouncer]pool_mode = ‘transaction’min_pool_size = 2000[...]

18quinta-feira, 4 de julho de 13

Page 19: Alta disponibilidade com PostgreSQL

Replicação nativa no PostgresMaster/SlaveArquivos de log de transação (WAL)

Warm standbyHot standby

Streaming Replication ([as]síncrono SR)Bases mais consistentesStreaming de registros WAL (walsender/walreceiver)

19quinta-feira, 4 de julho de 13

Page 20: Alta disponibilidade com PostgreSQL

Streaming Replicationpostgresql.conf

wal_level = hot_standbymax_wal_senders = 5wal_keep_segments = 32archive_command = ‘rsync %p foo@bar:/archive/%f’

20quinta-feira, 4 de julho de 13

Page 21: Alta disponibilidade com PostgreSQL

Streaming Replication (cont.)

pg_basebackup -H <host> -R -D $PGDATA

recovery.conf

primary_conninfo = “host=node1”

pg_ctl start

pg_ctl promote # switchover

21quinta-feira, 4 de julho de 13

Page 22: Alta disponibilidade com PostgreSQL

Sistema operacional – ADPacemaker

gerenciador de recursos

Corosync

Camada de mensagens

Resource Agent (RA)

Scripts para controle do serviço (LSB ou OCFs)

22quinta-feira, 4 de julho de 13

Page 23: Alta disponibilidade com PostgreSQL

Arquitetura SR

23quinta-feira, 4 de julho de 13

Page 24: Alta disponibilidade com PostgreSQL

Bucardo – multimasterConfiguração 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

24quinta-feira, 4 de julho de 13

Page 25: Alta disponibilidade com PostgreSQL

O que vem por aí?Replicação multimaster nativa

BIDR (BiDirection Replication)

LLSR (Logical Log Streaming Replication)

1o. passo postgres 9.3

fast failover

arquitetura independente e “remastering”

BgWorkers customizados25quinta-feira, 4 de julho de 13

Page 26: Alta disponibilidade com PostgreSQL

Próximos eventos

Conferência 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/26quinta-feira, 4 de julho de 13

Page 27: Alta disponibilidade com PostgreSQL

Obrigado!

lhcezar

lhcezar

lhcezar

27quinta-feira, 4 de julho de 13