Agora vamos entender um pouco do arquivo de configuração 'haproxy.cfg'.
Prioridade de Servidores
Vamos supor que o Centos-2 e o Centos-3 são dois velhos servidores P3-1.2 GHz, enquanto Centos-4 e Centos-5 são dois brilhantes novos servidores de 2,6 GHz.
Neste caso, podemos informar para o 'HAproxy' usando a tag "weigth" palavra-chave, com valores entre 1 e 256, ele irá então distribuir a carga mais suavemente possível respeitando a prioridade:
server centos-2 192.168.1.2:80 cookie 2 weight 12 check
server centos-3 192.168.1.3:80 cookie 3 weight 12 check
server centos-4 192.168.1.4:80 cookie 4 weight 26 check
server centos-5 192.168.1.5:80 cookie 5 weight 26 check
Opção option dontlognull
A opção 'dontlognull' é usada para prevenir o proxy e registrar a saúde verificando a partir da Alteon. Se uma sessão de trocas não há dados, então não serão registrados.
Balanceamento de carga de algoritmos
HAProxy pode lidar com algoritmos de balanceamento de carga de vários tipos, são eles:
- Interrogação é 'hash', e usado para escolher um servidor que irá lidar com o pedido. Este é usado com caches de proxy para maximizar a taxa de acertos cache.
- url_param: pode ser usado para verificar certas partes da URL; por exemplo: os valores pedidos enviados via POST, ou um pedido que especifica um parâmetro user_id com um determinado valor pode chegar direcionado para o mesmo servidor usando o método url_param (veja mais na documentação).
Persistência de sessão com cookies
Se você está OK com o fato de que nem todos os navegadores do cliente aceitar cookies, e se você ainda quiser usar cookies, como um mecanismo de persistência de sessão, então HAProxy oferece uma maneira fácil de fazê-lo. Se você adicionar essa linha para a seção backend:
cookie SERVERID insert nocache indirect
Com essa opção, estamos dizendo ao HAProxy para inserir um cookie chamado ID_servidor na resposta HTTP. O cookie será enviado para o navegador do cliente através de um cabeçalho Set-Cookie na resposta, e que é enviada de volta pelo cliente em um cabeçalho de cookie em todas as solicitações subsequentes. Note que esse cookie é apenas um cookie de sessão, e não será gravado em disco pelo browser do cliente. Por esta razão, e por questões relacionadas com a cache, a documentação recomenda especificando 'nocache' às outras 2 opções e 'indirect'.
Em particular, indirect significa que o cookie será removido da solicitação HTTP, uma vez que é processado por HAProxy.
Depois de definir o cookie, você precisa associá-lo com os servidores no backend, como este:
server server1 10.1.1.1:80 cookie server01 check
server server2 10.1.1.2:80 cookie server02 check
Estatísticas de utilização
HAProxy oferece algumas estatísticas de sua utilização através de tabelas, mostrando os status de todos os servidores.
Para habilitar stats, basta adicionar as linhas abaixo:
stats permitir
stats uri / lb? stats
stats reino HAProxy \ Estatísticas
stats myusername admin: senhaaqui
Para acessar, digite no browser:
http://IP-HAPROXY-SERVER/haproxy?stats
Soft-stop
Este truque é bastante comum e muito simples: Em cada servidor dentro do diretório '/var/www/html', devemos criar o arquivo 'check.txt'; arquivo pelo qual será verificado pelo HAproxy.
Agora vamos supor que precisamos parar um dos servidores:
- Neste caso basta remover o arquivo que o HAproxy vai entender como uma falha no servidor, e não mais enviará qualquer nova sessão, apenas as antigas.
Se a tag 'persist' for usada, o HAproxy esperará por alguns segundos (2) e em seguida encerra o serviço com o servidor.