Differences

This shows you the differences between two versions of the page.

Link to this comparison view

lvs_centos_6.3_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== LVS + CentOS 6.3 ======
  
 +LVS Linux Virtual Server (LVS) é uma solução de balanceamento de carga avançada para sistemas Linux. É um projeto Open Source começado por Wensong Zhang em maio de 1998. A missão do projeto é construir um servidor de alto desempenho e altamente disponível para Linux usando a tecnologia de clustering, que fornece altos níveis de escalabilidade,​ confiabilidade e usabilidade.
 +
 +O trabalho principal do projeto de LVS deve agora desenvolver o software de balanceamento de carga avançado de IP (IPVS), o software de balanceamento de carga a nível aplicativo (KTCPVS) e componentes de gerenciamento de cluster.
 +
 +IPVS: é um software balanceador de carga avançado do IP executado dentro do Linux. O código de IPVS era já incluído no núcleo padrão 2.4 e 2.6 de Linux.
 +
 +KTCPVS: executa a carga do nível de aplicação que balança dentro do Linux, atualmente sob desenvolvimento.
 +
 +Os usuários podem usar as soluções de LVS para construir serviços de rede altamente escaláveis e altamente disponíveis,​ tais como o serviço de mídia, serviço de email. Os meios prestam serviços de manutenção e serviços de VoIP, e integram serviços de rede escaláveis em aplicações de confiança em grande escala do e-comércio ou do e-governo.
 +
 +As soluções de LVS têm sido desdobradas já em muitas aplicações reais durante todo o mundo.
 +
 +**A topologia geral do LVS é como a figura abaixo:​** ​
 +
 +{{:​virtualserver.png?​500|}}
 +
 +
 +**Topologia LVS com HA é como a figura abaixo:​** ​
 +
 +{{:​lvs_ha.jpg?​500|}}
 +
 +O que muda é a forma como configuramos cada um destes modelos.
 +
 +**LVS por NAT**
 +
 +No modelo por NAT o servidor diretor gerencia todas as conexões entre os clientes e os servidores reais, embora este modelo seja o mais interessante pelo fato dos servidores reais utilizarem qualquer sistema operacional que suporte TCP/IP, ele acaba tendo o diretor como o gargalo do modelo.
 +
 +**LVS por Túneis**
 +
 +No modelo por túneis os servidores precisam suportar conexão por túnel, mas o mais interessante é que a topologia final pode ser espalhada pela Internet, ou seja, os servidores reais podem tanto estar na rede local LAN como atráves da WAN (e neste caso, podemos utilizar geolocalização para balancear as conexões entre os cliente e os servidores de forma a reduzir a latência de resposta)
 +
 +**LVS por Roteamento Direto**
 +
 +Neste modelo o diretor e os servidores reais estão no mesmo barramento de rede, o maior problema aqui é que neste modelo cada servidor real deve possuir o IP público que é utilizado pelo cliente, mas este IP público (que estará armazenado em uma interface virtual/​dummy) não deve responder a requisições ARP para o cliente. A pergunta é: por que isso é necessário?​ porque se o servidor real reponde-se o IP público diretamente para o cliente, o balanceamento só ocorreria na primeira requisição para o cliente e nas demais as requisições não seriam mais encaminhadas para o diretor, quebrando toda a estrutura de balanceamento.
 +
 +Da mesma forma que a topologia por túneis, a por roteamento direto entrega as requisições diretamente para o cliente
 +
 +Aqui vamos configurar o LVS para fazer o balanceamento de carga no serviço http porta 80, vamos utilizar o LVS com nat que é no meu ponto de vista o mais simples, podemos fazer o balanceamento de carga com outro serviço depois vou mostrar o que devemos mudar. ​
 +
 +**Requisitos:​**
 +
 + 1 Servidor CentOS 6.3 com 2 interfaces de rede este que vai ser o servidor de load balancer.
 +
 + 2 Servidores CentOS 6.3 cada um com 1 interface de rede estes servidores que vão ter o servidor apache instalados, este 2 servidores podem ser outro SO que suporte apache EX: Windows, FreeBSD ou outra distribuição Linux.
 +
 +**Ips utilizados.**
 +
 +**Servidor 1:**
 +
 +  *  **eth1**: 200.200.200.1/​24 ​ ->  **Ip da WAN**
 +  *  **eth0**: 192.168.1.40/​24 ​ ->  **Ip da LAN**
 +
 +**Servidor 2:**
 +
 +  *  **eth0**: 192.168.1.41/​24 ​ ->  **Ip da LAN**
 +  *  **GW**: 192.168.1.40
 +
 +**Servidor 3:**
 +
 +  *  **eth0**: 192.168.1.42/​24 ​ ->  **Ip LAN**
 +  *  **GW**: 192.168.1.40
 +
 +
 +**OBS:** O LVS do tipo  **NAT** não funciona com todos os ips sendo da mesma rede, no nosso exemplo estou levando em consideração que o primeiro servidor tenha as 2 interfaces de rede, por exemplo para testes insira 2 interfaces em uma VM e configure a sua maquina local para acessar com um ip da faixa externa.
 +
 +EX: Servidor está com o ip 200.200.200.1/​24,​ com isso a sua maquina pode ser configurada com o ip 200.200.200.2/​24 somente para ter acesso ao servidor para testes, em caso de um ip publico dai não precisa.
 +
 +**Como vai funcionar ?**
 +
 +O cliente vai fazer a requisição para o 200.200.200.1 ele vai fazer o direcionamento da requisição para o servidor 2 ou servidor 3 dependendo do algoritmo que utilizarmos com LVS.
 +
 +Algoritmos de balanceamento:​
 +  * **rr** - Round Robin: Distribui as requisições igualmente entre os servidores disponíveis reais.
 +  * **wrr** - Weighted Round Robin: Atribui requisições aos servidores reais proporcionalmente ao peso. Servidores com pesos mais elevados receber novas requisições primeiro e obtém mais requisições do que os servidores com pesos inferiores. Servidores com pesos iguais obtém uma distribuição igual de novas  requisições.
 +  * **lc** - Least-Connection:​ Atribui mais requisições para os servidores reais com menos requisições ativas.
 +  * **wlc** - Weighted Least-Connection:​ Atribui mais requisições para os servidores com menos requisições e em relação ao peso dos servidores reais. Este é o padrão.
 +  * **lblc** -  Locality-Based Least-Connection:​ Atribui requisições destinadas para o mesmo endereço IP para o mesmo servidor, se o servidor não está sobrecarregado e impossibilitado de receber novas requisições,​ caso contrário, atribuir requisições a servidores com menos requisições,​ e mantem para a atribuição de futuras.
 +  * **lblcr** -  Locality-Based Least-Connection with Replication:​ Atribui requisições destinadas para o mesmo endereço IP para o nó que contém menos requisições definido para o endereço IP. Se todos os nós no conjunto de servidores estão carregados, ele pega um nó com menos requisições no cluster e adiciona ele no corte. Se o conjunto de servidores não foi modificado durante o tempo especificado,​ o nó mais carregado é removido a partir do conjunto de servidores, afim de evitar elevado grau de replicação.
 +  * **dh** - Destination Hashing: Atribui postos de trabalho para os servidores através de uma tabela de hash atribuído estaticamente por seus endereços IP de destino. (1º Melhor opção pra aplicações autenticadas)
 +  * **sh** - Source Hashing: Atribui postos de trabalho para os servidores através de uma tabela de hash atribuído estaticamente por seus endereços IP de origem. (2º Melhor opção para aplicações autenticadas)
 +
 +**OBS:** Caso esteja utilizando aplicações autenticadas os melhores algoritmos são **dh** e **sh** pois vão sempre mandar a requisição do cliente para o mesmo nodo do cluster não perdendo a autenticação,​ caso contrário o servidor vai ficar matando a autenticação pois a cada requisição a solicitação do cliente pode ir para um servidor diferente matando a autenticação :(
 +
 +
 +Para obter mais informações sobre os algoritmos podemos consultar o man do ipvsadm com o seguinte comando ​
 +
 +<sxh bash>
 +man 8 ipvsadm
 +</​sxh>​
 +
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialcentos6_en para que não falte nenhum pacote ou configuração.
 +
 +
 +====== Vamos configurar o servidor que vai trabalhar como load balancer ======
 +
 +
 +Vamos mandar atualizar os repositórios e fazer um upgrade do sistema ​
 +<sxh bash>
 +yum check-update && yum update -y
 +</​sxh>​
 +
 +Vamos instalar o ipsvadm que é o agente de configuração do load balancer ​
 +<sxh bash>
 +yum install ipvsadm -y
 +</​sxh>​
 +
 +Agora vamos inserir ele na inicialização do sistema
 +<sxh bash>
 +chkconfig --add ipvsadm
 +chkconfig ipvsadm on
 +</​sxh>​
 +
 +
 +====== Agora vamos instalar o apache e o php5 no servidor 2 ======
 + 
 +
 +Vamos mandar atualizar os repositórios e fazer um upgrade do sistema ​
 +<sxh bash>
 +yum check-update && yum update -y
 +</​sxh>​
 +
 +<sxh bash>
 +yum install httpd php -y
 +</​sxh>​
 +
 +Agora vamos inserir o apache na inicialização do sistema
 +<sxh bash>
 +chkconfig --add httpd
 +chkconfig httpd on
 +</​sxh>​
 +
 +Agora vamos criar uma pagina de index no servidor 2 somente para diferenciarmos os dois servidor ​
 +<sxh bash>
 +echo "<​h1>​Servidor 2</​h1>"​ > /​var/​www/​html/​index.html
 +</​sxh>​
 +
 +Agora vamos inicializar o apache
 +<sxh bash>
 +/​etc/​init.d/​httpd start
 +</​sxh>​
 +
 +====== Agora vamos instalar o apache e o php5 no servidor 3 ======
 + 
 +
 +Vamos mandar atualizar os repositórios e fazer um upgrade do sistema ​
 +<sxh bash>
 +yum check-update && yum update -y
 +</​sxh>​
 +
 +<sxh bash>
 +yum install httpd php -y
 +</​sxh>​
 +
 +Agora vamos inserir o apache na inicialização do sistema
 +<sxh bash>
 +chkconfig --add httpd
 +chkconfig httpd on
 +</​sxh>​
 +
 +Agora vamos criar uma pagina de index no servidor 3 somente para diferenciarmos os dois servidor ​
 +
 +<sxh bash>
 +echo "<​h1>​Servidor 3</​h1>"​ > /​var/​www/​html/​index.html
 +</​sxh>​
 +
 +Agora vamos inicializar o apache
 +<sxh bash>
 +/​etc/​init.d/​httpd start
 +</​sxh>​
 +
 +
 +====== Configuração do serviço LVS utilizando o algoritmo wlc ======
 +
 +Agora vamos criar as regras para o balanceamento utilizando o algoritmo wlc 
 +
 +Agora vamos criar o serviço virtual do LVS. 
 +
 +<sxh bash>
 +
 +ipvsadm -A -t 200.200.200.1:​80 -s wlc 
 +</​sxh>​
 +
 +Aqui especificamos a criação do serviço com a opção ​ **-A**, o tipo de protocolo com a opção ​ **-t** é o protocolo tcp se utilizamos a opção ​ **-u** é o protocolo udp, precisamos especificar qual o ip que irá responder as requisições para os clientes no nosso caso o ip 200.200.200.1 e a porta 80 com isso temos 200.200.200.1:​80 o -s é utilizado para especificarmos o algoritmo de balanceamento.
 +
 +
 +Agora vamos listar a regra do LVS 
 +
 +<sxh bash>
 +
 +ipvsadm -Ln
 +IP Virtual Server version 1.2.1 (size=4096)
 +Prot LocalAddress:​Port Scheduler Flags
 +  -> RemoteAddress:​Port ​          ​Forward Weight ActiveConn InActConn
 +TCP  200.200.200.1:​80 wlc
 +</​sxh>​
 +
 +
 +Agora vamos especificar para quais servidores vamos fazer o balanceamento,​ vamos inserir o servidor 2 nas regras do LVS. 
 +
 +<sxh bash>
 +
 +ipvsadm -a -t 200.200.200.1:​80 -r 192.168.1.41:​80 -m
 +</​sxh>​
 +
 +Aqui especificamos a adição de um servidor real ou seja o servidor que tem os serviços que vão ser disponibilizados para os clientes, o tipo de protocolo com a opção ​ **-t** é o protocolo tcp, precisamos especificar qual o ip que irá responder as requisições dos clientes 200.200.200.1:​80 o  **-r** é utilizado para especificarmos o ip do servidor real que tem os serviços que vão ser disponibilizados para os cliente no nosso caso o servidor 192.168.1.41 e qual a porta neste caso 80 com isso temos 192.168.1.41:​80 e o  **-m** significa que o tipo de balanceamento é nat. 
 +
 +Agora vamos especificar para quais servidores vamos fazer o balanceamento,​ vamos inserir o servidor 3 nas regras do LVS. 
 +
 +<sxh bash>
 +ipvsadm -a -t 200.200.200.1:​80 -r 192.168.1.42:​80 -m
 +</​sxh>​
 +
 +Aqui especificamos a adição de um servidor real ou seja o servidor que tem os serviços que vão ser disponibilizados para os clientes, o tipo de protocolo com a opção ​ **-t** é o protocolo tcp, precisamos especificar qual o ip que irá responder as requisições dos clientes 200.200.200.1:​80 o  **-r** é utilizado para especificarmos o ip do servidor real que tem os serviços que vão ser disponibilizados para os cliente no nosso caso o servidor 192.168.1.42 e qual a porta neste caso 80 com isso temos 192.168.1.42:​80 e o  **-m** significa que o tipo de balanceamento é nat.
 +
 +Agora vamos listar as regras do LVS 
 +
 +
 +<sxh bash>
 +ipvsadm -Ln
 +IP Virtual Server version 1.2.1 (size=4096)
 +Prot LocalAddress:​Port Scheduler Flags
 +  -> RemoteAddress:​Port ​          ​Forward Weight ActiveConn InActConn
 +TCP  200.200.200.1:​80 wlc
 +  -> 192.168.1.41:​80 ​             Masq    1      0          0         
 +  -> 192.168.1.42:​80 ​             Masq    1      0          0 
 +</​sxh>​
 +
 +**Parâmetros que aparecem na listagem:**
 +
 +  *  **Foward**: define o tipo de balanceamento,​ neste caso NAT.
 +  *  **Weight**: define se o servidor real esta acessível (1) ou não (0).
 +  *  **ActiveConn**:​ define se existem conexões ativas (1) ou não (0).
 +  *  **InActConn**:​ define os pacotes que estão entrando em conexão com o serviço.
 +
 + Agora precisamos habilitar o roteamento do servidor LVS para que ele possa encaminhar e responder as requisições dos clientes. ​
 +
 +<sxh bash>
 +sed -i "​s/​net.ipv4.ip_forward = 0/​net.ipv4.ip_forward = 1/" /​etc/​sysctl.conf
 +</​sxh>​
 +
 +Agora vamos fazer mais um ajuste no kernel
 +<sxh bash>
 +echo "​net.core.wmem_max = 16777216"​ >> /​etc/​sysctl.conf
 +echo "​net.core.rmem_max = 16777216"​ >> /​etc/​sysctl.conf
 +</​sxh>​
 +
 +Agora precisamos recarregar a configuração. ​
 +
 +<sxh bash>
 +sysctl -p
 +</​sxh>​
 +
 +Agora podemos acessar o nosso load balancer em http://​200.200.200.1 ​
 +
 +Agora vamos listar as regra do LVS 
 +
 +<sxh bash>
 +ipvsadm -Ln
 +IP Virtual Server version 1.2.1 (size=4096)
 +Prot LocalAddress:​Port Scheduler Flags
 +  -> RemoteAddress:​Port ​          ​Forward Weight ActiveConn InActConn
 +TCP  200.200.200.1:​80 wlc
 +  -> 192.168.1.41:​80 ​             Masq    1      0          16        ​
 +  -> 192.168.1.42:​80 ​             Masq    1      0          16 
 +</​sxh>​
 +
 +Depois de alguns acessos podemos notar que temos alguns valores que mudaram em InAcConn. ​
 +
 +====== Configuração do serviço LVS utilizando o algoritmo round robin ======
 +
 +Agora vamos fazer a implementação do load balancer com o algoritmo round robin 
 +
 +Primeiro temos que limpar as regras ​
 +
 +<sxh bash>
 +ipvsadm -C
 +</​sxh>​
 +
 +Agora vamos listar as regras ​
 +
 +<sxh bash>
 +ipvsadm -Ln
 +IP Virtual Server version 1.2.1 (size=4096)
 +Prot LocalAddress:​Port Scheduler Flags
 +  -> RemoteAddress:​Port ​          ​Forward Weight ActiveConn InActConn
 +</​sxh>​
 +
 +
 +Agora vamos criar o serviço virtual do LVS. 
 +
 +
 +<sxh bash>
 +ipvsadm -A -t 200.200.200.1:​80 -s rr
 +</​sxh>​
 +
 +Aqui especificamos a criação do serviço com a opção ​ **-A**, o tipo de protocolo com a opção ​ **-t** é o protocolo tcp se utilizamos a opção ​ **-u** é o protocolo udp, precisamos especificar qual o ip que irá responder as requisições para os clientes no nosso caso o ip 200.200.200.1 e a porta 80 com isso temos 200.200.200.1:​80 o  **-s** é utilizado para especificarmos o algoritmo de balanceamento. ​
 +
 +
 +Agora vamos listar a regra do LVS 
 +
 +
 +<sxh bash>
 +ipvsadm -Ln
 +IP Virtual Server version 1.2.1 (size=4096)
 +Prot LocalAddress:​Port Scheduler Flags
 +  -> RemoteAddress:​Port ​          ​Forward Weight ActiveConn InActConn
 +TCP  200.200.200.1:​80 rr
 +</​sxh>​
 +
 +Agora vamos especificar para quais servidores vamos fazer o balanceamento,​ vamos inserir o servidor 2 nas regras do LVS. 
 +
 +<sxh bash>
 +ipvsadm -a -t 200.200.200.1:​80 -r 192.168.1.41:​80 -m
 +</​sxh>​
 +
 +Aqui especificamos a adição de um servidor real ou seja o servidor que tem os serviços que vão ser disponibilizados para os clientes, o tipo de protocolo com a opção ​ **-t** é o protocolo tcp, precisamos especificar qual o ip que irá responder as requisições dos clientes 200.200.200.1:​80 o  **-r** é utilizado para especificarmos o ip do servidor real que tem os serviços que vão ser disponibilizados para os cliente no nosso caso o servidor 192.168.1.41 e qual a porta neste caso 80 com isso tempos 192.168.1.41:​80 e o  **-m** significa que o tipo de balanceamento é nat. 
 +
 +Agora vamos especificar para quais servidores vamos fazer o balanceamento,​ vamos inserir o servidor 3 nas regras do LVS. 
 +
 +<sxh bash>
 +ipvsadm -a -t 200.200.200.1:​80 -r 192.168.1.42:​80 -m
 +</​sxh>​
 +
 +Aqui especificamos a adição de um servidor real ou seja o servidor que tem os serviços que vão ser disponibilizados para os clientes, o tipo de protocolo com a opção ​ **-t** é o protocolo tcp, precisamos especificar qual o ip que irá responder as requisições dos clientes 200.200.200.1:​80 o  **-r** é utilizado para especificarmos o ip do servidor real que tem os serviços que vão ser disponibilizados para os cliente no nosso caso o servidor 192.168.1.41 e qual a porta neste caso 80  com isso tempos 192.168.1.42:​80 e o  **-m** significa que o tipo de balanceamento é nat. 
 +
 +Agora vamos listar as regras do LVS 
 +
 +<sxh bash>
 +ipvsadm -Ln
 +IP Virtual Server version 1.2.1 (size=4096)
 +Prot LocalAddress:​Port Scheduler Flags
 +  -> RemoteAddress:​Port ​          ​Forward Weight ActiveConn InActConn
 +TCP  200.200.200.1:​80 rr
 +  -> 192.168.1.41:​80 ​             Masq    1      0          16        ​
 +  -> 192.168.1.42:​80 ​             Masq    1      0          16 
 +</​sxh>​
 +
 +Parâmetros que aparecem na listagem:
 +
 +  *  **Foward**: define o tipo de balanceamento,​ neste caso NAT.
 +  *  **Weight**: define se o servidor real esta acessível (1) ou não (0).
 +  *  **ActiveConn**:​ define se existem conexões ativas (1) ou não (0).
 +  *  **InActConn**:​ define os pacotes que estão entrando em conexão com o serviço.
 +
 +Agora podemos acessar o nosso load balancer em http://​200.200.200.1 ​
 +
 +Agora vamos listar as regra do LVS 
 +
 +
 +<sxh bash>
 +ipvsadm -Ln
 +IP Virtual Server version 1.2.1 (size=4096)
 +Prot LocalAddress:​Port Scheduler Flags
 +  -> RemoteAddress:​Port ​          ​Forward Weight ActiveConn InActConn
 +TCP  200.200.200.1:​80 rr
 +  -> 192.168.1.41:​80 ​             Masq    1      0          0         
 +  -> 192.168.1.42:​80 ​             Masq    1      0          0  ​
 +</​sxh>​
 +
 +Depois de alguns acessos podemos notar que temos alguns valores que mudaram em InAcConn. ​
 +
 +Agora vamos salvar as nossas regras para que elas possam subir junto com o servidor ​
 +
 +<sxh bash>
 +ipvsadm-save > /​etc/​sysconfig/​ipvsadm
 +</​sxh>​
 +
 +Agora vamos visualizar o arquivo que mandamos salvar as regras ​
 +
 +<sxh bash>
 +cat /​etc/​sysconfig/​ipvsadm
 +-A -t 200.200.200.1:​http -s rr
 +-a -t 200.200.200.1:​http -r 192.168.1.41:​http -m -w 1
 +-a -t 200.200.200.1:​http -r 192.168.1.42:​http -m -w 1
 +</​sxh>​
 +
 +Agora vamos reiniciar o servidor para testar a inicialização das regras. ​
 +
 +<sxh bash>
 +reboot
 +</​sxh>​
 +
 +Agora vamos listar as regras do LVS 
 +
 +<sxh bash>
 +ipvsadm -Ln
 +IP Virtual Server version 1.2.1 (size=4096)
 +Prot LocalAddress:​Port Scheduler Flags
 +  -> RemoteAddress:​Port ​          ​Forward Weight ActiveConn InActConn
 +TCP  200.200.200.1:​80 rr
 +  -> 192.168.1.41:​80 ​             Masq    1      0          0         
 +  -> 192.168.1.42:​80 ​             Masq    1      0          0 
 +</​sxh>​
 +
 +Agora vamos verificar o uptime do servidor ​
 +
 +<sxh bash>
 +uptime
 + ​14:​08:​47 up 0 min,  1 user,  load average: 0.06, 0.01, 0.00
 +</​sxh>​
 +====== Configuração do serviço LVS utilizando o algoritmo dh ======
 +
 +Agora vamos testar o algoritmo dh
 +
 +Primeiro temos que limpar as regras ​
 +<sxh bash>
 +ipvsadm -C
 +</​sxh>​
 +
 +Agora vamos listar as regras ​
 +
 +<sxh bash>
 +ipvsadm -Ln
 +IP Virtual Server version 1.2.1 (size=4096)
 +Prot LocalAddress:​Port Scheduler Flags
 +  -> RemoteAddress:​Port ​          ​Forward Weight ActiveConn InActConn
 +</​sxh>​
 +
 +Agora vamos fazer a implementação do load balancer com o algoritmo round robin 
 +
 +Agora vamos criar o serviço virtual do LVS. 
 +
 +<sxh bash>
 +ipvsadm -A -t 200.200.200.1:​80 -s dh
 +</​sxh>​
 +
 +Aqui especificamos a criação do serviço com a opção ​ **-A**, o tipo de protocolo com a opção ​ **-t** é o protocolo tcp se utilizamos a opção ​ **-u** é o protocolo udp, precisamos especificar qual o ip que irá responder as requisições para os clientes no nosso caso o ip 200.200.200.1 e a porta 80 com isso temos 200.200.200.1:​80 o  **-s** é utilizado para especificarmos o algoritmo de balanceamento. ​
 +
 +
 +Agora vamos listar a regra do LVS 
 +
 +
 +<sxh bash>
 +ipvsadm -Ln
 +IP Virtual Server version 1.2.1 (size=4096)
 +Prot LocalAddress:​Port Scheduler Flags
 +  -> RemoteAddress:​Port ​          ​Forward Weight ActiveConn InActConn
 +TCP  200.200.200.1:​80 dh
 +</​sxh>​
 +
 +Agora vamos especificar para quais servidores vamos fazer o balanceamento,​ vamos inserir o servidor 2 nas regras do LVS. 
 +
 +<sxh bash>
 +ipvsadm -a -t 200.200.200.1:​80 -r 192.168.1.41:​80 -m
 +</​sxh>​
 +
 +Aqui especificamos a adição de um servidor real ou seja o servidor que tem os serviços que vão ser disponibilizados para os clientes, o tipo de protocolo com a opção ​ **-t** é o protocolo tcp, precisamos especificar qual o ip que irá responder as requisições dos clientes 200.200.200.1:​80 o  **-r** é utilizado para especificarmos o ip do servidor real que tem os serviços que vão ser disponibilizados para os cliente no nosso caso o servidor 192.168.1.41 e qual a porta neste caso 80 com isso temos 192.168.1.41:​80 e o  **-m** significa que o tipo de balanceamento é nat. 
 +
 +Agora vamos especificar para quais servidores vamos fazer o balanceamento,​ vamos inserir o servidor 3 nas regras do LVS. 
 +
 +<sxh bash>
 +ipvsadm -a -t 200.200.200.1:​80 -r 192.168.1.42:​80 -m
 +</​sxh>​
 +
 +Aqui especificamos a adição de um servidor real ou seja o servidor que tem os serviços que vão ser disponibilizados para os clientes, o tipo de protocolo com a opção ​ **-t** é o protocolo tcp, precisamos especificar qual o ip que irá responder as requisições dos clientes 200.200.200.1:​80 o  **-r** é utilizado para especificarmos o ip do servidor real que tem os serviços que vão ser disponibilizados para os cliente no nosso caso o servidor 192.168.1.42 e qual a porta neste caso 80 com isso temos 192.168.1.42:​80 e o  **-m** significa que o tipo de balanceamento é nat. 
 +
 +Agora vamos listar as regras do LVS 
 +
 +<sxh bash>
 +ipvsadm -Ln
 +IP Virtual Server version 1.2.1 (size=4096)
 +Prot LocalAddress:​Port Scheduler Flags
 +  -> RemoteAddress:​Port ​          ​Forward Weight ActiveConn InActConn
 +TCP  200.200.200.1:​80 dh
 +  -> 192.168.1.41:​80 ​             Masq    1      0          0         
 +  -> 192.168.1.42:​80 ​             Masq    1      0          0   
 +</​sxh>​
 +
 +Parâmetros que aparecem na listagem:
 +
 +  *  **Foward**: define o tipo de balanceamento,​ neste caso NAT.
 +  *  **Weight**: define se o servidor real esta acessível (1) ou não (0).
 +  *  **ActiveConn**:​ define se existem conexões ativas (1) ou não (0).
 +  *  **InActConn**:​ define os pacotes que estão entrando em conexão com o serviço.
 +
 +Agora podemos acessar o nosso load balancer em http://​200.200.200.1 ​
 +
 +Agora vamos listar as regra do LVS 
 +
 +
 +<sxh bash>
 +ipvsadm -Ln
 +IP Virtual Server version 1.2.1 (size=4096)
 +Prot LocalAddress:​Port Scheduler Flags
 +  -> RemoteAddress:​Port ​          ​Forward Weight ActiveConn InActConn
 +TCP  200.200.200.1:​80 dh
 +  -> 192.168.1.41:​80 ​             Masq    1      0          0         
 +  -> 192.168.1.42:​80 ​             Masq    1      0          0    ​
 +</​sxh>​
 +
 +Depois de alguns acessos podemos notar que temos alguns valores que mudaram em InAcConn. ​
 +
 +Note que o servidor 192.168.141 tem 2 requisições,​ porque o cliente conectou e mandou atualizar a tela, como o algoritmo dh trabalha com uma tabela de hash de destino o cliente que requisitou uma solicitação sempre vai ser respondido pelo menos servidor que o atendeu na primeira requisição,​ com isso não perdemos sessões autenticadas que é um grande problema quando trabalhamos com balanceamento.
 +
 +Ex: Quando estamos trabalhando com round robin o balanceamento de requisições é dividido igualmente para os dois, com isso se o cliente se autenticada no servidor 1 e a próxima requisição dele de uma página autenticada vai ser jogada para o segundo servidor com isso a autenticação não vai ser mais válida forçando o cliente a se autenticar novamente e matando a sessão anterior, porém na próxima solicitação vai acontecer a mesma coisa novamente entrando em um loop infinito :(
 +
 +Aqui no balanceamento podemos criar em um mesmo servidor o balanceamento de vários serviços simultaneamente exemplo:
 +<sxh bash>
 +ipvsadm -Ln
 +IP Virtual Server version 1.2.1 (size=4096)
 +Prot LocalAddress:​Port Scheduler Flags
 +  -> RemoteAddress:​Port ​          ​Forward Weight ActiveConn InActConn
 +TCP  200.200.200.1:​25 dh
 +  -> 192.168.1.41:​25 ​             Masq    1      0          0         
 +  -> 192.168.1.42:​25 ​             Masq    1      0          0         
 +TCP  200.200.200.1:​80 dh
 +  -> 192.168.1.41:​80 ​             Masq    1      0          0         
 +  -> 192.168.1.42:​80 ​             Masq    1      0          0         
 +TCP  200.200.200.1:​110 dh
 +  -> 192.168.1.41:​110 ​            ​Masq ​   1      0          0         
 +  -> 192.168.1.42:​110 ​            ​Masq ​   1      0          0         
 +TCP  200.200.200.1:​143 dh
 +  -> 192.168.1.41:​143 ​            ​Masq ​   1      0          0         
 +  -> 192.168.1.42:​143 ​            ​Masq ​   1      0          0         
 +TCP  200.200.200.1:​443 dh
 +  -> 192.168.1.41:​443 ​            ​Masq ​   1      0          2         
 +  -> 192.168.1.42:​443 ​            ​Masq ​   1      0          0         
 +TCP  200.200.200.1:​587 dh
 +  -> 192.168.1.41:​587 ​            ​Masq ​   1      0          0         
 +  -> 192.168.1.42:​587 ​            ​Masq ​   1      0          0         
 +TCP  200.200.200.1:​993 dh
 +  -> 192.168.1.41:​993 ​            ​Masq ​   1      0          0         
 +  -> 192.168.1.42:​993 ​            ​Masq ​   1      0          0         
 +TCP  200.200.200.1:​995 dh
 +  -> 192.168.1.41:​995 ​            ​Masq ​   1      0          0         
 +  -> 192.168.1.42:​995 ​            ​Masq ​   1      0          0
 +</​sxh>​
 +
 +
 +Aqui temos o balanceamento de vários serviços simultaneamente,​ precisando apenas inserir mais da seguinte forma:
 +
 +Aqui vamos fazer o balanceamento do servidor MySQL, aqui estamos utilizando o algoritmo dh mais podemos utilizar um algoritmo diferente para cada tipo de serviço.
 +<sxh bash>
 +ipvsadm -A -t 200.200.200.1:​3306 -s dh
 +</​sxh>​
 +
 +Agora vamos jogar para os servidores
 +<sxh bash>
 +ipvsadm -a -t 200.200.200.1:​3306 -r 192.168.1.25:​3306 -m
 +ipvsadm -a -t 200.200.200.1:​3306 -r 192.168.1.26:​3306 -m
 +</​sxh>​
 +
 +Agora é só ir administrando e adicionando mais serviços.
 +
 +====== ​ Referências ======
 +
 +  - http://​kb.linuxvirtualserver.org/​wiki/​Examples
 +  - http://​www.linuxvirtualserver.org/​
 +  - http://​kb.linuxvirtualserver.org/​wiki/​Main_Page
 +  - http://​www.linuxvirtualserver.org/​Documents.html
 +  - http://​www.linuxvirtualserver.org/​whatis.html
 +  - http://​www.linuxvirtualserver.org/​how.html
 +  - http://​www.linuxvirtualserver.org/​architecture.html
 +  - http://​www.linuxvirtualserver.org/​HighAvailability.html
 +  - http://​www.austintek.com/​LVS/​LVS-HOWTO/​
 +  - http://​www.austintek.com/​LVS/​LVS-HOWTO/​HOWTO/​
 +  - http://​www.austintek.com/​LVS/​LVS-HOWTO/​mini-HOWTO/​LVS-mini-HOWTO-pt.html