Software Freedom Day
             2012 – Teresina


Utilizando ferramentas livres para a
alta disponibilidade de sistemas web
                 java
            Adriel Lucas
Sobre mim
    ●
        Tec. de Infraestrutura na Infoway
        E-Health Company
    ●
        Atuação:
        –   Redes e servidores linux;
        –   Virtualização (Xen e Esxi)
        –   Banco de dados (Mysql e Postgres);
        –   Servidores web (tomcat e apache)
Roteiro
●
    Introdução
●
    Cenário de Alta disponibilidade
●
    Tomcat-Cluster
●
    Balanceamento de Carga com Apache
●
    Replicação de dados com Mysql;
Introdução              Da pra prover
                                      alta disponibilidade de BD?
                      É muito caro?

  É fácil ter alta
 disponibilidade
em sistemas web?

                                               Qual é o objetivo
                                                desta oficina?
Cenário de Alta
disponibilidade
Tomcat-Cluster
                             TOMCAT-CLUSTER

                               Sessões




                  Tomcat A                    Tomcat B

➔
    Requisitos:
     ➔
       Todos os atributos das classes deveram implementar
       java.io.Serializable;
     ➔
       Ter no arquivo web.xml o atributo <distributable/> ou
       definir no server.xml o atributo <Context
       distributable=”true”>;
     ➔
       Definir um nome diferene para o atributo jvmRoute no
       arquivo server.xml <Engine name=”Catalina”
       jvmRoute=”node01” >;
Tomcat-Cluster
                             TOMCAT-CLUSTER

                               Sessões




                 Tomcat A                     Tomcat B

➔
    Arquitetura:
     ➔
       Receiver: recebe as conexões vinda dos outros nós do
       cluster;
     ➔
       Sender: envia as sessões para outro tomcat;
     ➔
       Menbership: realiza a parceria entre os nós do cluster;
     ➔
       Valve: detecta se uma requisição foi completada ou não;
     ➔
       Deployer: é responsável por deixar automática a gerencia
       das aplicações no cluster;
Tomcat-Cluster
(Funcionamento)
Tomcat-Cluster
(configuração)
Balanceamento de Carga
      com Apache
Balanceamento de Carga
      com Apache

➢
    Mod_proxy

➢
    Mod_proxy_balancer
Balanceamento de Carga
com Apache (Configuração)
Replicação de dados com
         MySQL
Replicação de dados com
 MySQL (configuração)
➔
    my.cnf

➔
    Master:
    ➔
      log-bin=mysql-bin
    ➔
      Server-id=1
    ➔
      relay_log = mysql-relay-bin
    ➔
      log_slave_update = 1

➔
    Slave:
    ➔
        log-bin = mysql-bin
    ➔
        server-id = 2
    ➔
      relay_log = mysql-relay-bin
    ➔
      log_slave_update = 1
DÚVIDAS??
www.adrielltech.com

Utilizando software livre para alta disponibilidade de sistemas web Java

  • 1.
    Software Freedom Day 2012 – Teresina Utilizando ferramentas livres para a alta disponibilidade de sistemas web java Adriel Lucas
  • 2.
    Sobre mim ● Tec. de Infraestrutura na Infoway E-Health Company ● Atuação: – Redes e servidores linux; – Virtualização (Xen e Esxi) – Banco de dados (Mysql e Postgres); – Servidores web (tomcat e apache)
  • 3.
    Roteiro ● Introdução ● Cenário de Alta disponibilidade ● Tomcat-Cluster ● Balanceamento de Carga com Apache ● Replicação de dados com Mysql;
  • 4.
    Introdução Da pra prover alta disponibilidade de BD? É muito caro? É fácil ter alta disponibilidade em sistemas web? Qual é o objetivo desta oficina?
  • 5.
  • 6.
    Tomcat-Cluster TOMCAT-CLUSTER Sessões Tomcat A Tomcat B ➔ Requisitos: ➔ Todos os atributos das classes deveram implementar java.io.Serializable; ➔ Ter no arquivo web.xml o atributo <distributable/> ou definir no server.xml o atributo <Context distributable=”true”>; ➔ Definir um nome diferene para o atributo jvmRoute no arquivo server.xml <Engine name=”Catalina” jvmRoute=”node01” >;
  • 7.
    Tomcat-Cluster TOMCAT-CLUSTER Sessões Tomcat A Tomcat B ➔ Arquitetura: ➔ Receiver: recebe as conexões vinda dos outros nós do cluster; ➔ Sender: envia as sessões para outro tomcat; ➔ Menbership: realiza a parceria entre os nós do cluster; ➔ Valve: detecta se uma requisição foi completada ou não; ➔ Deployer: é responsável por deixar automática a gerencia das aplicações no cluster;
  • 8.
  • 9.
  • 10.
  • 11.
    Balanceamento de Carga com Apache ➢ Mod_proxy ➢ Mod_proxy_balancer
  • 12.
    Balanceamento de Carga comApache (Configuração)
  • 13.
  • 14.
    Replicação de dadoscom MySQL (configuração) ➔ my.cnf ➔ Master: ➔ log-bin=mysql-bin ➔ Server-id=1 ➔ relay_log = mysql-relay-bin ➔ log_slave_update = 1 ➔ Slave: ➔ log-bin = mysql-bin ➔ server-id = 2 ➔ relay_log = mysql-relay-bin ➔ log_slave_update = 1
  • 15.