SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
PostgreSQL para um bilhão de usuários

             Fernando Ike de Oliveira

                       B2BR - Grupo TBA


      Setembro de 2008 / PGCon-BR 2008




        Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Breve história...




        2004 libera um conjunto de ferramentas para replicação,
        balanceamento de carga e alta-disponibilidade para
        PostgreSQL.
        Essas ferramentas são conhecidas como PL/Proxy,
        PgBouncer, Skytools.
        A licença é BSD.
        Instalação à partir do código-fonte ou pacotes *.deb *.rpm.
        Oficialmente o Debian, Fedora tem pacotes binários.




                    Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PL/Proxy




      PL/Proxy é uma linguagem usada para chamadas remotas
      e particionamento de banco de dados usando hash dos
      dados.
      PL/Proxy permite criar funções de proxy usando hash para
      especificar destino (base de dados alvo).
      PL/Proxy é comparável à um roteador de rede que
      encaminha a expressão SQL para o instância correta.




                 Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PL/Proxy
Princípio de funcionamento PL/Proxy




   Exemplo
   "SELECT (hashtext(’pgcon1’))%3" = 0
   "SELECT (hashtext(’pgcon2’))%3" = -1
   "SELECT (hashtext(’pgcon3’))%3" = -2
   "SELECT (hashtext(’pgcon4’))%3" = 0
   "SELECT (hashtext(’pgcon5’))%3" = 0
   "SELECT (hashtext(’pgcon6’))%3" = 2
   "SELECT (hashtext(’pgcon7’))%3" = -1
   "SELECT (hashtext(’pgcon8’))%3" = 0
   "SELECT (hashtext(’pgcon9’))%3" = 0
   "SELECT (hashtext(’pgcon10’))%3" = 0




                     Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PL/Proxy
idéias básicas possíveis




        Como um barramento, para todos as servidores
        PostgreSQL
        Tabelas
        Particionamento usando funções de Proxy




                      Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PL/Proxy
Problema




           Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PL/Proxy
Princípio do Proxy




                     Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PL/Proxy
Particionamento de dados




                    Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PgBouncer
Um serviço de pool para o PostgreSQL



        Baixo consumo de recurso (2k por conexão)
        Suporta reconfiguração sem reiniciar o serviço
        Suporta reinício/atualização sem derrubar a conexão
        cliente
        Suporta o protocolo v3 ou superior, somente => 7.4
        O Parse SQL nao eh muito rápido e consome pouco
        tempo de cpu
        Tem uma interface console de gerenciamento
        Tem estrutura sua (própria) estrutura de autenticação mas
        similar ao arquivo similar ao arquivo de senha pg_pwd do
        PostgreSQL.
        Permite autenticação do tipo: trust, texto plano, crypt, md5.


                    Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PgBouncer
Modos de pool




       Sessão (session)
       Transação (transaction)
       Instrução (statement)




                  Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PgBouncer
Sessão




         Quando um cliente conecta, o PgBouncer retira uma
         conexão do pool e entrega para a aplicação
         Ao o cliente desconectar, o PgBouncer re-aloca a conexão
         para o pool. geralmente essa configuração é
         recomendada para aplicações legadas(Por não usarem de
         forma eficiente o pool)




                    Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PgBouncer
Transação




       Servidor mantém para o cliente a conexão somente
       durante a transação. Quando PgBouncer notifica que
       transação acabou, o servidor devolve a conexão para o
       pool.
       Essa opção não deve ser usada com servidor de
       aplicações que gerenciam pool (Jboss, por exemplo)




                  Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PgBouncer
Instrução (Statement)




        Este é o modo usado usado com o PL/Proxy. Por ser mais
        agressivo, ele retornar o conexão para opool depois que a
        consulta termina.
        Transações muito longas com múltiplos Statements são
        desabilitados neste modo.




                        Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Skytools
O que é?




           Skytools são um conjunto de scripts para gerenciar cluster
           de servidores PostgreSQL.
           Desenvolvido em C e Python
           Permitem usar para replicação assíncrona
           Permitem replicar dados particionados nos servidores
           "slave(s)"
           Possível extender usando as API do PgQ




                      Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Skytools
Basicamente...




        Centralização de log gerenciamento de exceções.
        Gerenciamento de conexões ao banco de dados
        Gerenciamento de configuração
        Gerenciamento de scrips...




                   Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Skytools
Conteúdo




       londiste
       walmgr
       serial_consumer
       queue_mover
       queue_splitter
       table_dispatcher
       cube_dispatcher




                  Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Skytools
Londsite é...




         ... um sistema de replicação
         ... Master/Slave(s) como tipo de replicação
         ... de replicação é assíncrona
         ... baseada fortemente nas idéias do no Slony-1.
         ... um replicador baseado em gatilhos




                     Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Skytools
Walmgr é...




        ... uma ferramenta para gerenciar replicação por WAL
        ... similar ao pg_standby (contrib)
        ... possível gerenciar replicação baseada em PITR (Warm
        Standby).
        ... escrito em python
        ... uma ferramenta de replicação que usa túnel SSH.




                    Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Skytools
queue_mover e queue_splitter



   Ambos
      Usa o PgQ como transporte dos dados
        Move/copia os dados para os servidores Slave
        Move/copia os dados em lote(batch)
        O processamento é/são nos slave(s)

   queue_mover
        Usado para mover/copia os dados para OLTP, Web

   queue_splitter
        Usado para BI



                    Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Skytools
cube_dispacher e table_dispacher

   Ambos
      Ferramentas para replicar dados em tabelas particionadas.
        Usados para preparar os dados para outros servidores

   cube_dispacher
        Prepara os dados para banco de dados do tipo BI, OLAP,
        Cubo...
        Não tem suporte para operações de remoção de registro
        Caso haja duas versões do mesmo registro, ele irá enviar
        somente a última versão.

   table_dispacher
        script para configuraro particionamento de uma ou mais
        tabela.
        possibilita particionar uma tabela por mês, por exemplo.
                     Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Exemplo 1




            Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Exemplo 2




            Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Dúvidas




  Links e Listas de discussão:
      https://developer.skype.com/SkypeGarage/DbProjects/SkypePostgresqlWhitepaper

      https://developer.skype.com/SkypeGarage/DbProjects/PlProxy

      http://pgfoundry.org/mailman/listinfo/plproxy-users

      https://developer.skype.com/SkypeGarage/DbProjects/PgBouncer

      http://pgfoundry.org/mailman/listinfo/pgbouncer-general

      https://developer.skype.com/SkypeGarage/DbProjects/SkyTools

      http://pgfoundry.org/mailman/listinfo/skytools-users

      http://joaocosme.wordpress.com/2008/07/03/comecando-com-o-plproxy/




                      Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Conclusão


  Contatos:
     fernando.ike@b2br.com.br
      fernando.ike@gmail.com
      http://www.midstorm.org/~fike/weblog

  PGCon Brasil 2008
     http://pgcon.postgresql.org.br




  Imagens
      Joao Comes http://joaocosme.wordpress.com


               Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução ao Linux - aula 03 e 04
Introdução ao Linux - aula 03 e 04Introdução ao Linux - aula 03 e 04
Introdução ao Linux - aula 03 e 04Renan Aryel
 
Curso de shell
Curso de shellCurso de shell
Curso de shellTiago
 
Cap1 exercicios comandos linux resolucao part i
Cap1 exercicios comandos linux   resolucao part iCap1 exercicios comandos linux   resolucao part i
Cap1 exercicios comandos linux resolucao part iportal_Do_estudante
 
Comandos básicos linux
Comandos básicos linuxComandos básicos linux
Comandos básicos linuxLuciano Souto
 
Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppetRamon Mota
 
Invasão de servidor ftp
Invasão de servidor ftpInvasão de servidor ftp
Invasão de servidor ftpPraiero Oo
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLJohnes Castro
 
Oficina shell
Oficina shellOficina shell
Oficina shellapsegundo
 
Aula PIT 3 - Ambientes
Aula PIT 3 - AmbientesAula PIT 3 - Ambientes
Aula PIT 3 - AmbientesDirceu Belém
 
Introduction to linux
Introduction to linuxIntroduction to linux
Introduction to linuxguilhermeoki
 

Was ist angesagt? (20)

Comandos basicos linux
Comandos basicos linuxComandos basicos linux
Comandos basicos linux
 
Python CGI
Python CGIPython CGI
Python CGI
 
Introdução ao Linux - aula 03 e 04
Introdução ao Linux - aula 03 e 04Introdução ao Linux - aula 03 e 04
Introdução ao Linux - aula 03 e 04
 
Lab 06 ping_com_udp
Lab 06 ping_com_udpLab 06 ping_com_udp
Lab 06 ping_com_udp
 
MRTG - SNMP na Prática
MRTG - SNMP na PráticaMRTG - SNMP na Prática
MRTG - SNMP na Prática
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
 
Cap1 exercicios comandos linux resolucao part i
Cap1 exercicios comandos linux   resolucao part iCap1 exercicios comandos linux   resolucao part i
Cap1 exercicios comandos linux resolucao part i
 
Comandos básicos linux
Comandos básicos linuxComandos básicos linux
Comandos básicos linux
 
dnad12
dnad12dnad12
dnad12
 
Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppet
 
Cap1 exercicios comandos linux
Cap1 exercicios comandos linuxCap1 exercicios comandos linux
Cap1 exercicios comandos linux
 
Invasão de servidor ftp
Invasão de servidor ftpInvasão de servidor ftp
Invasão de servidor ftp
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQL
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Oficina shell
Oficina shellOficina shell
Oficina shell
 
Aula PIT 3 - Ambientes
Aula PIT 3 - AmbientesAula PIT 3 - Ambientes
Aula PIT 3 - Ambientes
 
servlet-respostas
servlet-respostasservlet-respostas
servlet-respostas
 
Soa#cap4.1 gestor de pacotes
Soa#cap4.1   gestor de pacotesSoa#cap4.1   gestor de pacotes
Soa#cap4.1 gestor de pacotes
 
Introduction to linux
Introduction to linuxIntroduction to linux
Introduction to linux
 

Ähnlich wie Ferramentas PostgreSQL para alta disponibilidade e balanceamento de carga

Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...BrunoSouza617
 
PostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPedro Fernandes Vieira
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open sourceRodrigo Aurélio
 
Controlando Projetos com Netbeans e Subversion
Controlando Projetos com Netbeans e SubversionControlando Projetos com Netbeans e Subversion
Controlando Projetos com Netbeans e Subversionlekitamura
 
Oficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesOficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesJose Augusto Carvalho
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxThiago Paes
 
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Gabriel Machado
 
Apache NiFi com postgresql
Apache NiFi com postgresqlApache NiFi com postgresql
Apache NiFi com postgresqlGerdan Santos
 
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Davy Alvarenga Machado
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlLeonardo Medeiros Martins
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestEdson Celio
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Fabrízio Mello
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopAlexei Znamensky
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Jeronimo Zucco
 
PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLJuliano Atanazio
 
Cluster e replicação em banco de dados
Cluster e replicação em banco de dadosCluster e replicação em banco de dados
Cluster e replicação em banco de dadosSuissa
 

Ähnlich wie Ferramentas PostgreSQL para alta disponibilidade e balanceamento de carga (20)

Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
 
PostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro Vieira
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open source
 
Controlando Projetos com Netbeans e Subversion
Controlando Projetos com Netbeans e SubversionControlando Projetos com Netbeans e Subversion
Controlando Projetos com Netbeans e Subversion
 
Oficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesOficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar Configurações
 
Vagrant + Puppet
Vagrant + PuppetVagrant + Puppet
Vagrant + Puppet
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
 
Apache NiFi com postgresql
Apache NiFi com postgresqlApache NiFi com postgresql
Apache NiFi com postgresql
 
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para Postgresql
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentest
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl Workshop
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
 
PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQL
 
Igor Oliveira - Puppet
Igor Oliveira - PuppetIgor Oliveira - Puppet
Igor Oliveira - Puppet
 
Puppet webcast 4linux
Puppet webcast 4linuxPuppet webcast 4linux
Puppet webcast 4linux
 
Cluster e replicação em banco de dados
Cluster e replicação em banco de dadosCluster e replicação em banco de dados
Cluster e replicação em banco de dados
 

Mehr von Fernando Ike

Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro ServiçosFernando Ike
 
(Quase) 10 anos de DevOps, e agora?
(Quase) 10 anos de DevOps, e agora? (Quase) 10 anos de DevOps, e agora?
(Quase) 10 anos de DevOps, e agora? Fernando Ike
 
Containers and Databases
Containers and DatabasesContainers and Databases
Containers and DatabasesFernando Ike
 
Infraestrutura Imutável - Agile Trends
Infraestrutura Imutável - Agile TrendsInfraestrutura Imutável - Agile Trends
Infraestrutura Imutável - Agile TrendsFernando Ike
 
Infraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvemInfraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvemFernando Ike
 
DevOps Anti-Patterns - Campus Party
DevOps Anti-Patterns - Campus PartyDevOps Anti-Patterns - Campus Party
DevOps Anti-Patterns - Campus PartyFernando Ike
 
Blameless: A culpa não é sua
Blameless: A culpa não é suaBlameless: A culpa não é sua
Blameless: A culpa não é suaFernando Ike
 
DevOps: A revolução ruidosa da TI
DevOps: A revolução ruidosa da TIDevOps: A revolução ruidosa da TI
DevOps: A revolução ruidosa da TIFernando Ike
 
Docker Swarm Cluster
Docker Swarm ClusterDocker Swarm Cluster
Docker Swarm ClusterFernando Ike
 
DevOps - Por onde começar
DevOps - Por onde começarDevOps - Por onde começar
DevOps - Por onde começarFernando Ike
 
DevOps Anti-Patterns
DevOps Anti-PatternsDevOps Anti-Patterns
DevOps Anti-PatternsFernando Ike
 
A lista do PostgerSQL Brasil caiu?
A lista do PostgerSQL Brasil caiu? A lista do PostgerSQL Brasil caiu?
A lista do PostgerSQL Brasil caiu? Fernando Ike
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucaoFernando Ike
 
Akamai Cloud Security
Akamai Cloud SecurityAkamai Cloud Security
Akamai Cloud SecurityFernando Ike
 
Management 3.0 - a vida pós-agilidade
Management 3.0 - a vida pós-agilidadeManagement 3.0 - a vida pós-agilidade
Management 3.0 - a vida pós-agilidadeFernando Ike
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida realFernando Ike
 
Docker e postgresql
Docker e postgresqlDocker e postgresql
Docker e postgresqlFernando Ike
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneosFernando Ike
 
Banco caiu! E a gora?
Banco caiu! E a gora?Banco caiu! E a gora?
Banco caiu! E a gora?Fernando Ike
 

Mehr von Fernando Ike (20)

Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
 
(Quase) 10 anos de DevOps, e agora?
(Quase) 10 anos de DevOps, e agora? (Quase) 10 anos de DevOps, e agora?
(Quase) 10 anos de DevOps, e agora?
 
Containers and Databases
Containers and DatabasesContainers and Databases
Containers and Databases
 
Infraestrutura Imutável - Agile Trends
Infraestrutura Imutável - Agile TrendsInfraestrutura Imutável - Agile Trends
Infraestrutura Imutável - Agile Trends
 
Infraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvemInfraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvem
 
DevOps Anti-Patterns - Campus Party
DevOps Anti-Patterns - Campus PartyDevOps Anti-Patterns - Campus Party
DevOps Anti-Patterns - Campus Party
 
Blameless: A culpa não é sua
Blameless: A culpa não é suaBlameless: A culpa não é sua
Blameless: A culpa não é sua
 
DevOps: A revolução ruidosa da TI
DevOps: A revolução ruidosa da TIDevOps: A revolução ruidosa da TI
DevOps: A revolução ruidosa da TI
 
Docker Swarm Cluster
Docker Swarm ClusterDocker Swarm Cluster
Docker Swarm Cluster
 
DevOps - Por onde começar
DevOps - Por onde começarDevOps - Por onde começar
DevOps - Por onde começar
 
DevOps Anti-Patterns
DevOps Anti-PatternsDevOps Anti-Patterns
DevOps Anti-Patterns
 
A lista do PostgerSQL Brasil caiu?
A lista do PostgerSQL Brasil caiu? A lista do PostgerSQL Brasil caiu?
A lista do PostgerSQL Brasil caiu?
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Akamai Cloud Security
Akamai Cloud SecurityAkamai Cloud Security
Akamai Cloud Security
 
Management 3.0 - a vida pós-agilidade
Management 3.0 - a vida pós-agilidadeManagement 3.0 - a vida pós-agilidade
Management 3.0 - a vida pós-agilidade
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
Devops
DevopsDevops
Devops
 
Docker e postgresql
Docker e postgresqlDocker e postgresql
Docker e postgresql
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneos
 
Banco caiu! E a gora?
Banco caiu! E a gora?Banco caiu! E a gora?
Banco caiu! E a gora?
 

Ferramentas PostgreSQL para alta disponibilidade e balanceamento de carga

  • 1. PostgreSQL para um bilhão de usuários Fernando Ike de Oliveira B2BR - Grupo TBA Setembro de 2008 / PGCon-BR 2008 Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 2. Breve história... 2004 libera um conjunto de ferramentas para replicação, balanceamento de carga e alta-disponibilidade para PostgreSQL. Essas ferramentas são conhecidas como PL/Proxy, PgBouncer, Skytools. A licença é BSD. Instalação à partir do código-fonte ou pacotes *.deb *.rpm. Oficialmente o Debian, Fedora tem pacotes binários. Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 3. PL/Proxy PL/Proxy é uma linguagem usada para chamadas remotas e particionamento de banco de dados usando hash dos dados. PL/Proxy permite criar funções de proxy usando hash para especificar destino (base de dados alvo). PL/Proxy é comparável à um roteador de rede que encaminha a expressão SQL para o instância correta. Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 4. PL/Proxy Princípio de funcionamento PL/Proxy Exemplo "SELECT (hashtext(’pgcon1’))%3" = 0 "SELECT (hashtext(’pgcon2’))%3" = -1 "SELECT (hashtext(’pgcon3’))%3" = -2 "SELECT (hashtext(’pgcon4’))%3" = 0 "SELECT (hashtext(’pgcon5’))%3" = 0 "SELECT (hashtext(’pgcon6’))%3" = 2 "SELECT (hashtext(’pgcon7’))%3" = -1 "SELECT (hashtext(’pgcon8’))%3" = 0 "SELECT (hashtext(’pgcon9’))%3" = 0 "SELECT (hashtext(’pgcon10’))%3" = 0 Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 5. PL/Proxy idéias básicas possíveis Como um barramento, para todos as servidores PostgreSQL Tabelas Particionamento usando funções de Proxy Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 6. PL/Proxy Problema Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 7. PL/Proxy Princípio do Proxy Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 8. PL/Proxy Particionamento de dados Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 9. PgBouncer Um serviço de pool para o PostgreSQL Baixo consumo de recurso (2k por conexão) Suporta reconfiguração sem reiniciar o serviço Suporta reinício/atualização sem derrubar a conexão cliente Suporta o protocolo v3 ou superior, somente => 7.4 O Parse SQL nao eh muito rápido e consome pouco tempo de cpu Tem uma interface console de gerenciamento Tem estrutura sua (própria) estrutura de autenticação mas similar ao arquivo similar ao arquivo de senha pg_pwd do PostgreSQL. Permite autenticação do tipo: trust, texto plano, crypt, md5. Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 10. PgBouncer Modos de pool Sessão (session) Transação (transaction) Instrução (statement) Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 11. PgBouncer Sessão Quando um cliente conecta, o PgBouncer retira uma conexão do pool e entrega para a aplicação Ao o cliente desconectar, o PgBouncer re-aloca a conexão para o pool. geralmente essa configuração é recomendada para aplicações legadas(Por não usarem de forma eficiente o pool) Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 12. PgBouncer Transação Servidor mantém para o cliente a conexão somente durante a transação. Quando PgBouncer notifica que transação acabou, o servidor devolve a conexão para o pool. Essa opção não deve ser usada com servidor de aplicações que gerenciam pool (Jboss, por exemplo) Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 13. PgBouncer Instrução (Statement) Este é o modo usado usado com o PL/Proxy. Por ser mais agressivo, ele retornar o conexão para opool depois que a consulta termina. Transações muito longas com múltiplos Statements são desabilitados neste modo. Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 14. Skytools O que é? Skytools são um conjunto de scripts para gerenciar cluster de servidores PostgreSQL. Desenvolvido em C e Python Permitem usar para replicação assíncrona Permitem replicar dados particionados nos servidores "slave(s)" Possível extender usando as API do PgQ Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 15. Skytools Basicamente... Centralização de log gerenciamento de exceções. Gerenciamento de conexões ao banco de dados Gerenciamento de configuração Gerenciamento de scrips... Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 16. Skytools Conteúdo londiste walmgr serial_consumer queue_mover queue_splitter table_dispatcher cube_dispatcher Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 17. Skytools Londsite é... ... um sistema de replicação ... Master/Slave(s) como tipo de replicação ... de replicação é assíncrona ... baseada fortemente nas idéias do no Slony-1. ... um replicador baseado em gatilhos Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 18. Skytools Walmgr é... ... uma ferramenta para gerenciar replicação por WAL ... similar ao pg_standby (contrib) ... possível gerenciar replicação baseada em PITR (Warm Standby). ... escrito em python ... uma ferramenta de replicação que usa túnel SSH. Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 19. Skytools queue_mover e queue_splitter Ambos Usa o PgQ como transporte dos dados Move/copia os dados para os servidores Slave Move/copia os dados em lote(batch) O processamento é/são nos slave(s) queue_mover Usado para mover/copia os dados para OLTP, Web queue_splitter Usado para BI Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 20. Skytools cube_dispacher e table_dispacher Ambos Ferramentas para replicar dados em tabelas particionadas. Usados para preparar os dados para outros servidores cube_dispacher Prepara os dados para banco de dados do tipo BI, OLAP, Cubo... Não tem suporte para operações de remoção de registro Caso haja duas versões do mesmo registro, ele irá enviar somente a última versão. table_dispacher script para configuraro particionamento de uma ou mais tabela. possibilita particionar uma tabela por mês, por exemplo. Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 21. Exemplo 1 Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 22. Exemplo 2 Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 23. Dúvidas Links e Listas de discussão: https://developer.skype.com/SkypeGarage/DbProjects/SkypePostgresqlWhitepaper https://developer.skype.com/SkypeGarage/DbProjects/PlProxy http://pgfoundry.org/mailman/listinfo/plproxy-users https://developer.skype.com/SkypeGarage/DbProjects/PgBouncer http://pgfoundry.org/mailman/listinfo/pgbouncer-general https://developer.skype.com/SkypeGarage/DbProjects/SkyTools http://pgfoundry.org/mailman/listinfo/skytools-users http://joaocosme.wordpress.com/2008/07/03/comecando-com-o-plproxy/ Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  • 24. Conclusão Contatos: fernando.ike@b2br.com.br fernando.ike@gmail.com http://www.midstorm.org/~fike/weblog PGCon Brasil 2008 http://pgcon.postgresql.org.br Imagens Joao Comes http://joaocosme.wordpress.com Fernando Ike de Oliveira Pgbouncer, plproxy, skytools