Version 5 (modified by leonardolopes, 14 anos atrás) (diff)

--

FazerUmBalanceamentoDeCarga

Para que haja uma melhor compreensão do processo do balanceamente de carga com cache feito com Squid, Zeo e Zope, é necessário que coloquemos alguns conceitos e informações em destaque:

  • Cluster - Que na sua forma mais básica um cluster é um sistema que compreende dois ou mais computadores ou sistemas (denominados
    nodos no caso aqui seriam instâncias) na qual trabalham em conjunto para executar aplicações ou realizar outras tarefas, de tal forma para que os usuários que os utilizam tenham a impressão que somente um único sistema responde para eles, criando assim uma ilusão de um recurso único (computador virtual). Este conceito é denominado transparência do sistema. Como características fundamentais para a construção destas plataformas inclui-se elevação da: confiança, distribuição de carga e performance.

  • Balanceamente de Carga - Este modelo distribui o tráfego ou requisições de recursos provenientes das mesmas instâncias (Zopes) que executam os mesmos programas entre as máquinas que compõem o cluster. Todas as instâncias estão responsáveis em controlar os pedidos. Se uma instância falhar, as requisições são redistribuídas entre as outas instâncias disponíveis no momento. Este tipo de solução é normalmente utilizado em fazendas de servidores de web (web farms).
  • Squid - É uma ferramenta (proxy-cache) que alivia a latência da rede. A idéia por trás é de criar um "banco de dados" onde os objetos mais utilizados sejam guardados para os próximos acessos. Isto significa que caso tenhamos 20 acessos ao site ao mesmo tempo, somente uma vai ser realizada na instancia as outras vão ser cacheadas, dando assim uma melhor performance.
  • Zeo - É um sistema que permite rodar um site em mais de um computador, que geralmente é chamado de clustering e balanceador de carga. É bom lembrar que todas as instâncias devem ter os mesmos produtos para que o zeo funcione perfeiamente.
  • É bom deixar claro que é possível fazer isso poderiamos utilizar somente uma máquina , mas dessa forma poderiamos não conseguir resultados satisfatórios. Então para a criação do balanceador de carga com cache é necessário no mínimo 4 máquina simples, uma que vai rolar squid, outra para rodar o zeo e duas para rodas as instancias.

  • Esta configuração foi feita no ubuntu 5.04 que tem a base de pacotes Debian. A localização de determinados arquivos podem ser encontrados em diferentes locais dependendo do sistema operacional utilizado. No caso do sistema operacional Windows é necessário a instalação do cygwin e nele instalar o squid.

Antes de começar vamos criar uma interface em cada maquina do cluster. Digite no console este comando.

vi /etc/network/interfaces

Dentro desse arquivo insira as seguintes linhas de comando.

# Interface estatica
auto eth0:0
iface eth0:0 inet static
 address 10.10.10.21
 netmask 255.255.255.0
 network 10.10.10.0
 broadcast 10.10.10.255

Em cada máquina altere o ip de address. Por exemplo:

 address 10.10.10.22
 address 10.10.10.23
 address 10.10.10.24
 address 10.10.10.25

Esta alteração server para que cada maquina tenha um ip diferente. Agora você deve estar se perguntando por que criar estas interfaces? A resposta é bem simples, é para que você trabalhar com ip's fixos e não precisar ficar olhando todo dia quais são os ip's das máquinas em questão.

Depois de termos dado alguns conceitos, informações e a criação da interface, agora vamos começar criando um cluster com o ZEO e ZOPE.

Para criar uma instância ZEO você precisa entrar na sua pasta bin dentro do zope instalado. Por exemplo:

cd /home/usuario/''pastazope''/bin

Dentro da pasta digite:

./mkzeoinstance /home/usuario/zeo/ 9000

Onde /home/usuario/zeo é o local onde vai ficar sua instância zeo e 9000 será a porta onde o zeo ouviram as requisições. Depois de feito isso, crie as duas instâncias zope. Agora entre zope.conf de cada instância zope e faça a seguinte alteração. Comente as seguintes linha, que se encontram no final do zope.conf como no exemplo abaixo:

#<zodb_db main>
#    # Main FileStorage database
#    <filestorage>
#      path $INSTANCE/var/Data.fs
#    </filestorage>
#    mount-point /
#</zodb_db>

Em seguida, descomente as seguintes linhas como no exemplo abaixo:

# Other storage examples
#
# ZEO client storage:
#
<zodb_db main>
  mount-point /
  # ZODB cache, in number of objects
  cache-size 5000
  <zeoclient>
    server 10.10.10.100:9000
    storage 1
    name zeostorage
    var $INSTANCE/var
    # ZEO client cache, in bytes
    cache-size 20MB
    # Uncomment to have a persistent disk cache
    #client zeo1
  </zeoclient>
</zodb_db>

Repare na linha server 10.10.10.100:9000, onde você pode ver que 10.10.10.100 é o ip da maquina com a instancia zeo e 9000 é a portal que o zeo está ouvindo as requisições.

Anexos (1)

Download de todos os anexos como .zip

 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.