HAproxy + Stunnel (https) + CentOS 6

Neste artigo vou abordar a configuração do Load Balance com o software HAproxy e Stunnel.
Toda configuração será feita no CentOS 6 i386.

[ Hits: 40.082 ]

Por: evandro matos couto em 23/11/2011


HAproxy



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.

Página anterior     Próxima página

Páginas do artigo
   1. Objetivo
   2. HAproxy
   3. Configurando o HAproxy
   4. Segunda parte da configuração - Stunnel
   5. Script para inicializar o Stunnel
   6. Ambiente desejável para Alta Disponibilidade e Load Balance
Outros artigos deste autor

Docker Linux Container - Open vSwitch Containers - Múltiplos Servidores

Quota - Criando e administrando no CentOS

CentOS 5.8 - MySQL Cluster 7.1 + HAProxy

Clonagem de HDs com o PHANTOM & UDPCAST no CentOS

Nagios 4 com Check_MK 1.2.5i3 no CentOS 6.5 x64

Leitura recomendada

Atualizar para o Ubuntu 20.04 LTS

Um pouco sobre otimização

Teclados USB e Linux

Debian/APT- Alguns cuidados com os repósitorios

Arch Linux - Repositório offline

  
Comentários
[1] Comentário enviado por silent-man em 02/12/2011 - 16:38h

@vandocouto,

em primeiro lugar bom artigo. Ainda não tive a oportunidade de testá-lo apesar de já ter ouvido falar.

Tenho uma dúvido.

Quando o cliente acessa o endereço HTTP(no exemplo acima CentOS-1 192.168.1.55) e esta requisição bate nos HTTP's Servers CentOS-2 ou CentOS-3 qual IP irá aparecer nestes Https Servers, o IP do cliente ou o Ip do CentOS-1 ?

[]s

[2] Comentário enviado por vandocouto em 02/12/2011 - 19:55h

Caro Slient-man,

Respondendo sua pergunta:

1 - no caso do http os logs no centos-2 e centos-3 irão mostrar os ip's do clientes sim.
2 - já no caso do https os logs do centos-2 e centos-3 irão mostrar o ip do centos-1, porém no centos-1 você poderá ver os ip's dos clientes que estão requisitando o acesso via https.

Lembrado que o centos-1 recebe a requisição e encaminha para os nodes conforme exemplo no tutorial.

Espero ter ajudado você

até.



[3] Comentário enviado por fporphirio em 23/07/2012 - 15:10h

Precisava muito instalar o HAPROXY , COROSYNC e PACEMAKER no RedHat 6.2 alguem pode ajudar com esses pacotes para baixar e instalar?

[4] Comentário enviado por engracia em 17/12/2012 - 21:59h

Ola pessoal tenho um trabalho com o tema: segurança no linux,sera que alguém pode dar uma ajuda por favor?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts