Pular para o conteúdo

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.
evandro matos couto vandocouto
Hits: 42.558 Categoria: Linux Subcategoria: Configuração
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Parte 2: 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
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   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

Clonagem de HDs com o PHANTOM & UDPCAST no CentOS

Instalação do Nagios Core no CentOS 5.5

Quota - Criando e administrando no CentOS

CentOS 5.8 - MySQL Cluster 7.1 + HAProxy

Alta disponibilidade: CentOS 6 - configurando os pacotes DRBD com gfs2 - parte 1

Como gerenciar cotas de disco

Ubuntu 7.10 "levinho" para PCs antigos

Upgrade Debian 4.0 (etch) para 5.0 (lenny) - 9 passos para um upgrade feliz

Apache 2.4 - Módulos de Multiprocessamento - MPM

Servidor Jabber com Openfire + MySQL + Debian Lenny

#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

Entre na sua conta para comentar.