Fiz um post informando a quantidade de WebServers utilizados em todo mundo e comecei a dar mais atenção a carinha que está instalado em 6% dos servidores Web em todo o mundo, é o NGINX. Ele já é utilizado por algumas empresas aqui no Brasil, como exemplo temos a www.certisign.com.br.
A sua performance já foi sitada aqui no blog, chegando a ser 30% mais rápido que o Apache devido a sua simplicidade e pouca quantidade de módulos.
Mas o NGINX vem possui um módulo que aumenta e muito a sua performance, e o Memcached. A performance de um site foi aumentada em 400% devido a utilização em conjunto do NGINX e do módulo memcached.
A implementação utilizada foi a seguinte:
A configuração utilizada do NGINX foi a seguinte:
user usr usr; worker_processes 2; http { types { text/javascript js; application/xml xml; } # By default, return content sa default_type application/xml; access_log /home/api/logs/nginx.log main; sendfile on; tcp_nopush on; keepalive_timeout 65; tcp_nodelay on; # app. server(s) / cluster definition upstream dynamic_srv { server 127.0.0.1:9020; } server { listen 80; server_name srv; root /home/usr; # Match any request that begins with /dynamic_request location /dynamic_request { # Append a file-extension to every request if ($args ~* format=json) { rewrite ^/dynamic_request/?(.*)$ /dynamic_request.js$1 break; } if ($args ~* format=xml) { rewrite ^/dynamic_request/?(.*)$ /dynamic_request.xml$1 break; } # Check if local memcached server can answer this request memcached_pass 127.0.0.1:11211; # Send to app. server if Memcached could not ansewr the request error_page 404 = @dynamic_request; } location @dynamic_feed_id { # only internal requests can reach this endpoint internal; # dispatch to our app_server cluster / instance proxy_pass http://dynamic_srv; } } }
O que achei mais interessante do NGINX é a facilidade a qual você pode configurar um load balance nele.
Mais detalhes no link
Muito bom !
Tenho uma duvida Gustavo, no caso da empresa utilizar alguns SLBs tais como Foundry e Cisco ACE para fazer balanceamento na camada 7 para os servidores IIS que estão no background, como que o varnish/nginx/memcached entram na historia ?
Eu consigo colocá-los na frente do meu pool de IIS ?
valeu
Os equipamentos da foundry com q trabalhei não falavam além de layer 4 – transporte — sendo assim, era só porta. O Cisco Ace é layer 7 mesmo, blz. A arquitetura do seu ambiente dependerá do seguinte estático ou dinâmico — se vc tiver conteúdo estático, nada mais justo que jogar no cache. A coisa muda de figura com conteúdo dinâmico. Aí vc deverá analisar o seu ambiente antes de colocar/configurar o varnish.
Os balanceadores de carga precisam ter o que balancear, sendo assim, será necessária a instalação de mais servidores varnish/cache
A ideia no caso seria manter o foundry/brocade fazendo o balanceamento layer 4, com um pool de nginx passando as conexões para os IIS no backend.