SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
1                   Cluster de Balanceamento de Carga                       Luiz Arthur



    A Internet esta se tornado mais e mais importante a cada dia, com isto o trafego
    de dados na Internet tem aumentado drásticamente (~100% ao ano).

    A carga de trabalho dos servidores na Internet tem de aumentar na mesma
    proporção caso contrário os usuário da Internet ficariam insatisfeitos com tais
    serviços, o que poderia trazer prejuízos para várias empresas.

    Para tentar resolver este problema existem basicamente duas soluções:

     ●   Uma é à evolução dos servidores, sendo que, a medida que cresce a
         demanda pelo servidor, o mesmo deve “crescer” (evoluir tecnologicamente)
         na mesma proporção em termos de hardware, fornecendo alta performance
         para os usuários, porém este crescimento de hardware é muito complexo e
         pior pode ainda tornar-se impossível.

     ●   Outra, solução é a medida que for crescendo a demanda por serviços,
         usarmos a técnica de cluster, fazendo a adição de mais servidores, incluindo
         mais e mais máquinas para prover um dado serviço, tornando o sistema
         escalável e menos suscetível a falhas.
2                  Cluster de Balanceamento de Carga                         Luiz Arthur

    Um Cluster de Balanceamento de Carga é um conjunto de máquinas (duas
    ou mais) nas quais estão sendo executadas aplicações requerida por um número
    muito grande pessoas.

    Um bom Cluster de Balanceamento de Carga deve ter a capacidade de receber os
    pedidos de requisição de serviço de vários clientes e distribuir (balancear a
    carga de trabalho) tais serviços às máquinas que constituem o cluster de forma
    que nenhuma máquina fique sobrecarregada e/ou ociosa.

    Assim, este tipo de Cluster distribui o tráfego entrante ou requisições de recursos
    provenientes para os nós (máquinas que compõe o cluster) que executam os
    mesmos programa entre as máquinas que compõem o cluster.

    O balanceamento de carga entre servidores faz parte de uma solução
    abrangente em uma explosiva e crescente utilização da rede e da Internet.
    Provendo um aumento na capacidade da rede, melhorando a performance de
    sistemas da Internet.

    Um consistente balanceamento de carga mostra-se hoje, como parte integrante
    de todo o projeto de Web Hosting e comércio eletrônico. Mas não podemos ficar
    com a idéia presa de que isso é só para provedores de Internet, devemos
    aproveitar as características desses clusters em empresas comuns e desse
    modo usar a tecnologia para atendermos os clientes internos das empresas.
3                 Cluster de Balanceamento de Carga                         Luiz Arthur


    Os sistemas de Cluster baseado em Balanceamento de Carga integram/agrupam
    as máquinas que compõem o cluster, de forma que as requisições provenientes
    dos clientes sejam distribuídas de maneira equilibrada entre os tais nós.

    Os sistemas baseados em cluster de balanceamento de carga não trabalham
    junto em um único processo, mas redirecionando as requisições dos
    clientes de forma independente assim que chegam baseados em um
    escalonador e um algoritmo próprio.

    Este tipo de cluster é especialmente utilizado em serviços de comércio eletrônico
    e provedores de Internet que necessitam de resolver diferenças de carga
    provenientes de múltiplas requisições de entrada em tempo real.

    Quando não se faz balanceamento de carga entre servidores que possuem a
    mesma capacidade de resposta a um cliente, começamos a ter problemas, pois
    um ou mais servidores podem responder a requisição feita e a comunicação fica
    prejudicada. Por isso devemos colocar um elemento que fará o
    balanceamento entre os servidores, os usuários e configurá-lo para isso,
    entretanto podemos colocar múltiplos servidores de um lado que, para os
    clientes, eles parecerão ser somente um endereço.
4                 Cluster de Balanceamento de Carga                        Luiz Arthur


    Existem alguns pontos críticos que devem ser observados na implementação de
    um bom cluster de balanceamento de carga, são os que seguem:

    ●  O algoritmo usado para o balanceamento de carga, levando-se em
    consideração como é feito o balanceamento entre os servidores e quando um
    cliente fizer uma requisição para o endereço virtual, todo o processo de escolha
    do servidor e resposta do servidor deve ocorrer de modo transparente e
    imperceptível para o usuário como se não existisse o balanceamento.

    ●Utilizar métodos para checar se os servidores/nós que compõem o cluster
    estão ativos e funcionando. Isto é vital para que a comunicação não seja
    redirecionada para um servidor que acabou de ter uma falha.

    ●Balanceamento de carga é mais que um simples redirecionamento do tráfego
    dos clientes para outros servidores. Para implementação correta, o equipamento
    que fará o balanceamento precisa ter características como verificação
    permanente da comunicação, checagem dos servidores e redundância.

    Todos esses ítens são necessários para que suporte à escalabilidade do volume de
    tráfego das redes sem vir a se tornar um gargalo ou um ponto único de falha.
5                  Cluster de Balanceamento de Carga                         Luiz Arthur

    Algoritmos de Balanceamento de Carga

    Existem algoritmos que ajudam a prover balanceamento de carga, eles
    basicamente são técnicas especificas de distribuição de carga dentre os
    nós que constituem o cluster. Cada algoritmo tem a sua peculiaridade, tal
    como, a forma que estes fazer a distribuição de tarefa, qual o critério de atribuir
    ou não o serviço a um nó do cluster que já tem vários serviços sendo executado,
    etc. Veremos a seguir alguns algoritmos que ajudam na tarefa de fazer um bom
    balanceamento de carga, é claro que cada algoritmo se aplica melhor em
    determinadas situações.

    Round Robin

    O Round Robin funciona da seguinte forma. Uma pequena unidade de tempo,
    denominada timeslice ou quantum, é definida. Todos os processos são
    armazenados em uma fila circular. O escalonador da CPU percorre a fila,
    alocando a CPU para cada processo durante um quantum (previamente definido).
    Mais precisamente, o escalonador retira o primeiro processo da fila e procede à
    sua execução. Se o processo não termina após um quantum, ocorre uma
    preempção, e o processo é inserido no fim da fila. Se o processo termina antes de
    um quantum, a CPU é liberada para a execução de novos processos. Em ambos os
    casos, após a liberação da CPU, um novo processo é escolhido na fila. Novos
    processos são inseridos no fim da fila. Quando um processo é retirado da fila para
    a CPU, ocorre uma troca de contexto, o que resulta em um tempo adicional na
    execução do processo.
6                 Cluster de Balanceamento de Carga                       Luiz Arthur

    Round Robin Ponderado

    Este algoritmo é igual ao anterior, porém atribui a cada servidor um peso. Esse
    peso é um inteiro que indica a capacidade de processamento do nó, de maneira
    que o algoritmo Round Robin se modificará para que os nós com maior
    capacidade de processamento recebam mais requisições (ao menos mais
    que os demais de menor capacidade de processamento).

    Semelhante a uma política FIFO (First In Fisrt Out - o primeiro que entra é o
    primeiro que sai), porém com pesos. Neste caso o servidor vai entrar na fila
    proporcionalmente ao seu peso. Assim, se as máquinas m1, m2, m3 e m4 tiverem
    o mesmo poder computacional e a máquina m5 tiver o dobro, seria uma boa idéia
    colocar peso 1 para as máquinas m1, m2, m3 e m4 e peso 2 para a máquina m5.
    Um possível escalonamento de tarefas, neste caso seria m1, m2, m5, m3, m4, m5,
    m1, m2, m5, m3, m4, m5.

    Least Connection

    Esse algoritmo re-orienta as conexões para o servidor que está com o menor
    número de conexões ativas. Porém,        número de conexões ativas não é
    diretamente proporcional à utilização dos recursos computacionais, no entanto
    este algoritmo é uma aproximação desta situação, uma vez que a
    heterogeneidade das conexões tende a desaparecer quando o número de
    requisições cresce. Este algoritmo de distribuição consulta os nós a cada
    momento para ver quantas conexões abertas cada um tem com os clientes, e
    envia a requisição ao servidor que possui menos conexões no momento.
7                 Cluster de Balanceamento de Carga                         Luiz Arthur

    Weighted Least Connection

    Similar ao Least Connection, só que com pesos. O número de conexões ativas
    é ponderadas pelo peso antes de se decidir para qual servidor/nó a requisição vai
    ser encaminhada. Por exemplo, em um ambiente com as máquinas m1 e m2 com
    peso 1 e a máquina m3 com peso 2. Se o número de requisições ativas for,
    respectivamente 50, 60 e 70, o número de conexões efetivas é igual a
    Número_de_conexões/Peso, ou seja, 50, 60 e 35. A próxima requisição vai para a
    máquina m3 pois esta máquina apresenta a menor relação número de requisições
    por peso de processamento.

    Locality Based Least Connection

    Este algoritmo atribui os trabalhos com o mesmo endereço de origem sempre
    ao mesmo servidor a menos que ele esteja sobrecarregado ou indisponível no
    momento. No caso de sobrecarga o trabalho é atribuído a outro servidor com
    menos conexões.

    Locality Based Least Connection with Replication

    Atribui o trabalho ao servidor que tem o menor número de conexões dentre o
    conjunto que está lidando com certo endereço de destino. Caso todos estejam
    superlotados, um nó com menos trabalhos é escolhido e adicionado ao conjunto.
    Se o servidor não foi modificado em um determinado período de tempo o nó mais
    ocupado é removido do conjunto para evitar um alto grau de replicação.
8                       Cluster de Balanceamento de Carga                   Luiz Arthur

    Mas como distribuir carga entre servidores de rede?

    Existem várias formas de montar um cluster e distribuir a carga entre os nós.

    O método mais simples é mediante um DNS Round-Robin. Para se obter um
    balanceamento de carga com DNS faz-se necessário definir várias entradas tipo A
    no arquivo de configuração do domínio em questão.

    @        IN   SOA       dns1.exemplo.com.br. email.exemplo.com.br. (
                            01 ; serial
                            03H ; refresh
                            15M ; retry
                            1W ; expiry
                            1D ) ; minimum

             IN   NS        dns1
             IN   NS        dns2
             IN   MX        10      mail

    dns1     IN   A         1.2.3.41
    dns2     IN   A         1.2.3.42
    mail          IN    A       1.2.3.50
    www IN   A          1.2.3.1 # Servidor 1
             IN   A         1.2.3.2 # Servidor   2
             IN   A         1.2.3.3 # Servidor   3
             IN   A         1.2.3.4 # Servidor   4
    ftp      IN   A         1.2.3.1 # Servidor   1
             IN   A         1.2.3.2 # Servidor   2
             IN   A         1.2.3.3 # Servidor   3
             IN   A         1.2.3.4 # Servidor   4
9                 Cluster de Balanceamento de Carga                       Luiz Arthur

    Para cada requisição de resolução de nomes para www.exemplo.com.br ou
    ftp.exemplo.com.br, o servidor em princípio devolverá um IP distinto. Porém,
    essa facilidade aparente encontra um inconveniente, o cache de DNS.

    Os servidores DNS possuem cache com as últimas requisições realizadas visando
    agilizar o processo de resolução. Isso pode ser um problema porque o
    balanceamento não seria feito de forma justa para todos os servidores WWW
    ou FTP.

    Uma "solução" que apenas ameniza o problema é a diminuição do TTL (time to
    live), que é o tempo de vida de um registro em uma cache de DNS em segundos.
    Então com um TTL baixo faz-se com que os outros servidores DNS não
    mantenham por muito tempo o registro em seus caches.

    Este método encontra também o problema de não levar em conta a carga
    real de cada nó, sendo possível que todas as requisições sejam passadas sempre
    para o mesmo nó o que acabaria por saturá-lo, mesmo que os demais estivessem
    servindo requisições triviais.

    Uma solução melhor estará em utilizar um balanceador de carga para
    distribuir as conexões entre os servidores. Com esta solução pode-se aumentar a
    noção de "unidade" do cluster, pois para o usuário existirá um único
    endereço IP para o qual serão dirigidas todas as requisições.
10             Cluster de Balanceamento de Carga                      Luiz Arthur

 A granularidade da distribuição pode se dar por conexão (cada requisição de
 cliente se dirige ao nó que melhor tenha condição de atender) ou por sessões
 (armazena-se em uma tabela qual nó recebe a conexão do cliente e as envia ao
 mesmo nó enquanto permanecer ativa a sessão).

 Quando algum nó falha, é mais fácil mascarar o erro, tendo nesse caso o
 balanceador de carga mecanismos necessários para detectar a falha do nó e
 eliminá-lo da sua lista, de forma a não encaminhar nenhuma requisição. Por
 esse mesmo motivo, a administração do cluster se torna simplificada, pode-se
 retirar a qualquer momento qualquer dos nós para realizar tarefas de
 manutenção sem que sejam provocadas interrupções de serviços.

 O balanceamento de carga pode ser feito em dois níveis: a nível de conexão e
 IP e a nível de protocolo.

 Para o balanceamento de carga em nível de protocolo o balanceador seria uma
 espécie de proxy, o qual seria programando para receber conexões em uma
 determinada porta, podendo inspecionar o pacote para ver se trata do protocolo
 correto ou extrair algum tipo de dado do protocolo, podendo ainda filtrar
 requisições incorretas e encaminhar as conexões para um dos nós do cluster. O
 problema com essa aproximação com proxy é a necessidade de se analisar o
 protocolo em todas a conexões entrantes, o programa balanceador é muito
 complexo e poderia causar um gargalo na entrada do cluster (estima-se que o
 número de nós para servir sem problemas de congestionamento seria em torno
 de 4 a 6).
11             Cluster de Balanceamento de Carga                     Luiz Arthur

 O balanceamento a nível de conexão IP, é muito mais eficiente já que o
 processo a ser realizado é muito mais simples. Quando chega uma requisição ao
 balanceador ele somente aceita a conexão e encaminha para um dos nós. Nesse
 nível, o número de nós atrás do balanceador pode oscilar entre 25 e 100
 observando-se é claro a potência dos equipamentos.
12              Cluster de Balanceamento de Carga                        Luiz Arthur


 Linux Virtual Server

 Linux Virtual Server ou simplesmente LVS uma solução de balanceamento de
 carga baseado em cluster, o LVS é executado no sistema operacional Linux, e
 prove alta disponibilidade e escalabilidade a servidores de redes.

 O LVS é uma avançada solução de balanceamento de carga que pode ser
 utilizada para fornece serviços críticos de rede, que necessitam de um alto grau
 de disponibilidade e escalabilidade, tal como, serviços da web, mail, mídia, VoIP,
 etc.

 A arquitetura do cluster de balanceamento de carga do LVS é completamente
 transparente para usuários finais, sendo que os usuários interagem com o
 computador que faz o papel de servidor virtual, este servidor virtual é
 responsável por receber os pedidos dos usuários e repassar para algum servidor
 real (que compõe o cluster).

 Os servidores reais e o servidor LVS (responsável pelo balanceamento de carga)
 podem estar interconectados por uma rede local (LAN) ou por uma rede
 geograficamente distribuída (WAN, Internet, etc).
13                Cluster de Balanceamento de Carga                    Luiz Arthur

 O servidor de balanceamento de carga LVS pode despachar os pedidos de vários
 clientes para diferentes servidores reais de forma que pareça que o servidor
 virtual (que tem um endereço IP fixo) pareça estar fazendo inúmeros serviços em
 paralelo ou simultaneamente, mas no entanto quem está atendendo este pedido
 são os servidores reais do cluster.

 O LVS é escalavel e transparente aos erros dos servidores reais, ou seja o LVS
 torna possível retirar ou acrescentar servidores reais no cluster, sem que os
 clientes sintam ou saibam que isto está ocorrendo. Isto possibilita também que
 caso haja alguma falha em um servidor real, este seja retirado para reparo, sem
 que os clientes sintam tal falha, e assim que o servidor real for reparado este
 pode ser adicionado ao cluster, isto fornece disponibilidade de serviços ao
 cluster.



        Cliente

                                                   LAN/WAN

                   Internet/
                    Intranet                                           Servidores
                                 Servidor de                             Reais
                                Balanceamento
                                   de Carga
14             Cluster de Balanceamento de Carga                         Luiz Arthur

 Então um LVS é um grupo de servidores com um computador chamado de
 direcionador que faz com que o Cluster LVS pareça para o mundo de fora (um
 servidor na Internet, por exemplo) como se fosse apenas uma única máquina, mas
 na verdade são um conjunto que computadores.

 O LVS pode oferecer mais serviços, com maior capacidade e desempenho, ou
 serviços redundantes em relação aos serviços disponíveis em servidores únicos. O
 serviço é tratado aqui como uma conexão para uma porta de rede simples,
 como por exemplo: telnet, HTTP, NFS, SSH, SMTP, POP, banco de dados, etc.

 No LVS a semântica padrão do cliente-servidor continua preservada. Cada cliente
 pensa que está diretamente conectado ao servidor real. Cada servidor real pensa
 que está conectado diretamente ao cliente. Ou seja, nem o cliente nem o servidor
 sabem que as conexões sofrem a intervenção do computador direcionador.

 Um LVS não é um beowulf, já que um beowulf é um grupo de máquinas onde
 cada uma calcula uma pequena porção de um problema grande (distribuindo
 tarefas/processos). No LVS, o servidor real não coopera (como no beowulf), os
 servidores reais não sabe sequer da existência de outros servidores reais no LVS.
 Tudo que os servidores reais sabem é que eles recebem conexões de clientes.

 Existe nessa configuração um ponto de falha que é o próprio balanceador de
 carga. Mas é possível utilizar mais de um equipamento para fazer o
 balanceamento de carga (mais de um nó direcionador), dessa forma aumentando
 o grau de disponibilidade.
15             Cluster de Balanceamento de Carga                        Luiz Arthur

 O computador direcionador de carga pode utilizar um abordagem de
 escalonamento diversificada, na qual o software pode decidir de maneira distinta
 como distribuir a carga entre os servidores reais.

 Existem diferentes formas de configuração do algoritmo de escalonamento. Os
 modos de envio de requisições são: LVS-NAT, LVS-DR e LVS-Tun.

 Modos de Balancear a Carga com LVS:

 Balanceamento por NAT (VS-NAT)

 Este tipo de balanceamento aproveita a possibilidade do kernel do Linux
 funcionar como um roteador com NAT (Network Address Translation). A única
 rota padrão do cluster será o computador balanceador. Então quando um pacote
 externo chega, o nó balanceador modificará sua rota para que chegue a um dos
 nós (servidores reais) do cluster e, a de origem para que seja devolvido a ele e
 reenviado ao cliente que iniciou a conexão.

 Então o LVS-NAT funciona da seguinte forma:

 1. O Cliente faz uma requisição de serviço ao balanceador de carga executando
 o LVS;

 2. O Balanceador decide à que nó vai enviar a requisição, reescreve o cabeçalho
 do datagrama TCP/IP e envia ao nó correspondente;
16             Cluster de Balanceamento de Carga                         Luiz Arthur

 3. O nó recebe a requisição de serviço, processa, gera a resposta e envia ao
 balanceador de carga;

 4. O balanceador reescreve novamente o cabeçalho TCP/IP do datagrama e envia
 de volta ao cliente como se ele próprio tivesse gerado a resposta.

 A grande vantagem do VS-NAT reside no fato de que os nós que compõem o
 cluster poderiam executar qualquer sistema operacional que suporte TCP/IP,
 sendo que toda manipulação de endereços e gestão do cluster é feito pelo nó
 balanceador de carga.

 Entretanto este método faz o balanceamento em nível de protocolo (neste caso no
 protocolo IP) o que ocasiona uma grande desvantagem, que é a de tornar o nó
 balanceador um grande gargalo, pois este nó tem uma tarefa árdua que é a de
 receber todos os pacotes dos clientes ler os pacotes, alterar estes pacotes para
 enviar para os servidores reais, ler os pacotes dos servidores reais e alterá-los
 para reenviar para os clientes, ou seja, todo o serviço de comunicação entre
 clientes e servidores fica a cargo do nó direcionador, tornando este um ponto de
 falha além de um gargalo.
17                 Cluster de Balanceamento de Carga                           Luiz Arthur


                                                             IP. 10.0.0.2
 IP. 200.0.0.126
                                                   IP. 10.0.0.1
                                                                             Servidores
                      Internet/                                                Reais
                       Intranet


     Cliente
                                  Nó direcionador LVS         IP. 10.0.0.3
                                     IP. 200.0.0.1

                       Figura do esquema físico do LVS-NAT

 Balanceamento por Encapsulamento IP (VS-Tun)

 Este método permite escalar um número maior de nós, 100 ou mais, porém todos
 deverão ser capazes de trabalhar com encapsulamento IP (IP Tunneling).

 O encapsulamento IP consiste em se fazer trafegar um datagrama TCP/IP, com
 seus endereços de origem e destino, dentro de um outro datagrama com origem e
 destino distintos e, quando esse datagrama chegar ao seu destino, seja
 desencapsulado o datagrama original para ser reroteado a partir dali.
18             Cluster de Balanceamento de Carga                               Luiz Arthur

 O VS-Tun é uma forma de se utilizar um roteamento alternativo, por exemplo
 uma rede A para uma rede B passando por uma rede C. O problema deste método
 é que nem todos os sistemas operacionais suportam o encapsulamento, sendo
 normalmente este método exclusivo do Linux.

 Com a utilização deste método de balanceamento, todos os nós do cluster
 precisam ter configurada em alguma interface um endereço IP publico se os nós
 estão distribuídos em uma WAN. O ponto de entrada do cluster é o balanceador
 de carga, porém uma vez que o tráfego chega a um dos nós, este roteará as
 respostas diretamente ao cliente sem passar pelo nó balanceador.


                                Servidor responde diretamente ao Cliente

                                                                 Túnel IP

                                                                             Servidores
                    Internet/                                                  Reais
                     Intranet
     Cliente                                                      Túnel IP
                                     Nó balanceador


                                Servidor responde diretamente ao Cliente


                     Figura do esquema físico do LVS-TUN
19             Cluster de Balanceamento de Carga                      Luiz Arthur

 No método VS-Tun todos os nós do cluster precisam ter IPs públicos, podendo se
 tornar um ponto negativo. Entretanto têm-se uma grande vantagem, os nós
 podem estas dispersos em uma área muito ampla. Ao separarmos
 geograficamente os servidores agregamos mais um ponto que é a alta
 disponibilidade, visto, que é muito mais difícil a ocorrência de problemas em
 todas as localizações dos nós.

 Balanceamento por Roteamento Direto (VS-DR)

 Este método requer que todos os nós do cluster tenham um IP público
 compartilhados virtualmente com o balanceador de carga e, que se encontrem na
 mesma rede física (mesmo segmento) do balanceador de carga.

 A carga imposta ao balanceador de carga será menor, visto que não será
 necessário distribuir os pacotes (como no caso do NAT) e nem encapsular (no
 caso do Encapsulamento IP).

 O balanceador nesse caso não será um gargalo para o tráfego. O trafego
 unicamente passará pelo balanceador e será roteado diretamente ao nó e, este
 roteará a resposta diretamente ao cliente. O balanceador de carga, como sempre
 será o ponto de entrada para o cluster.

 Entretanto as interfaces dos nós deverão estar configuradas para não responder
 a comandos ARP para não interferir com outros protocolos (todos os
 equipamentos respondem pelo mesmo endereço IP com MACs distintos).
20             Cluster de Balanceamento de Carga                               Luiz Arthur

 Quando uma requisição chega ao balanceador, este decide para qual nó será
 enviada tal requisição e assim envia o pacote a nível de enlace para o endereço
 MAC do nó eleito.

 Quando o pacote chega ao nó com a MAC destino, tal pacote é analisado em nível
 de rede (TCP/IP), como o nó também tem o endereço IP público do cluster ele
 aceita o pacote, processa e envia a resposta diretamente ao cliente.



                                 Servidor responde diretamente ao Cliente


                                                           Segmento físico
                                                                             Servidores
                    Internet/                                                  Reais
                     Intranet
     Cliente
                                      Nó balanceador


                                 Servidor responde diretamente ao Cliente


                     Figura do esquema físico do LVS-DR
21             Cluster de Balanceamento de Carga                       Luiz Arthur

 Os problemas desse método são:

 1. Nem todos os sistemas operacionais permitem configurar um IP ou um
 dispositivo de modo a não responder a comandos ARP;

 2. Todos os nós devem estar no mesmo segmento físico para poder encaminhar
 os datagramas a nível de enlace para os endereços MAC, perdendo assim a
 possibilidade de dispersar geograficamente o cluster como no método anterior.

 Após apresentar os métodos de se fazer o balanceamento, os principais atributos
 de cada um são:

 ➢VS-DR padrão, possui alto desempenho e pode ser configurado na maioria dos
 sistemas operacionais. Os servidores Reais precisam estar na mesma rede do nós
 direcionador (o servidor real e o direcionador podem requisitar o ARP um do
 outro);

 ➢VS-NAT, menor desempenho, alta latência. O Servidor real só precisa da pilha
 TCP/IP (exemplo, qualquer sistema operacional e até mesmo uma impressora da
 rede) funciona para múltiplas instâncias de serviços (exemplo, múltiplas cópias
 de um serviço rodando em portas diferentes).

 ➢VS-Tun, Servidores Reais apenas em Linux. Possui o mesmo desempenho do VS-
 DR. Necessário se o servidor real estiver em uma rede diferente do nó
 direcionador (exemplo, na Internet).
22                 Cluster de Balanceamento de Carga                     Luiz Arthur

 Instalando e configurando o LVS no Slackware Linux

 Todas as edições do LVS estão disponíveis em www.linuxvirtualserver.org.

 Geralmente cada edição do LVS é feita de duas maneiras.

     ●   Um pacote tar o qual você pode usar para compilar o LVS tanto fora como
         dentro dos diretórios do Kernel.

     ●   Ou, um patch para ser usando somente para compilar o LVS dentro da árvore
         de diretórios do Kernel.

 A não ser que tenha-se uma bom motivo para usar um Kernel antigo, use o 2.4.23
 (ou superior) cujo código do LVS já está incluso. Desta forma na maioria das
 implementações de um Cluster LVS não faz necessário adicionar nem configurar
 nenhum parâmetro diretamente no Kernel.

 Fora possíveis configurações do Kernel, um utilitário requerido é o ipvsadm em
 http://www.linuxvirtualserver.org/software/ipvs.html. Diferentes versões de
 Kernel (2.2.x, 2.4.x, 2.6.x) requerem diferentes versões do ipvsadm. Se você
 simplesmente obter a última versão do ipvsadm, este não funcionará com os
 Kernel's 2.4.x, então esteja certo de ter pego a versão correta do ipvsadm para
 série do seu Kernel.
23                Cluster de Balanceamento de Carga                                  Luiz Arthur

 Configurando o LVS usando o encaminhamento VS-NAT

 O encaminhamento VS-NAT foi o primeiro método criado para fazer um LVS.
 Para os kernels 2.2.x no nó direcionador, o VS-NAT fornece pouco desempenho
 se comparado com os métodos VS-DR e VS-Tun, devido ao demasiado uso da CPU
 em reescrever as regras dos pacotes, mas mesmo assim o VS-NAT ainda é útil em
 várias circunstâncias. No Kernel 2.4.x a performance do LVS-NAT teve melhoras
 de desempenho.

               Cliente                                          Servidor Real
               IP. 192.168.2.254                           IP. 192.168.1.1124
                                             HUB


                                                                                 Servidores
                                                                                   Reais


                 Nó Direcionador
                 IP. 192.168.2.11024 (eth0:110)               Servidor Real
                 IP. 192.168.1.924 (eth0)                IP. 192.168.1.1224

 O alias da placa de rede (eth0:110) no nó direcionador é configurado pelo script de
 configuração (apresentado a seguir), então, não adicione este IP. Não deve haver nenhuma
 rota padrão, e todas as interfaces na rede 192.168.1.0/24 devem ser capazes de pingar umas
 as outras. O Cliente não deve ser capaz de acessar nada até que o IP alias esteja habilitado no
 Direcionador. Para o teste, não tenha nenhum outro IP nos computadores.
24             Cluster de Balanceamento de Carga                         Luiz Arthur

 No nó direcionador, iremos criar um script (vamos chamá-lo de rc.diretor) que
 habilitará a máquina para fazer o balanceamento de carga do cluster (ver script
 no slide a seguir).

 Basicamente o script executa as seguintes tarefas:

 1 – Habilita o nó direcionador para que este funcione como um roteador/gateway
 (forward) entre os servidores reais e os clientes. Desabilita, pedidos ICMP entre
 as redes internas e externas.

 2- Configura um IP alias (virtual) para que o nó direcionador se comunique tanto
 com a rede externa. Neste caso estamos configurando uma interface virtual por
 que estamos utilizando apenas uma única placa de rede, em caso de duas placas
 de rede, uma para a rede interna e outra para a rede externa, iriamos configurar
 a placa de rede com comunicação a rede externa.

 3 – Finalmente no passo três o script habilita através do ipvsadm o uso do telnet
 como serviço a ser balanceado entre os servidores reais (192.168.1.11 e
 192.168.1.12), ou seja, quando o cliente externo tentar utilizar o telnet no
 endereço 192.168.2.110 quem responderá não será o nó direcionador mas sim
 um dos servidores reais.
25                 Cluster de Balanceamento de Carga                                Luiz Arthur
     #!/bin/sh
     #Configurando o forward no vs-nat (1 on, 0 off). 1
      cat /proc/sys/net/ipv4/ip_forward
      echo "1" >/proc/sys/net/ipv4/ip_forward
     #o nó diretor é o gateway para os servidores reais
     #turn OFF icmp redirects (1 on, 0 off)
      echo "0" >/proc/sys/net/ipv4/conf/all/send_redirects
      cat       /proc/sys/net/ipv4/conf/all/send_redirects
      echo "0" >/proc/sys/net/ipv4/conf/default/send_redirects
      cat       /proc/sys/net/ipv4/conf/default/send_redirects
      echo "0" >/proc/sys/net/ipv4/conf/eth0/send_redirects
      cat       /proc/sys/net/ipv4/conf/eth0/send_redirects
     #Configurando o IP alias do nó direcionador               2
      /sbin/ifconfig eth0:110 192.168.2.110 broadcast 192.168.2.255 netmask 255.255.255.0
     #Configurando o nó diretor como gateway
      /sbin/route add default gw 192.168.2.254 netmask 0.0.0.0 metric     1
     #Limpando a tabela ipvsadm tables
      /sbin/ipvsadm -C
     #Instalando serviços no LVS com ipvsadm          3
     #Adicionando o telnet com o escalonador round robing
      /sbin/ipvsadm -A -t 192.168.2.110:telnet -s rr
     #Redirecionando telnet para 192.168.1.11 usando VS-NAT (-m), com     peso=1
      /sbin/ipvsadm -a -t 192.168.2.110:telnet -r 192.168.1.11:telnet     -m -w 1
     #Checando se o servidor real está ativo!
      ping -c 1 192.168.1.11
     #Redirecionando telnet para 192168.1.12 usando LVS-NAT, com peso     = 1
      /sbin/ipvsadm -a -t 192.168.2.110:telnet -r 192.168.1.12:telnet     -m -w 1
     #Checando se o servidor real está ativo!
      ping -c 1 192.168.1.12
     #Lista a tabela de serviços do LVS.
     /sbin/ipvsadm
26             Cluster de Balanceamento de Carga                          Luiz Arthur

 Os servidores reais também precisam executar um pequeno script para iniciarem
 suas funções. Observe abaixo o script (iremos chamá-lo de rc.lvsreal) dos
 servidores reais:

               #!/bin/sh
               #Script dos Servidores Reais
               #configurando como gateway padrão o nó direcionador
                /sbin/route add default gw 192.168.1.9
               #Mostrando a rota padrão
                /bin/netstat -rn
               #Verificando se o gateway está ativo
                ping -c 1 192.168.1.9
               #Checando o IP alias
                ping -c 1 192.168.2.110

               #Desabilita a capacidade dos servidores      reais    de
               #roteamento.
                echo "0" >/proc/sys/net/ipv4/ip_forward
                cat       /proc/sys/net/ipv4/ip_forward


 Estás configurações são básicas e podem ser configuradas sem script, a parte
 fundamental deste é a adição do nó direcionador como gateway padrão.
27             Cluster de Balanceamento de Carga                     Luiz Arthur
 Testando o funcionamento do VS-NAT

 Para saber se o Cluster de Balanceamanto de Carga LVS está funcionando
 corretamente, podemos ir no nó direcionador, executar o comando ipvsadm. Tal,
 comando apresentará a seguinte saída:

 # ipvsadm
 IP Virtual Server version 0.9.14 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port          Forward Weight ActiveConn InActConn
 TCP 192.168.2.110:telnet rr
   -> 192.168.1.11:telnet          Masq    1      0          0
   -> 192.168.1.12:telnet          Masq    1      0          0

 Agora, faça um telnet de um cliente para 192.168.2.110. Você terá o prompt de
 login de um dos servidores reais (perceba qual). Então no nó direcionador,
 execute o ipvsadm novamente:

 # ipvsadm
 IP Virtual Server version 0.9.14 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port          Forward Weight ActiveConn InActConn
 TCP 192.168.2.110:telnet rr
   -> 192.168.1.11:telnet          Masq    1      1          0
   -> 192.168.1.12:telnet          Masq    1      0          0

 Perceba que o contador do ActiveConn foi incrementado.
28             Cluster de Balanceamento de Carga                         Luiz Arthur

 Abra outra janela no cliente e faça um telnet para 192.168.2.110. Você receberá
 o prompt de login do outro servidor real. Agora execute novamente o ipvsadm.

 # ipvsadm
 IP Virtual Server version 0.9.14 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port          Forward Weight ActiveConn InActConn
 TCP 192.168.2.110:telnet rr
   -> 192.168.1.11:telnet          Masq    1      1          0
   -> 192.168.1.12:telnet          Masq    1      1          0


 Agora existem duas conexões ativas. Você está então conectado nos servidores
 reais por meio do telnet.

 Configurando o VS-NAT para o serviço HTTP

 Nos slides anteriores configuramos o serviço telnet, tal serviço, e comumente
 utilizado para testar o LVS, mas tal serviço não é muito útil em um cluster então
 vamos configurar um serviço muito utilizado em um cluster o HTTP.
 Primeiramente esteja certo de que os servidores reais estão com o serviço HTTP
 habilitados na porta 80. Tenha as páginas web um pouco diferentes umas das
 outras para que você perceba em qual servidor estará se conectando (apenas
 para teste). Para fazer esta configuração manualmente, substitua o telnet pelo
 HTTP no script do direcionador e execute o script no nó direcionador novamente.
29     Cluster de Balanceamento de Carga   Luiz Arthur

 fim

Más contenido relacionado

La actualidad más candente

Gênero Textual: Propaganda
Gênero Textual: PropagandaGênero Textual: Propaganda
Gênero Textual: PropagandaJuliana Marinho
 
Produção de texto
Produção de textoProdução de texto
Produção de textoeebhomago
 
O adjetivo
O adjetivoO adjetivo
O adjetivoLurdes
 
Linguagem formal e informal.pdf
Linguagem formal e informal.pdfLinguagem formal e informal.pdf
Linguagem formal e informal.pdfCaroline Assis
 
Caderno de poemas
Caderno  de poemasCaderno  de poemas
Caderno de poemasAline Cruz
 
Critérios para avaliação da produção de textos
Critérios para avaliação da produção de textosCritérios para avaliação da produção de textos
Critérios para avaliação da produção de textosRosemary Batista
 
Artigo De OpiniãO E Editorial
Artigo De OpiniãO E EditorialArtigo De OpiniãO E Editorial
Artigo De OpiniãO E EditorialKleber Brito
 
Interpretação e Compreensão de Texto
Interpretação e Compreensão de Texto Interpretação e Compreensão de Texto
Interpretação e Compreensão de Texto Cláudia Heloísa
 
Orações coordenadas resumo e exercícios
Orações coordenadas   resumo e exercíciosOrações coordenadas   resumo e exercícios
Orações coordenadas resumo e exercíciosNAPNE
 
Linguagem formal e informal.pptx
Linguagem formal e informal.pptxLinguagem formal e informal.pptx
Linguagem formal e informal.pptxGuaraciMarques
 
Leitura e interpretaçãapartir de capa de livro
Leitura e interpretaçãapartir de capa de livroLeitura e interpretaçãapartir de capa de livro
Leitura e interpretaçãapartir de capa de livroSonia Amaral
 
Informações Implícitas
Informações ImplícitasInformações Implícitas
Informações ImplícitasTaïs Bressane
 
Plural palavras compostas
Plural palavras compostasPlural palavras compostas
Plural palavras compostasgracacruz
 
Implicitos pressupostos-subentendidos-ambiguidade
Implicitos pressupostos-subentendidos-ambiguidadeImplicitos pressupostos-subentendidos-ambiguidade
Implicitos pressupostos-subentendidos-ambiguidadeMaria Marlene Marcon
 

La actualidad más candente (20)

Gênero Textual: Propaganda
Gênero Textual: PropagandaGênero Textual: Propaganda
Gênero Textual: Propaganda
 
Produção de texto
Produção de textoProdução de texto
Produção de texto
 
O adjetivo
O adjetivoO adjetivo
O adjetivo
 
Linguagem formal e informal.pdf
Linguagem formal e informal.pdfLinguagem formal e informal.pdf
Linguagem formal e informal.pdf
 
Aula 4 - Operação de Frotas
Aula 4 - Operação de FrotasAula 4 - Operação de Frotas
Aula 4 - Operação de Frotas
 
Caderno de poemas
Caderno  de poemasCaderno  de poemas
Caderno de poemas
 
Critérios para avaliação da produção de textos
Critérios para avaliação da produção de textosCritérios para avaliação da produção de textos
Critérios para avaliação da produção de textos
 
Artigo De OpiniãO E Editorial
Artigo De OpiniãO E EditorialArtigo De OpiniãO E Editorial
Artigo De OpiniãO E Editorial
 
Interpretação e Compreensão de Texto
Interpretação e Compreensão de Texto Interpretação e Compreensão de Texto
Interpretação e Compreensão de Texto
 
A notícia
A notíciaA notícia
A notícia
 
Gramática
GramáticaGramática
Gramática
 
Emprego de conectores
Emprego de conectoresEmprego de conectores
Emprego de conectores
 
Orações coordenadas resumo e exercícios
Orações coordenadas   resumo e exercíciosOrações coordenadas   resumo e exercícios
Orações coordenadas resumo e exercícios
 
Linguagem formal e informal.pptx
Linguagem formal e informal.pptxLinguagem formal e informal.pptx
Linguagem formal e informal.pptx
 
Leitura e interpretaçãapartir de capa de livro
Leitura e interpretaçãapartir de capa de livroLeitura e interpretaçãapartir de capa de livro
Leitura e interpretaçãapartir de capa de livro
 
Informações Implícitas
Informações ImplícitasInformações Implícitas
Informações Implícitas
 
Plural palavras compostas
Plural palavras compostasPlural palavras compostas
Plural palavras compostas
 
Elementos da comunicação
Elementos da comunicaçãoElementos da comunicação
Elementos da comunicação
 
Gramática e Ortografia
Gramática e OrtografiaGramática e Ortografia
Gramática e Ortografia
 
Implicitos pressupostos-subentendidos-ambiguidade
Implicitos pressupostos-subentendidos-ambiguidadeImplicitos pressupostos-subentendidos-ambiguidade
Implicitos pressupostos-subentendidos-ambiguidade
 

Similar a Cluster Balanceamento Carga

Alocação Eficiente de Recursos de Energia com Ant Colony
Alocação Eficiente de Recursos de Energia com Ant ColonyAlocação Eficiente de Recursos de Energia com Ant Colony
Alocação Eficiente de Recursos de Energia com Ant ColonyLeinylson Fontinele
 
Sistemas operacionais de redes II
Sistemas operacionais de redes IISistemas operacionais de redes II
Sistemas operacionais de redes IIDaniel Brandão
 
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...Joao Galdino Mello de Souza
 
Aula 3 (alta disponibilidade)
Aula 3 (alta disponibilidade)Aula 3 (alta disponibilidade)
Aula 3 (alta disponibilidade)Evandro Júnior
 
Planejamento de capacidade em ambiente virtualizado, por Bruno Domingues
Planejamento de capacidade em ambiente virtualizado, por Bruno DominguesPlanejamento de capacidade em ambiente virtualizado, por Bruno Domingues
Planejamento de capacidade em ambiente virtualizado, por Bruno DominguesJoao Galdino Mello de Souza
 
Cliente e servidor
Cliente e servidorCliente e servidor
Cliente e servidorDavi Silva
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de MicroservicesDeep Tech Brasil
 
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...Carlos Eduardo
 
Conceitos básicos de BSS e OCS
Conceitos básicos de BSS e OCSConceitos básicos de BSS e OCS
Conceitos básicos de BSS e OCSAdriano Ramos
 
Fundamentos Básicos de BSS e OCS
Fundamentos Básicos de BSS e OCSFundamentos Básicos de BSS e OCS
Fundamentos Básicos de BSS e OCSAdriano Ramos
 

Similar a Cluster Balanceamento Carga (20)

Alocação Eficiente de Recursos de Energia com Ant Colony
Alocação Eficiente de Recursos de Energia com Ant ColonyAlocação Eficiente de Recursos de Energia com Ant Colony
Alocação Eficiente de Recursos de Energia com Ant Colony
 
Cluster
ClusterCluster
Cluster
 
Sistemas operacionais de redes II
Sistemas operacionais de redes IISistemas operacionais de redes II
Sistemas operacionais de redes II
 
Lamport
LamportLamport
Lamport
 
Redes de computador
Redes de computadorRedes de computador
Redes de computador
 
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
 
Aula 7 (clouter)
Aula 7 (clouter)Aula 7 (clouter)
Aula 7 (clouter)
 
Elastic load balancing melhores praticas
Elastic load balancing melhores praticasElastic load balancing melhores praticas
Elastic load balancing melhores praticas
 
Aula 3 (alta disponibilidade)
Aula 3 (alta disponibilidade)Aula 3 (alta disponibilidade)
Aula 3 (alta disponibilidade)
 
JBoss Clustering
JBoss ClusteringJBoss Clustering
JBoss Clustering
 
Planejamento de capacidade em ambiente virtualizado, por Bruno Domingues
Planejamento de capacidade em ambiente virtualizado, por Bruno DominguesPlanejamento de capacidade em ambiente virtualizado, por Bruno Domingues
Planejamento de capacidade em ambiente virtualizado, por Bruno Domingues
 
Rct 16 - camada de rede
Rct   16 - camada de redeRct   16 - camada de rede
Rct 16 - camada de rede
 
Alta Disponibilidade
Alta Disponibilidade Alta Disponibilidade
Alta Disponibilidade
 
Cliente e servidor
Cliente e servidorCliente e servidor
Cliente e servidor
 
World Wide Web
World Wide WebWorld Wide Web
World Wide Web
 
Cluster
ClusterCluster
Cluster
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
 
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
 
Conceitos básicos de BSS e OCS
Conceitos básicos de BSS e OCSConceitos básicos de BSS e OCS
Conceitos básicos de BSS e OCS
 
Fundamentos Básicos de BSS e OCS
Fundamentos Básicos de BSS e OCSFundamentos Básicos de BSS e OCS
Fundamentos Básicos de BSS e OCS
 

Más de Luiz Arthur

Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?Luiz Arthur
 
Desafios da cibersegurança - ontem, hoje e amanhã
Desafios da cibersegurança - ontem, hoje e amanhãDesafios da cibersegurança - ontem, hoje e amanhã
Desafios da cibersegurança - ontem, hoje e amanhãLuiz Arthur
 
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...Luiz Arthur
 
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...Luiz Arthur
 
Detecção de alertas de segurança em redes de computadores usando redes sociai...
Detecção de alertas de segurança em redes de computadores usando redes sociai...Detecção de alertas de segurança em redes de computadores usando redes sociai...
Detecção de alertas de segurança em redes de computadores usando redes sociai...Luiz Arthur
 
Evaluating the Utilization of Twitter Messages as a Source of Security Alerts
Evaluating the Utilization of Twitter Messages as a Source of Security AlertsEvaluating the Utilization of Twitter Messages as a Source of Security Alerts
Evaluating the Utilization of Twitter Messages as a Source of Security AlertsLuiz Arthur
 
Análise de Mensagens de Segurança Postadas no Twitter
Análise de Mensagens de Segurança Postadas no TwitterAnálise de Mensagens de Segurança Postadas no Twitter
Análise de Mensagens de Segurança Postadas no TwitterLuiz Arthur
 
match making e propaganda na web
match making e propaganda na webmatch making e propaganda na web
match making e propaganda na webLuiz Arthur
 
Mineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookMineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookLuiz Arthur
 
Invasao kernel.org
Invasao kernel.orgInvasao kernel.org
Invasao kernel.orgLuiz Arthur
 
Núcleo do Linux (Kernel Linux)
Núcleo do Linux (Kernel Linux)Núcleo do Linux (Kernel Linux)
Núcleo do Linux (Kernel Linux)Luiz Arthur
 
Palestra Ferramentas de Segurança Open Source v.2
Palestra Ferramentas de Segurança Open Source v.2Palestra Ferramentas de Segurança Open Source v.2
Palestra Ferramentas de Segurança Open Source v.2Luiz Arthur
 
Palestra mau uso da tecnologia
Palestra mau uso da tecnologiaPalestra mau uso da tecnologia
Palestra mau uso da tecnologiaLuiz Arthur
 
UTFPR-inventario-patrimonio-laboratorio-e105
UTFPR-inventario-patrimonio-laboratorio-e105UTFPR-inventario-patrimonio-laboratorio-e105
UTFPR-inventario-patrimonio-laboratorio-e105Luiz Arthur
 
01 programação - introdução computação
01 programação - introdução computação01 programação - introdução computação
01 programação - introdução computaçãoLuiz Arthur
 
Bibliografia recomendada - programação C
Bibliografia recomendada - programação CBibliografia recomendada - programação C
Bibliografia recomendada - programação CLuiz Arthur
 
Bibliografia recomendada-programacao-python
Bibliografia recomendada-programacao-pythonBibliografia recomendada-programacao-python
Bibliografia recomendada-programacao-pythonLuiz Arthur
 
Bibliografia recomendada-seguranca
Bibliografia recomendada-segurancaBibliografia recomendada-seguranca
Bibliografia recomendada-segurancaLuiz Arthur
 
Bibliografia recomendada-redes
Bibliografia recomendada-redesBibliografia recomendada-redes
Bibliografia recomendada-redesLuiz Arthur
 

Más de Luiz Arthur (20)

Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
 
Desafios da cibersegurança - ontem, hoje e amanhã
Desafios da cibersegurança - ontem, hoje e amanhãDesafios da cibersegurança - ontem, hoje e amanhã
Desafios da cibersegurança - ontem, hoje e amanhã
 
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
 
NAPSOL
NAPSOLNAPSOL
NAPSOL
 
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
 
Detecção de alertas de segurança em redes de computadores usando redes sociai...
Detecção de alertas de segurança em redes de computadores usando redes sociai...Detecção de alertas de segurança em redes de computadores usando redes sociai...
Detecção de alertas de segurança em redes de computadores usando redes sociai...
 
Evaluating the Utilization of Twitter Messages as a Source of Security Alerts
Evaluating the Utilization of Twitter Messages as a Source of Security AlertsEvaluating the Utilization of Twitter Messages as a Source of Security Alerts
Evaluating the Utilization of Twitter Messages as a Source of Security Alerts
 
Análise de Mensagens de Segurança Postadas no Twitter
Análise de Mensagens de Segurança Postadas no TwitterAnálise de Mensagens de Segurança Postadas no Twitter
Análise de Mensagens de Segurança Postadas no Twitter
 
match making e propaganda na web
match making e propaganda na webmatch making e propaganda na web
match making e propaganda na web
 
Mineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookMineração de dados no Gmail e Facebook
Mineração de dados no Gmail e Facebook
 
Invasao kernel.org
Invasao kernel.orgInvasao kernel.org
Invasao kernel.org
 
Núcleo do Linux (Kernel Linux)
Núcleo do Linux (Kernel Linux)Núcleo do Linux (Kernel Linux)
Núcleo do Linux (Kernel Linux)
 
Palestra Ferramentas de Segurança Open Source v.2
Palestra Ferramentas de Segurança Open Source v.2Palestra Ferramentas de Segurança Open Source v.2
Palestra Ferramentas de Segurança Open Source v.2
 
Palestra mau uso da tecnologia
Palestra mau uso da tecnologiaPalestra mau uso da tecnologia
Palestra mau uso da tecnologia
 
UTFPR-inventario-patrimonio-laboratorio-e105
UTFPR-inventario-patrimonio-laboratorio-e105UTFPR-inventario-patrimonio-laboratorio-e105
UTFPR-inventario-patrimonio-laboratorio-e105
 
01 programação - introdução computação
01 programação - introdução computação01 programação - introdução computação
01 programação - introdução computação
 
Bibliografia recomendada - programação C
Bibliografia recomendada - programação CBibliografia recomendada - programação C
Bibliografia recomendada - programação C
 
Bibliografia recomendada-programacao-python
Bibliografia recomendada-programacao-pythonBibliografia recomendada-programacao-python
Bibliografia recomendada-programacao-python
 
Bibliografia recomendada-seguranca
Bibliografia recomendada-segurancaBibliografia recomendada-seguranca
Bibliografia recomendada-seguranca
 
Bibliografia recomendada-redes
Bibliografia recomendada-redesBibliografia recomendada-redes
Bibliografia recomendada-redes
 

Cluster Balanceamento Carga

  • 1. 1 Cluster de Balanceamento de Carga Luiz Arthur A Internet esta se tornado mais e mais importante a cada dia, com isto o trafego de dados na Internet tem aumentado drásticamente (~100% ao ano). A carga de trabalho dos servidores na Internet tem de aumentar na mesma proporção caso contrário os usuário da Internet ficariam insatisfeitos com tais serviços, o que poderia trazer prejuízos para várias empresas. Para tentar resolver este problema existem basicamente duas soluções: ● Uma é à evolução dos servidores, sendo que, a medida que cresce a demanda pelo servidor, o mesmo deve “crescer” (evoluir tecnologicamente) na mesma proporção em termos de hardware, fornecendo alta performance para os usuários, porém este crescimento de hardware é muito complexo e pior pode ainda tornar-se impossível. ● Outra, solução é a medida que for crescendo a demanda por serviços, usarmos a técnica de cluster, fazendo a adição de mais servidores, incluindo mais e mais máquinas para prover um dado serviço, tornando o sistema escalável e menos suscetível a falhas.
  • 2. 2 Cluster de Balanceamento de Carga Luiz Arthur Um Cluster de Balanceamento de Carga é um conjunto de máquinas (duas ou mais) nas quais estão sendo executadas aplicações requerida por um número muito grande pessoas. Um bom Cluster de Balanceamento de Carga deve ter a capacidade de receber os pedidos de requisição de serviço de vários clientes e distribuir (balancear a carga de trabalho) tais serviços às máquinas que constituem o cluster de forma que nenhuma máquina fique sobrecarregada e/ou ociosa. Assim, este tipo de Cluster distribui o tráfego entrante ou requisições de recursos provenientes para os nós (máquinas que compõe o cluster) que executam os mesmos programa entre as máquinas que compõem o cluster. O balanceamento de carga entre servidores faz parte de uma solução abrangente em uma explosiva e crescente utilização da rede e da Internet. Provendo um aumento na capacidade da rede, melhorando a performance de sistemas da Internet. Um consistente balanceamento de carga mostra-se hoje, como parte integrante de todo o projeto de Web Hosting e comércio eletrônico. Mas não podemos ficar com a idéia presa de que isso é só para provedores de Internet, devemos aproveitar as características desses clusters em empresas comuns e desse modo usar a tecnologia para atendermos os clientes internos das empresas.
  • 3. 3 Cluster de Balanceamento de Carga Luiz Arthur Os sistemas de Cluster baseado em Balanceamento de Carga integram/agrupam as máquinas que compõem o cluster, de forma que as requisições provenientes dos clientes sejam distribuídas de maneira equilibrada entre os tais nós. Os sistemas baseados em cluster de balanceamento de carga não trabalham junto em um único processo, mas redirecionando as requisições dos clientes de forma independente assim que chegam baseados em um escalonador e um algoritmo próprio. Este tipo de cluster é especialmente utilizado em serviços de comércio eletrônico e provedores de Internet que necessitam de resolver diferenças de carga provenientes de múltiplas requisições de entrada em tempo real. Quando não se faz balanceamento de carga entre servidores que possuem a mesma capacidade de resposta a um cliente, começamos a ter problemas, pois um ou mais servidores podem responder a requisição feita e a comunicação fica prejudicada. Por isso devemos colocar um elemento que fará o balanceamento entre os servidores, os usuários e configurá-lo para isso, entretanto podemos colocar múltiplos servidores de um lado que, para os clientes, eles parecerão ser somente um endereço.
  • 4. 4 Cluster de Balanceamento de Carga Luiz Arthur Existem alguns pontos críticos que devem ser observados na implementação de um bom cluster de balanceamento de carga, são os que seguem: ● O algoritmo usado para o balanceamento de carga, levando-se em consideração como é feito o balanceamento entre os servidores e quando um cliente fizer uma requisição para o endereço virtual, todo o processo de escolha do servidor e resposta do servidor deve ocorrer de modo transparente e imperceptível para o usuário como se não existisse o balanceamento. ●Utilizar métodos para checar se os servidores/nós que compõem o cluster estão ativos e funcionando. Isto é vital para que a comunicação não seja redirecionada para um servidor que acabou de ter uma falha. ●Balanceamento de carga é mais que um simples redirecionamento do tráfego dos clientes para outros servidores. Para implementação correta, o equipamento que fará o balanceamento precisa ter características como verificação permanente da comunicação, checagem dos servidores e redundância. Todos esses ítens são necessários para que suporte à escalabilidade do volume de tráfego das redes sem vir a se tornar um gargalo ou um ponto único de falha.
  • 5. 5 Cluster de Balanceamento de Carga Luiz Arthur Algoritmos de Balanceamento de Carga Existem algoritmos que ajudam a prover balanceamento de carga, eles basicamente são técnicas especificas de distribuição de carga dentre os nós que constituem o cluster. Cada algoritmo tem a sua peculiaridade, tal como, a forma que estes fazer a distribuição de tarefa, qual o critério de atribuir ou não o serviço a um nó do cluster que já tem vários serviços sendo executado, etc. Veremos a seguir alguns algoritmos que ajudam na tarefa de fazer um bom balanceamento de carga, é claro que cada algoritmo se aplica melhor em determinadas situações. Round Robin O Round Robin funciona da seguinte forma. Uma pequena unidade de tempo, denominada timeslice ou quantum, é definida. Todos os processos são armazenados em uma fila circular. O escalonador da CPU percorre a fila, alocando a CPU para cada processo durante um quantum (previamente definido). Mais precisamente, o escalonador retira o primeiro processo da fila e procede à sua execução. Se o processo não termina após um quantum, ocorre uma preempção, e o processo é inserido no fim da fila. Se o processo termina antes de um quantum, a CPU é liberada para a execução de novos processos. Em ambos os casos, após a liberação da CPU, um novo processo é escolhido na fila. Novos processos são inseridos no fim da fila. Quando um processo é retirado da fila para a CPU, ocorre uma troca de contexto, o que resulta em um tempo adicional na execução do processo.
  • 6. 6 Cluster de Balanceamento de Carga Luiz Arthur Round Robin Ponderado Este algoritmo é igual ao anterior, porém atribui a cada servidor um peso. Esse peso é um inteiro que indica a capacidade de processamento do nó, de maneira que o algoritmo Round Robin se modificará para que os nós com maior capacidade de processamento recebam mais requisições (ao menos mais que os demais de menor capacidade de processamento). Semelhante a uma política FIFO (First In Fisrt Out - o primeiro que entra é o primeiro que sai), porém com pesos. Neste caso o servidor vai entrar na fila proporcionalmente ao seu peso. Assim, se as máquinas m1, m2, m3 e m4 tiverem o mesmo poder computacional e a máquina m5 tiver o dobro, seria uma boa idéia colocar peso 1 para as máquinas m1, m2, m3 e m4 e peso 2 para a máquina m5. Um possível escalonamento de tarefas, neste caso seria m1, m2, m5, m3, m4, m5, m1, m2, m5, m3, m4, m5. Least Connection Esse algoritmo re-orienta as conexões para o servidor que está com o menor número de conexões ativas. Porém, número de conexões ativas não é diretamente proporcional à utilização dos recursos computacionais, no entanto este algoritmo é uma aproximação desta situação, uma vez que a heterogeneidade das conexões tende a desaparecer quando o número de requisições cresce. Este algoritmo de distribuição consulta os nós a cada momento para ver quantas conexões abertas cada um tem com os clientes, e envia a requisição ao servidor que possui menos conexões no momento.
  • 7. 7 Cluster de Balanceamento de Carga Luiz Arthur Weighted Least Connection Similar ao Least Connection, só que com pesos. O número de conexões ativas é ponderadas pelo peso antes de se decidir para qual servidor/nó a requisição vai ser encaminhada. Por exemplo, em um ambiente com as máquinas m1 e m2 com peso 1 e a máquina m3 com peso 2. Se o número de requisições ativas for, respectivamente 50, 60 e 70, o número de conexões efetivas é igual a Número_de_conexões/Peso, ou seja, 50, 60 e 35. A próxima requisição vai para a máquina m3 pois esta máquina apresenta a menor relação número de requisições por peso de processamento. Locality Based Least Connection Este algoritmo atribui os trabalhos com o mesmo endereço de origem sempre ao mesmo servidor a menos que ele esteja sobrecarregado ou indisponível no momento. No caso de sobrecarga o trabalho é atribuído a outro servidor com menos conexões. Locality Based Least Connection with Replication Atribui o trabalho ao servidor que tem o menor número de conexões dentre o conjunto que está lidando com certo endereço de destino. Caso todos estejam superlotados, um nó com menos trabalhos é escolhido e adicionado ao conjunto. Se o servidor não foi modificado em um determinado período de tempo o nó mais ocupado é removido do conjunto para evitar um alto grau de replicação.
  • 8. 8 Cluster de Balanceamento de Carga Luiz Arthur Mas como distribuir carga entre servidores de rede? Existem várias formas de montar um cluster e distribuir a carga entre os nós. O método mais simples é mediante um DNS Round-Robin. Para se obter um balanceamento de carga com DNS faz-se necessário definir várias entradas tipo A no arquivo de configuração do domínio em questão. @ IN SOA dns1.exemplo.com.br. email.exemplo.com.br. ( 01 ; serial 03H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS dns1 IN NS dns2 IN MX 10 mail dns1 IN A 1.2.3.41 dns2 IN A 1.2.3.42 mail IN A 1.2.3.50 www IN A 1.2.3.1 # Servidor 1 IN A 1.2.3.2 # Servidor 2 IN A 1.2.3.3 # Servidor 3 IN A 1.2.3.4 # Servidor 4 ftp IN A 1.2.3.1 # Servidor 1 IN A 1.2.3.2 # Servidor 2 IN A 1.2.3.3 # Servidor 3 IN A 1.2.3.4 # Servidor 4
  • 9. 9 Cluster de Balanceamento de Carga Luiz Arthur Para cada requisição de resolução de nomes para www.exemplo.com.br ou ftp.exemplo.com.br, o servidor em princípio devolverá um IP distinto. Porém, essa facilidade aparente encontra um inconveniente, o cache de DNS. Os servidores DNS possuem cache com as últimas requisições realizadas visando agilizar o processo de resolução. Isso pode ser um problema porque o balanceamento não seria feito de forma justa para todos os servidores WWW ou FTP. Uma "solução" que apenas ameniza o problema é a diminuição do TTL (time to live), que é o tempo de vida de um registro em uma cache de DNS em segundos. Então com um TTL baixo faz-se com que os outros servidores DNS não mantenham por muito tempo o registro em seus caches. Este método encontra também o problema de não levar em conta a carga real de cada nó, sendo possível que todas as requisições sejam passadas sempre para o mesmo nó o que acabaria por saturá-lo, mesmo que os demais estivessem servindo requisições triviais. Uma solução melhor estará em utilizar um balanceador de carga para distribuir as conexões entre os servidores. Com esta solução pode-se aumentar a noção de "unidade" do cluster, pois para o usuário existirá um único endereço IP para o qual serão dirigidas todas as requisições.
  • 10. 10 Cluster de Balanceamento de Carga Luiz Arthur A granularidade da distribuição pode se dar por conexão (cada requisição de cliente se dirige ao nó que melhor tenha condição de atender) ou por sessões (armazena-se em uma tabela qual nó recebe a conexão do cliente e as envia ao mesmo nó enquanto permanecer ativa a sessão). Quando algum nó falha, é mais fácil mascarar o erro, tendo nesse caso o balanceador de carga mecanismos necessários para detectar a falha do nó e eliminá-lo da sua lista, de forma a não encaminhar nenhuma requisição. Por esse mesmo motivo, a administração do cluster se torna simplificada, pode-se retirar a qualquer momento qualquer dos nós para realizar tarefas de manutenção sem que sejam provocadas interrupções de serviços. O balanceamento de carga pode ser feito em dois níveis: a nível de conexão e IP e a nível de protocolo. Para o balanceamento de carga em nível de protocolo o balanceador seria uma espécie de proxy, o qual seria programando para receber conexões em uma determinada porta, podendo inspecionar o pacote para ver se trata do protocolo correto ou extrair algum tipo de dado do protocolo, podendo ainda filtrar requisições incorretas e encaminhar as conexões para um dos nós do cluster. O problema com essa aproximação com proxy é a necessidade de se analisar o protocolo em todas a conexões entrantes, o programa balanceador é muito complexo e poderia causar um gargalo na entrada do cluster (estima-se que o número de nós para servir sem problemas de congestionamento seria em torno de 4 a 6).
  • 11. 11 Cluster de Balanceamento de Carga Luiz Arthur O balanceamento a nível de conexão IP, é muito mais eficiente já que o processo a ser realizado é muito mais simples. Quando chega uma requisição ao balanceador ele somente aceita a conexão e encaminha para um dos nós. Nesse nível, o número de nós atrás do balanceador pode oscilar entre 25 e 100 observando-se é claro a potência dos equipamentos.
  • 12. 12 Cluster de Balanceamento de Carga Luiz Arthur Linux Virtual Server Linux Virtual Server ou simplesmente LVS uma solução de balanceamento de carga baseado em cluster, o LVS é executado no sistema operacional Linux, e prove alta disponibilidade e escalabilidade a servidores de redes. O LVS é uma avançada solução de balanceamento de carga que pode ser utilizada para fornece serviços críticos de rede, que necessitam de um alto grau de disponibilidade e escalabilidade, tal como, serviços da web, mail, mídia, VoIP, etc. A arquitetura do cluster de balanceamento de carga do LVS é completamente transparente para usuários finais, sendo que os usuários interagem com o computador que faz o papel de servidor virtual, este servidor virtual é responsável por receber os pedidos dos usuários e repassar para algum servidor real (que compõe o cluster). Os servidores reais e o servidor LVS (responsável pelo balanceamento de carga) podem estar interconectados por uma rede local (LAN) ou por uma rede geograficamente distribuída (WAN, Internet, etc).
  • 13. 13 Cluster de Balanceamento de Carga Luiz Arthur O servidor de balanceamento de carga LVS pode despachar os pedidos de vários clientes para diferentes servidores reais de forma que pareça que o servidor virtual (que tem um endereço IP fixo) pareça estar fazendo inúmeros serviços em paralelo ou simultaneamente, mas no entanto quem está atendendo este pedido são os servidores reais do cluster. O LVS é escalavel e transparente aos erros dos servidores reais, ou seja o LVS torna possível retirar ou acrescentar servidores reais no cluster, sem que os clientes sintam ou saibam que isto está ocorrendo. Isto possibilita também que caso haja alguma falha em um servidor real, este seja retirado para reparo, sem que os clientes sintam tal falha, e assim que o servidor real for reparado este pode ser adicionado ao cluster, isto fornece disponibilidade de serviços ao cluster. Cliente LAN/WAN Internet/ Intranet Servidores Servidor de Reais Balanceamento de Carga
  • 14. 14 Cluster de Balanceamento de Carga Luiz Arthur Então um LVS é um grupo de servidores com um computador chamado de direcionador que faz com que o Cluster LVS pareça para o mundo de fora (um servidor na Internet, por exemplo) como se fosse apenas uma única máquina, mas na verdade são um conjunto que computadores. O LVS pode oferecer mais serviços, com maior capacidade e desempenho, ou serviços redundantes em relação aos serviços disponíveis em servidores únicos. O serviço é tratado aqui como uma conexão para uma porta de rede simples, como por exemplo: telnet, HTTP, NFS, SSH, SMTP, POP, banco de dados, etc. No LVS a semântica padrão do cliente-servidor continua preservada. Cada cliente pensa que está diretamente conectado ao servidor real. Cada servidor real pensa que está conectado diretamente ao cliente. Ou seja, nem o cliente nem o servidor sabem que as conexões sofrem a intervenção do computador direcionador. Um LVS não é um beowulf, já que um beowulf é um grupo de máquinas onde cada uma calcula uma pequena porção de um problema grande (distribuindo tarefas/processos). No LVS, o servidor real não coopera (como no beowulf), os servidores reais não sabe sequer da existência de outros servidores reais no LVS. Tudo que os servidores reais sabem é que eles recebem conexões de clientes. Existe nessa configuração um ponto de falha que é o próprio balanceador de carga. Mas é possível utilizar mais de um equipamento para fazer o balanceamento de carga (mais de um nó direcionador), dessa forma aumentando o grau de disponibilidade.
  • 15. 15 Cluster de Balanceamento de Carga Luiz Arthur O computador direcionador de carga pode utilizar um abordagem de escalonamento diversificada, na qual o software pode decidir de maneira distinta como distribuir a carga entre os servidores reais. Existem diferentes formas de configuração do algoritmo de escalonamento. Os modos de envio de requisições são: LVS-NAT, LVS-DR e LVS-Tun. Modos de Balancear a Carga com LVS: Balanceamento por NAT (VS-NAT) Este tipo de balanceamento aproveita a possibilidade do kernel do Linux funcionar como um roteador com NAT (Network Address Translation). A única rota padrão do cluster será o computador balanceador. Então quando um pacote externo chega, o nó balanceador modificará sua rota para que chegue a um dos nós (servidores reais) do cluster e, a de origem para que seja devolvido a ele e reenviado ao cliente que iniciou a conexão. Então o LVS-NAT funciona da seguinte forma: 1. O Cliente faz uma requisição de serviço ao balanceador de carga executando o LVS; 2. O Balanceador decide à que nó vai enviar a requisição, reescreve o cabeçalho do datagrama TCP/IP e envia ao nó correspondente;
  • 16. 16 Cluster de Balanceamento de Carga Luiz Arthur 3. O nó recebe a requisição de serviço, processa, gera a resposta e envia ao balanceador de carga; 4. O balanceador reescreve novamente o cabeçalho TCP/IP do datagrama e envia de volta ao cliente como se ele próprio tivesse gerado a resposta. A grande vantagem do VS-NAT reside no fato de que os nós que compõem o cluster poderiam executar qualquer sistema operacional que suporte TCP/IP, sendo que toda manipulação de endereços e gestão do cluster é feito pelo nó balanceador de carga. Entretanto este método faz o balanceamento em nível de protocolo (neste caso no protocolo IP) o que ocasiona uma grande desvantagem, que é a de tornar o nó balanceador um grande gargalo, pois este nó tem uma tarefa árdua que é a de receber todos os pacotes dos clientes ler os pacotes, alterar estes pacotes para enviar para os servidores reais, ler os pacotes dos servidores reais e alterá-los para reenviar para os clientes, ou seja, todo o serviço de comunicação entre clientes e servidores fica a cargo do nó direcionador, tornando este um ponto de falha além de um gargalo.
  • 17. 17 Cluster de Balanceamento de Carga Luiz Arthur IP. 10.0.0.2 IP. 200.0.0.126 IP. 10.0.0.1 Servidores Internet/ Reais Intranet Cliente Nó direcionador LVS IP. 10.0.0.3 IP. 200.0.0.1 Figura do esquema físico do LVS-NAT Balanceamento por Encapsulamento IP (VS-Tun) Este método permite escalar um número maior de nós, 100 ou mais, porém todos deverão ser capazes de trabalhar com encapsulamento IP (IP Tunneling). O encapsulamento IP consiste em se fazer trafegar um datagrama TCP/IP, com seus endereços de origem e destino, dentro de um outro datagrama com origem e destino distintos e, quando esse datagrama chegar ao seu destino, seja desencapsulado o datagrama original para ser reroteado a partir dali.
  • 18. 18 Cluster de Balanceamento de Carga Luiz Arthur O VS-Tun é uma forma de se utilizar um roteamento alternativo, por exemplo uma rede A para uma rede B passando por uma rede C. O problema deste método é que nem todos os sistemas operacionais suportam o encapsulamento, sendo normalmente este método exclusivo do Linux. Com a utilização deste método de balanceamento, todos os nós do cluster precisam ter configurada em alguma interface um endereço IP publico se os nós estão distribuídos em uma WAN. O ponto de entrada do cluster é o balanceador de carga, porém uma vez que o tráfego chega a um dos nós, este roteará as respostas diretamente ao cliente sem passar pelo nó balanceador. Servidor responde diretamente ao Cliente Túnel IP Servidores Internet/ Reais Intranet Cliente Túnel IP Nó balanceador Servidor responde diretamente ao Cliente Figura do esquema físico do LVS-TUN
  • 19. 19 Cluster de Balanceamento de Carga Luiz Arthur No método VS-Tun todos os nós do cluster precisam ter IPs públicos, podendo se tornar um ponto negativo. Entretanto têm-se uma grande vantagem, os nós podem estas dispersos em uma área muito ampla. Ao separarmos geograficamente os servidores agregamos mais um ponto que é a alta disponibilidade, visto, que é muito mais difícil a ocorrência de problemas em todas as localizações dos nós. Balanceamento por Roteamento Direto (VS-DR) Este método requer que todos os nós do cluster tenham um IP público compartilhados virtualmente com o balanceador de carga e, que se encontrem na mesma rede física (mesmo segmento) do balanceador de carga. A carga imposta ao balanceador de carga será menor, visto que não será necessário distribuir os pacotes (como no caso do NAT) e nem encapsular (no caso do Encapsulamento IP). O balanceador nesse caso não será um gargalo para o tráfego. O trafego unicamente passará pelo balanceador e será roteado diretamente ao nó e, este roteará a resposta diretamente ao cliente. O balanceador de carga, como sempre será o ponto de entrada para o cluster. Entretanto as interfaces dos nós deverão estar configuradas para não responder a comandos ARP para não interferir com outros protocolos (todos os equipamentos respondem pelo mesmo endereço IP com MACs distintos).
  • 20. 20 Cluster de Balanceamento de Carga Luiz Arthur Quando uma requisição chega ao balanceador, este decide para qual nó será enviada tal requisição e assim envia o pacote a nível de enlace para o endereço MAC do nó eleito. Quando o pacote chega ao nó com a MAC destino, tal pacote é analisado em nível de rede (TCP/IP), como o nó também tem o endereço IP público do cluster ele aceita o pacote, processa e envia a resposta diretamente ao cliente. Servidor responde diretamente ao Cliente Segmento físico Servidores Internet/ Reais Intranet Cliente Nó balanceador Servidor responde diretamente ao Cliente Figura do esquema físico do LVS-DR
  • 21. 21 Cluster de Balanceamento de Carga Luiz Arthur Os problemas desse método são: 1. Nem todos os sistemas operacionais permitem configurar um IP ou um dispositivo de modo a não responder a comandos ARP; 2. Todos os nós devem estar no mesmo segmento físico para poder encaminhar os datagramas a nível de enlace para os endereços MAC, perdendo assim a possibilidade de dispersar geograficamente o cluster como no método anterior. Após apresentar os métodos de se fazer o balanceamento, os principais atributos de cada um são: ➢VS-DR padrão, possui alto desempenho e pode ser configurado na maioria dos sistemas operacionais. Os servidores Reais precisam estar na mesma rede do nós direcionador (o servidor real e o direcionador podem requisitar o ARP um do outro); ➢VS-NAT, menor desempenho, alta latência. O Servidor real só precisa da pilha TCP/IP (exemplo, qualquer sistema operacional e até mesmo uma impressora da rede) funciona para múltiplas instâncias de serviços (exemplo, múltiplas cópias de um serviço rodando em portas diferentes). ➢VS-Tun, Servidores Reais apenas em Linux. Possui o mesmo desempenho do VS- DR. Necessário se o servidor real estiver em uma rede diferente do nó direcionador (exemplo, na Internet).
  • 22. 22 Cluster de Balanceamento de Carga Luiz Arthur Instalando e configurando o LVS no Slackware Linux Todas as edições do LVS estão disponíveis em www.linuxvirtualserver.org. Geralmente cada edição do LVS é feita de duas maneiras. ● Um pacote tar o qual você pode usar para compilar o LVS tanto fora como dentro dos diretórios do Kernel. ● Ou, um patch para ser usando somente para compilar o LVS dentro da árvore de diretórios do Kernel. A não ser que tenha-se uma bom motivo para usar um Kernel antigo, use o 2.4.23 (ou superior) cujo código do LVS já está incluso. Desta forma na maioria das implementações de um Cluster LVS não faz necessário adicionar nem configurar nenhum parâmetro diretamente no Kernel. Fora possíveis configurações do Kernel, um utilitário requerido é o ipvsadm em http://www.linuxvirtualserver.org/software/ipvs.html. Diferentes versões de Kernel (2.2.x, 2.4.x, 2.6.x) requerem diferentes versões do ipvsadm. Se você simplesmente obter a última versão do ipvsadm, este não funcionará com os Kernel's 2.4.x, então esteja certo de ter pego a versão correta do ipvsadm para série do seu Kernel.
  • 23. 23 Cluster de Balanceamento de Carga Luiz Arthur Configurando o LVS usando o encaminhamento VS-NAT O encaminhamento VS-NAT foi o primeiro método criado para fazer um LVS. Para os kernels 2.2.x no nó direcionador, o VS-NAT fornece pouco desempenho se comparado com os métodos VS-DR e VS-Tun, devido ao demasiado uso da CPU em reescrever as regras dos pacotes, mas mesmo assim o VS-NAT ainda é útil em várias circunstâncias. No Kernel 2.4.x a performance do LVS-NAT teve melhoras de desempenho. Cliente Servidor Real IP. 192.168.2.254 IP. 192.168.1.1124 HUB Servidores Reais Nó Direcionador IP. 192.168.2.11024 (eth0:110) Servidor Real IP. 192.168.1.924 (eth0) IP. 192.168.1.1224 O alias da placa de rede (eth0:110) no nó direcionador é configurado pelo script de configuração (apresentado a seguir), então, não adicione este IP. Não deve haver nenhuma rota padrão, e todas as interfaces na rede 192.168.1.0/24 devem ser capazes de pingar umas as outras. O Cliente não deve ser capaz de acessar nada até que o IP alias esteja habilitado no Direcionador. Para o teste, não tenha nenhum outro IP nos computadores.
  • 24. 24 Cluster de Balanceamento de Carga Luiz Arthur No nó direcionador, iremos criar um script (vamos chamá-lo de rc.diretor) que habilitará a máquina para fazer o balanceamento de carga do cluster (ver script no slide a seguir). Basicamente o script executa as seguintes tarefas: 1 – Habilita o nó direcionador para que este funcione como um roteador/gateway (forward) entre os servidores reais e os clientes. Desabilita, pedidos ICMP entre as redes internas e externas. 2- Configura um IP alias (virtual) para que o nó direcionador se comunique tanto com a rede externa. Neste caso estamos configurando uma interface virtual por que estamos utilizando apenas uma única placa de rede, em caso de duas placas de rede, uma para a rede interna e outra para a rede externa, iriamos configurar a placa de rede com comunicação a rede externa. 3 – Finalmente no passo três o script habilita através do ipvsadm o uso do telnet como serviço a ser balanceado entre os servidores reais (192.168.1.11 e 192.168.1.12), ou seja, quando o cliente externo tentar utilizar o telnet no endereço 192.168.2.110 quem responderá não será o nó direcionador mas sim um dos servidores reais.
  • 25. 25 Cluster de Balanceamento de Carga Luiz Arthur #!/bin/sh #Configurando o forward no vs-nat (1 on, 0 off). 1 cat /proc/sys/net/ipv4/ip_forward echo "1" >/proc/sys/net/ipv4/ip_forward #o nó diretor é o gateway para os servidores reais #turn OFF icmp redirects (1 on, 0 off) echo "0" >/proc/sys/net/ipv4/conf/all/send_redirects cat /proc/sys/net/ipv4/conf/all/send_redirects echo "0" >/proc/sys/net/ipv4/conf/default/send_redirects cat /proc/sys/net/ipv4/conf/default/send_redirects echo "0" >/proc/sys/net/ipv4/conf/eth0/send_redirects cat /proc/sys/net/ipv4/conf/eth0/send_redirects #Configurando o IP alias do nó direcionador 2 /sbin/ifconfig eth0:110 192.168.2.110 broadcast 192.168.2.255 netmask 255.255.255.0 #Configurando o nó diretor como gateway /sbin/route add default gw 192.168.2.254 netmask 0.0.0.0 metric 1 #Limpando a tabela ipvsadm tables /sbin/ipvsadm -C #Instalando serviços no LVS com ipvsadm 3 #Adicionando o telnet com o escalonador round robing /sbin/ipvsadm -A -t 192.168.2.110:telnet -s rr #Redirecionando telnet para 192.168.1.11 usando VS-NAT (-m), com peso=1 /sbin/ipvsadm -a -t 192.168.2.110:telnet -r 192.168.1.11:telnet -m -w 1 #Checando se o servidor real está ativo! ping -c 1 192.168.1.11 #Redirecionando telnet para 192168.1.12 usando LVS-NAT, com peso = 1 /sbin/ipvsadm -a -t 192.168.2.110:telnet -r 192.168.1.12:telnet -m -w 1 #Checando se o servidor real está ativo! ping -c 1 192.168.1.12 #Lista a tabela de serviços do LVS. /sbin/ipvsadm
  • 26. 26 Cluster de Balanceamento de Carga Luiz Arthur Os servidores reais também precisam executar um pequeno script para iniciarem suas funções. Observe abaixo o script (iremos chamá-lo de rc.lvsreal) dos servidores reais: #!/bin/sh #Script dos Servidores Reais #configurando como gateway padrão o nó direcionador /sbin/route add default gw 192.168.1.9 #Mostrando a rota padrão /bin/netstat -rn #Verificando se o gateway está ativo ping -c 1 192.168.1.9 #Checando o IP alias ping -c 1 192.168.2.110 #Desabilita a capacidade dos servidores reais de #roteamento. echo "0" >/proc/sys/net/ipv4/ip_forward cat /proc/sys/net/ipv4/ip_forward Estás configurações são básicas e podem ser configuradas sem script, a parte fundamental deste é a adição do nó direcionador como gateway padrão.
  • 27. 27 Cluster de Balanceamento de Carga Luiz Arthur Testando o funcionamento do VS-NAT Para saber se o Cluster de Balanceamanto de Carga LVS está funcionando corretamente, podemos ir no nó direcionador, executar o comando ipvsadm. Tal, comando apresentará a seguinte saída: # ipvsadm IP Virtual Server version 0.9.14 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.2.110:telnet rr -> 192.168.1.11:telnet Masq 1 0 0 -> 192.168.1.12:telnet Masq 1 0 0 Agora, faça um telnet de um cliente para 192.168.2.110. Você terá o prompt de login de um dos servidores reais (perceba qual). Então no nó direcionador, execute o ipvsadm novamente: # ipvsadm IP Virtual Server version 0.9.14 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.2.110:telnet rr -> 192.168.1.11:telnet Masq 1 1 0 -> 192.168.1.12:telnet Masq 1 0 0 Perceba que o contador do ActiveConn foi incrementado.
  • 28. 28 Cluster de Balanceamento de Carga Luiz Arthur Abra outra janela no cliente e faça um telnet para 192.168.2.110. Você receberá o prompt de login do outro servidor real. Agora execute novamente o ipvsadm. # ipvsadm IP Virtual Server version 0.9.14 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.2.110:telnet rr -> 192.168.1.11:telnet Masq 1 1 0 -> 192.168.1.12:telnet Masq 1 1 0 Agora existem duas conexões ativas. Você está então conectado nos servidores reais por meio do telnet. Configurando o VS-NAT para o serviço HTTP Nos slides anteriores configuramos o serviço telnet, tal serviço, e comumente utilizado para testar o LVS, mas tal serviço não é muito útil em um cluster então vamos configurar um serviço muito utilizado em um cluster o HTTP. Primeiramente esteja certo de que os servidores reais estão com o serviço HTTP habilitados na porta 80. Tenha as páginas web um pouco diferentes umas das outras para que você perceba em qual servidor estará se conectando (apenas para teste). Para fazer esta configuração manualmente, substitua o telnet pelo HTTP no script do direcionador e execute o script no nó direcionador novamente.
  • 29. 29 Cluster de Balanceamento de Carga Luiz Arthur fim