Version 14 (modified by jeanferri, 14 anos atrás) (diff)
Como fazer balanceamento de carga com Zope/ZEO
cd /home/usuario/pastazope/bin
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. Em seguida faça uma copia de backup do zope.conf.
cp /home/usuario/instanciazope/etc/zope.conf /home/usuario/instanciazope/etc/zope.conf.orig
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:
Ainda dentro do zope.conf descomente a ICP port como segue abaixo:
<icp-server>
# valid key is "address"
address 3132
</icp-server>
redirect_program /etc/squid/iredir/iRedirector.py
cache_peer 10.10.10.23 parent 8080 3132 no-digest no-netdb-exchange round-robin
cache_peer 10.10.10.25 parent 8080 3132 no-digest no-netdb-exchange round-robin
cache_peer_access 10.10.10.25 allow in_backendpool
cache_peer_access 10.10.10.25 deny all
Veja se as portas HTTP e ICP do cache_peer é a mesma da suas instancias zope. No caso porta HTTP é a 8080 e a porta ICP é a 3132. Observe que é possível usar as mesmas portas para as duas instancias porque elas estão em maquinas diferentes.
Concluido a configuração do squid passemos para o redirecinador de URL. Caso não queria fazer um, existe um pronto no seguinte site: ​http://longsleep.org/projects/iredir
Descompacte o arquivo e copie a pasta iredir para /etc/squid/. Depois de feito isso, abra o arquivo redirector_class.py. Dentro do arquivo encontrará as seguintes linhas de comando.
# define sitemap matching regex mapping
(10, 'localhost'): 'backendpool/VirtualHostBase/http/$netloc$:80/portal/VirtualHostRoot',
(11, 'testandoplone'): 'backendpool/VirtualHostBase/http/$netloc$:80/interlegis/VirtualHostRoot',
(12, 'siteplonedeteste'): 'backendpool/VirtualHostBase/http/$netloc$:80/intranet/VirtualHostRoot',
Observe que localhost, testandoplone e siteplonedeteste são as URL que vc pode digitar em seu browser, sendo que estas conseguiram acessar o zope se estiverem configuradas dentro de /etc/hosts (no caso do Ubuntu). E portal, interlegis e intranet são os objetos que serão mandados para o squid faça o cache.
Depois disso abra o seu browser e digite a URL que foi colocada no redirector_class.py. Aparecendo o objetos selecionado, quer dizer que o squid está fazendo o balanceamento das instâncias, para testar se ele está fazendo cache, digite no console.
ab -n 100 -c 4 http://url no redirector_class.py/
Depois faça o mesmo teste, mas dessa vez com a url direto da instancia zope. Normalmente com esta configuração o squid consegue dar em torno de 350 resquests por segundo.
Caso a diferença não seje no mínimo o triplo de requests é porque o squid não está fazendo cache. Isso pode ocorrer caso o zope não estija mandando informações para o squid fazer o cache dos objetos, então acrescente na sua instancia zope o produto Accelerated HTTP Cache Manager ou o CacheFu? que pode ser encontrado no plone.org.
MINI-GLOSSÁRIO DAS TAG DO SQUID
http_port – Especifica a porta (ou IP e portal ) que o squid ouvira as requisições.
cache_mem – Especifica a soma ideal de memória que será usada para: In−Transit objects, Hot Objects e Negative−Cached objects. Porém este parâmetro não limita o tamanho máximo do processo que pode se tornar duas, três vezes maiores que isso.
cache_dir no_cache – Esta Tag é usada para proibir o cache de determinados objetos e por padrão o squid previne configurações de caching que tenha URL cgi-bin ou desconhecida. Esta configuração não é muito aconselhável para o uso do squid como um acelerador Zope
hierarchy_stoplist – Esta Tag é usada quando quer consultar as outras caches sobre determinado objeto. No caso de usar o squid como acelerador, ela é inapropriada. Por Default, ela vem da seguinte maneira.
request_body_max_size – Especifica o tamanho Maximo para uma http request. Caso não queira limite coloque 0 KB.
redirect_program – Todo solução front-end proxy(Squid) envolve um problema de mapeamento das URLs que são pedidas para os backend servers(instancias zope). Para resolver isso o Squid permite que se use um programa ou script externo para que haja a tradução das URLs externas dentro das URLs internas.
redirect_children – Esta tag é usada para ajustar o número de processo redirecionados para gerar. they will use RAM and other system resources.
redirect_rewrites_host_header – Por padrão o Squid reescrevi todos host. Como estamos usando o squid com acelerador não queremos este efeito.
acl – Define uma lista de acesso
http_access – Permite ou proibi acesso http baseado em listas de acesso.
cache_peer – Esta opção do squid é usada para especificar as outras caches em hierarquia. Ela é dividida basicamente em cinco campos. O primeiro campo é o hostname ou IP da cache que esta sendo pedido a informação. No segundo campo indica o relacionamento das caches. O terceiro configura a porta HTTP de destino do servidor, enquanto a quarta configura a porta de consulta ICP(UDP). O quinto campo pode conter várias ou nenhuma keyword. Na forma como estamos trabalhando com o squid colocamos somente as seguintes kewords: no-digest, no-netdb-exchange e round-robin.
cache_peer_access – Esta opção é usada para limitar o dominio para que os neighbor caches serão consultados, utilizando as listas de acesso (acl).
httpd_accel_host – Esta tag é usada para que o squid faça com que o hostname(IP) trabalhe como servidor acelerado.Para que o squid trabalhe como acelerador Zope configure como virtual.
httpd_accel_port – O squid conectará com a porta que o httpd_accel_port que for configurado. Para que faça com que o squid trabalhe como acelerador Zope, configure a porta como 0.
httpd_accel_with_proxy – Para que sua cache funcione como acelerador e como um web cache é necessário que ative esta opção.
httpd_accel_uses_host_header – Esta opção quando ativa deixa um grande furo na segurança,porém para servidores virtuais que requer o host, os header não serão propriadamente para fazer o cache.