Pular para o conteúdo principal

Load Balance com Apache

Balancear requisições utilizando Apache é muito simples. Vou mostrar o passo a passo a seguir:

Primeiro, neste tutorial utilizei o Apache Lounge, disponível aqui.

Após fazer o download, descompacte o conteúdo no disco C:\, de uma forma que fique algo parecido com: C:\Apache24. É importante descompactar no disco C:\ pois o script httpd.config tem como pré configuração este caminho.

Observação:  o disco pode ser  E:\, F:\ etc. o importante é que seja em sua raiz. Algo pode ser editado no script httpd.config, mas é assunto para outro texto.

Agora vamos para o arquivo httpd.conf, localizado em \Apache24\conf\httpd.conf. Esse arquivo é responsável pelas configurações de balanceamento que iremos utilizar nesse exemplo.

Temos de fazer um load de alguns módulos. Na prática basta descomentar algumas linhas, pois o httpd.conf já vem preenchido. As linhas que devem ser descomentadas são:

#LoadModule access_compat_module modules/mod_access_compat.so
#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
##LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so


Mais adiante há o seguinte trecho:
ServerName www.example.com:80

Aqui devemos colocar o host e porta que desejamos utilizar, neste exemplo coloquei:

ServerName 0.0.0.0:8080

Por fim, chegou a hora de montar o balanceador. O exemplo é simples:  em BalancerMenber coloque o endereço e porta de uma instância da aplicação que deseja balancear e em ProxyPass coloque o nome ou endereço do balanceador, conforme o exemplo a seguir:

 

#Balanceamento de carga
<IfModule proxy_module>
         ProxyRequests Off
         ProxyPass /aplicacao balancer://mycluster
         ProxyPassReverse /examples balancer://mycluster
         <Proxy balancer://mycluster>
             BalancerMember http://host_ip:porta/aplicacao/pasta/arquivo
             BalancerMember http://host_ip:porta/aplicacao/pasta/arquivo
         </Proxy>
         ProxyPass /aplicacao balancer://mycluster
         ProxyPassReverse /
aplicacao balancer://mycluster 
</IfModule>

Agora basta endereçar as requisições para http:ip_ou_hostname:8080/aplicacao que o Apache fará o balçanceamento entre os endereços configurados em BalancerMember, que pode ter n endereços.


Fonte: https://httpd.apache.org/docs/

Comentários

Postagens mais visitadas deste blog

Java - Estrutura de classe

Uma classe java simples deve possuir os items a seguir: Pacotes Os pacotes servem para organizar todas as classes que um sistema possui, é correto afirmar que toda classe pertence a um pacote. Caso não haja um pacote declarado a  classe faz parte do default package. Classe Neste item é onde se define atributos e comportamentos de um objeto no java. Sua declaração pode ser muito simples, algo como class Dog {} . (Os modificadores de acesso e notações merecem um post exclusivo :p ). Variáveis A declaração de variáveis deve conter o  seu tipo e seu nome . Existem alguns tipos de variáveis, que guardam conteúdo de maneira diferente, por exemplo algumas podem guardar valores durante a instância de um objeto, outras podem guardar valores compartilhados por todas as instâncias deste objeto ( static ) e também há a possibilidade de variáveis com espoco apenas durante a execução de um método. Métodos A declaração é um pouco diferente, contém o tipo ...

Java - Import

Esse assunto tem muito a ver com a organização do projeto. Primeiro, imagine que duas classes estão no mesmo pacote, naturalmente elas se conhecem e se enxergam, podendo assim se acessarem. Exemplo: Temos dois arquivos Java: o primeiro chamado ClassOne e o segundo ClassTwo. package com.meuprojeto.model; class ClassOne {       String attributeOne;        String attributeTwo;       String attributeThree;       //.. } package com.meuprojeto.model; class ClassTwo {       String attributeOne;        String attributeTwo;       ClassOne classOne;        //.. } Essas classes estão no pacote model e por isso não há erro de compilação até aqui. Mas imagine um projeto com alguns pacotes, como o da imagem abaixo, o que fazer?   O primeiro passo é  tornar as classes públicas, adicionando a palavra re...