Proxy reverso e balanceamento de carga utilizando o Pound

Muitas vezes é necessário utilizarmos empacotamento SSL em servidores WEB, mas nem sempre é possível porque vários tipos de servidores não oferecem esta funcionalidade ou não são tão seguros como gostaríamos. Este artigo ensina o conceito e configuração do Pound, uma excelente solução para proxy reverso e balanceamento de carga.

[ Hits: 30.910 ]

Por: Gilberto Russo em 07/09/2006


Configuração



O Pound não vem com um arquivo de configuração padrão, portanto você deverá criar um arquivo .cfg manualmente.

# vi /etc/pound.cfg

User "pound"
Group "pound"
Daemon 1
LogLevel 2

ListenHTTPS
    Address 200.200.200.200
    Port 46908
    Cert "/usr/local/etc/certificado.key"
    WebDAV 1

    Service
      HeadRequire "Host: 200.200.200.200"
      URL "zemane*"
      BackEnd
          Address 192.168.10.15
          Port  80
      End
    End

    Service
      HeadRequire "Host: www.meusclientes.com*"
      BackEnd
      Address 192.168.10.79
      Port  80
      Priority 1
    End

End

Onde:
  • User e Group - Definir qual usuário irá cuidar do processo do Pound;
  • LogLevel = Nível de log que o Pound irá gerar.

Note que o arquivo de configuração do Pound tem o formato de abrir e fechar sessão.

A primeira coisa que você deverá configurar é qual sessão principal você estará criando:

ListenHTTP
ou
ListenHTTPS

Criando uma sessão HTTP você apenas deverá acrescentar as linhas:
  • Address - Endereço IP do link;
  • Port - Porta que Apache irá responder;
  • WebDAV - Habilitar suporte WebDAV.

Se estiver usando HTTPS para que o Pound faça um tunelamento criptografado com geração de certificado, você deverá acrescentar a linha 'cert' indicando o caminho do certificado.

Para gerar um certificado você precisará do openSSL instalado no sistema:

# openssl req -x509 -newkey rs:1024 -keyout server.key -out server.key -days 365 -nodes

Para cada servidor Apache que o Pound irá gerenciar relacionado ao seu link definido em ListenHTTP você deverá adicionar uma sessão de Service apontando o servidor interno que ele irá repassar as requisições:

   Service
      HeadRequire "Host: www.meusclientes.com*"
      BackEnd
      Address 192.168.10.79
      Port  80
      Priority 1
    End

Onde:
    HeadRequire - Endereço WEB; Address - IP do Servidor Interno; Port - Porta do Servidor WEB.

Caso você não tenha DNS resolvendo os redirecionamentos, o Pound oferece a opção de realizar redirecionamentos por palavras definidas na URL no browser:

   Service
      HeadRequire "Host: 200.200.200.200"
      URL "zemane*"
      BackEnd
      Address 15.15.15.16
      Port  80
    End

Onde:
  • URL - Palavra-chave que será usado na URL para que o Pound redirecione.

Após feita toda a configuração do arquivo, lembrando que você poderá adicionar vários Services, você só deverá verificar se em seu arquivo de configuração não existe erro de sintaxe:

# pound -v -c -f /etc/pound.cfg

Config file pound.cfg is OK

Onde:
  • v - Verbose (mostrar detalhes);
  • c - Check (apenas checar o arquivo);
  • f - File (indicar a localização do pound.cfg).

Agora basta criar um daemon para que o Pound faça parte dos serviços que irão ser iniciados na inicialização do sistema:

# vi /etc/init.d/pound

#!/bin/bash
# Daemon do Pound (Proxy Reverso e Balanceador)
start () {
   echo "Iniciando o Pound"
   /usr/local/sbin/pound -f /etc/pound.cfg &
}
stop () {
   echo "Finalizando o Pound"
   pkill -9 pound
}

case "$1" in
   start) start
   ;;
   stop)  stop
   ;;
   *) echo "Uso: pound (start|stop)"
   ;;
esac

Crie um link do daemon no diretório do seu runlevel:

# runlevel
N 3

# ln -s /etc/init.d/pound /etc/rc3.d/S99pound

Para finalizar basta reiniciar a máquina, verificar se o serviço iniciou normalmente e testar via browser se ele realmente está redirecionando os sites.

Página anterior    

Páginas do artigo
   1. Apresentação
   2. Configuração
Outros artigos deste autor

Monitoração de Hosts e Serviços com o NAGIOS

Instalando o Squid + SquidGuard

Osiris - Integridade do sistema de arquivos

ISCSI - Um sistema de transferência de arquivos diferente

Firewalls redundantes utilizando VRRP

Leitura recomendada

webCalendar: a agenda e o PAM

Instalação e configuração do HexChat com a rede Tor

Servidor para centralização de logs - Fedora 7

Criptografar arquivos importantes no seu Linux

Race condition - vulnerabilidades em suids

  
Comentários
[1] Comentário enviado por thelinux em 11/09/2006 - 12:48h

Nota 10. Excelente.

[2] Comentário enviado por helderam em 24/02/2007 - 08:02h

Ola,

Beixei o pound e fiz conforme recomendado. Porem na hora de fazer o .configure apareceu uma mensagem de erro:

checking for BIO_new in -lcrypto... no
Missing OpenSSL (-lcrypto) - aborted

Alguem pode me ajudar ?
Grato,
Helder

[3] Comentário enviado por gilberto.russo em 24/02/2007 - 10:54h

Helder,

vc instalou o OpenSSL completo? Pois ele é um pré-requisito do POUND e o responsável pela segurança das conexões.

Att.,

Gilberto Russo

[4] Comentário enviado por Fcesarsousa em 13/09/2011 - 16:09h

Boa tarde!

Caro Gilberto,

Estou instalando um servidor Pound em uma maquina com o Cent OS e esotu seguindo o seu artigo. Consegui chegar até a marte da compilação mas quando dei o comando MAKE e e mseguida o MAKE INSTALL ele me retornou a seguinte mensagem "-bash: Make: command not found".

Executei ele apartir do diretorio "/usr/local/src/Pound-2.5" este ultimo é onde estão os arquivos descompactados.

Gostaria de uma ajuda. O que fazer neste caso? será que faltou alguma coisa?

Grato,

César Sousa.

[5] Comentário enviado por patronks em 13/09/2012 - 09:17h

Bom dia,

Gilberto, utilizo o Pound e tenho uma dúvida, seria possível por exemplo, receber conexões em com um nome e direcionar para outro, vou dar o exemplo abaixo para facilitar. Precisamos desta configuração, pois temos uma aplicação que roda em webserver próprio e não conseguimos alterar as configurações>

URL acessada de fora: http://www.externo.com.br/XXXXXXX
URL a ser direcionada internamente: http://192.168.0.1/YYYYYYYYY

Talvez não tenha ficado claro a explicação, mas seria receber conexões em uma pasta (/) e direcionar para outra.

Obrigado.

Paulo Henrique.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts