Tutorial load balance (paralelo) + Debian + ThunderCache + servidor MK 3.13~3.22
Ola galera,hoje completa 1 ano que trabalho com sistema linux e junto com ele o sistema RouterOs(MK).Então compartilhe de graça o que recebeu de graça!
Diante disso irei explicar detalhadamente como fazer um servidor para rodar um provedor estavel e com qualidade.
O cenário que iremos trabalhar sera o seguinte:
Versão testada: 3.13 e 3.22(32Bits~64Bits - RouterOs - Mikrotik)(32Bits RECOMENDADO)
Modo de autenticação no servidor: PPPoE
Distribuição de endereço por DHCP: Desativado
O servidor seguira o seguinte esquema:
LoadBalance Paralelo(1 PC Fazendo apenas o Gerenciamento de Links),
Distribuição Debian 5.1(32~64Bits) + Sistema ThunderCache (Software Free)
Servidor RouterOs - MK 3.13 ou 3.22 (Software Pago)
Através desse cenário montaremos nosso Provedor com Proxy + Sistema ThunderCache FULL + LoadBalance(101% Sem problemas de quedas ou paralisações de Sites,Messengers etc...).
LEMBRANDO QUE ESSE MODO DE CONFIGURAÇÃO NÃO É UMA REGRA E SIM UM MODO PRÁTICO PARA RESPONDER MUITAS QUESTÕES REFERÊNTES A TÓPICOS DO GENÊRO!!!
Como será uma passo a passo,irei postar seguindo este roteiro:
1º - Insalação do Debian 5.1 + Instalação do Sistema ThunderCache;
2º - Instalação do MK Paralelo para Gerenciamento dos Links;
3º - Instalação básica do Sistema MK 3.13 ou 3.22 em modo PPPoE;
--------------------------------------------------------------------------------------
Iniciando...
Vamos Descrever nosso Cenário:
http://img44.imageshack.us/img44/156/cenrio.jpg
1º Parte:
Instalando o Servidor Debian 5.1 versão 32Bits(O mesmo procedimento para a versão 64Bits)
"Créditos do vídeo - Luciano Rampanelli"
[ame="http://www.youtube.com/watch?v=gIrGOrgB9QY"]YouTube - Tutorial Debian para Integração com Mikrotik - 1ª Parte[/ame]
2º Parte:
Instalando o Servidor Web(Apache) + Sistema ThunderCache entre outros.
Para agilizar essa etapa,iremos rodar um script desenvolvido pelo nosso colega Luciano Rampanelli.
Digite assim no seu Debian:
wget http://www.pcram.com.br/conlinux/conlinuxZ4.sh
chmod +x conlinuxZ4.sh
./conlinuxZ4.sh
"Créditos do vídeo - Luciano Rampanelli"
[ame="http://www.youtube.com/watch?v=b8ZZm0RXuOU"]YouTube - Tutorial Debian para Integração com Mikrotik - 2ª Parte[/ame]
ATENÇÃO: Após rodar o script acima, nosso endereço de ip's no Debian(Proxy) sera:
Endereço de Ip: 192.168.10.250
Mascara: 255.255.255.0
Gateway: 192.168.10.253
3º Parte:
Após instalarmos o Debian e o sistema ThunderCache,teremos que iniciar a configuração do nosso Proxy.Para isso vamos adicionar algumas regras no Servidor MK(Controle),ao qual esta encarregado de fazer os serviços de Modo de autenticação,Controle de banda,Firewall etc.
Va até seu Servidor MK(Controle) e adicione as seguintes regras:
/Ip address:
192.168.10.253/24
/Ip Dns Static:
Name:Thunder
Address: 192.168.10.253
Apartir deste ponto você poderá pingar o Endereço do Debian "192.168.10.250" que respondera com ping 0ms se estiver tudo configurado conforme as orientações acima.
Prosseguindo...
Vamos colocar algumas regras em nosso Firewall.
/ip firewall filter
Chain: forward
Src. Address: 192.168.10.0/24
Action: Accept
Coment:Aceitar todas as Conexões vindas do Proxy-Thunder
Importante! Deixe esta regra acima de todas as outras.
Para quem usa regras de Conexões Simultâneas,cuidado!Ela pode comprometer drasticamente o desempenho do ThunderCache.
Mas para tudo na vida há uma solução!!!
Veja o Exemplo abaixo de uma regra de Conexões Simulãneas livrando nosso amigo ThunderCache do limite de conexões:
/ip firewall filter
add action=drop chain=forward comment="Limite de 15 conexoes simultaneas por cliente" connection-limit=15,32 disabled=no \
dst-address=!192.168.10.0/24 protocol=tcp src-address=192.168.2.0/24 tcp-flags=syn
Onde 192.168.2.0/24 é a faixa de rede!
/Ip Firewall Nat
Chain: srcnat
Src. Address: 192.168.10.0/24
Action: masquerade
Coment:Nat-Debian
Chain:dstnat
Src. Address: 192.168.2.0/24(Sua Faixa de Rede)
Dst. Address: !192.168.10.250 (Ip do Debian)
Protocol.: 6(tcp)
Dst. Port: 80
Action: dst-nat
To Address: 192.168.10.250
To Ports: 3128(Porta usada pelo Proxy)
Pronto!Apenas com essas regras você fara o Mikrotik ter conexão junto ao Debian.
Agora a parte que muita gente esta tendo problemas,que é a marcação de pacotes para que funcione corretamente o Cache Full.
Segue abaixo as regras:
/ip firewall mangle
add action=mark-connection chain=forward comment="Cache Full" content="X-Cache: HIT" disabled=no new-connection-mark=forward-hits \
passthrough=yes protocol=tcp
add action=mark-packet chain=forward comment="" connection-mark=forward-hits disabled=no new-packet-mark=cache-hits passthrough=yes
add action=mark-connection chain=postrouting comment="" disabled=no dscp=12 new-connection-mark=proxy-hits passthrough=yes
add action=mark-packet chain=postrouting comment="" connection-mark=proxy-hits disabled=no new-packet-mark=proxy-squid passthrough=yes
add action=mark-connection chain=forward comment="Thunder - Cache Full" disabled=no dst-address=192.168.10.250 dst-port=80 \
new-connection-mark=thunder-connection passthrough=yes protocol=tcp
add action=mark-packet chain=forward comment="" connection-mark=thunder-connection disabled=no new-packet-mark=thunder-packs \
passthrough=yes protocol=tcp
/queue tree
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=2000000 max-limit=3000000 name=Cache-Hits packet-mark=\
proxy-squid parent=global-out priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=2000000 max-limit=3000000 name=Cache-Old packet-mark=cache-hits \
parent=global-out priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=2000000 max-limit=3000000 name=ThunderCache packet-mark=\
thunder-packs parent=global-out priority=8 queue=default
Vai ficar enorme esse tutorial,então irei colocando aos poucos o conteudo.Lembrando que como não estou fazendo o processo CTRL+C,CTRL+V, é possivel que eu volte em alguma parte do tutorial para fazer alguma alteração,então qualquer duvida na configuração volte ao inicio do nosso post e reveja as explicações... Vamos que vamos!:itsme:
Vamos Começar a trabalhar agora em cima do nosso Debain-Proxy...
Bom.mesmo aos mais experientes no assunto,é muito chato fazer isso pela interface de prompt de comando,então aconselho aos colegas a usarem algum programa de FTP.Sugiro usar o programa FTP WINSCP, que ira agilizar muito essa etapa da configuração.
Então vamos mandar bala e baixar ele no link abaixo:
Download WinSCP from SourceForge.net (Link testado 09/07/2009 - 10:49hs)
4º Parte:
Instale o nosso programa FTP WINSCP,ele nós ajudara muito,pois trabalha como uma interface intuitiva e agilizara nossa configuração.Não irei detalhar a instalação do nosso programa ftp,póis uma instalação de modo default sem necessidades de configurações adicionais ira corresponder com o que iremos usar.
Após instalado o Ftp WinScp,configure conforme abaixo:
http://img269.imageshack.us/img269/9574/tutorial01.jpg
5º Parte:
Já com nosso programa ftp rodando,vamos iniciar o processo de configuração de seguintes itens:
Squid.config (/etc/squid/squid.config)
Thunder.config (/etc/squid/thunder.config)
Resolv.config (/etc/resolv.config)
Correções ortográficas,serão feitas durante as postagens e no decorrer dos dias!!!
------------------------------------------------------------------------------------
ATENÇÃO:
TUTORIAL EM FASE DE DESENVOLVIMENTO,POR TANTO PODERA HAVER MODIFICAÇÔES AO DECORRER DO PROCESSO!!! PRAZO ESTIMADO PARA O TÉRMINO 10/07/2009
------------------------------------------------------------------------------------
Uma Boa noite a todos e fiquem com Deus!!!:party:
Fiquem a vontade se quiserem clicar no BoOtãozinho "AGRADECER"
Tutorial load balance (paralelo)+Debian+ThunderCache+serv idor MK 3.13~3.22
6º Parte:
Vamos iniciar as configurações pelo arquivo Squid.conf.
Irei fazer alguns comentários sobre algumas das configurações,no entanto estão bem explicadas sobre qual função que cada uma delas faz.
http_port 3128 transparent (A porta pode ser alterada de acordo com as necessidades)
visible_hostname conprove (O nome pode ser alterado de acordo com as necessidades)
icp_port 0
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl con_clients dst 192.168.2.0/24 (Faixa de rede que poderão acessar o proxy.Altere de acordo com suas necessidades)
acl purge method PURGE
acl CONNECT method CONNECT
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow manager localhost con_clients
http_access deny manager all
icp_access allow purge localhost con_clients
icp_access deny purge all
#memoria reservada para o cache, 40% ~ 50% por cento
cache_mem 1536 MB (Altere de acordo com as necessidades)
#máximo tamanho dos arquivo cache na memoria
maximum_object_size_in_memory 16 KB
#máximo tamanho dos arquivo cache no hd
maximum_object_size 40 MB (Altere de acordo com as necessidades)
minimum_object_size 0
#regra que começa a esvaziar / substituir arquivos no cache em 95%
cache_swap_low 80
cache_swap_high 95
#total em MB de espaço no hd a ser usado pelo cache, numero de pastas, e
#numero de subpastas do cache.
cache_dir ufs /var/spool/squid 300000 16 256 (Altere de acordo com suas necessidades)
cache_effective_user proxy
ftp_user [email protected]
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log
#access_log /var/log/squid/error.log
#O store.log exibe quais arquivos foram removidos do cache, quais objetos estão salvos, e o tempo que estão no cache
#entretanto, não existe uma utilidade real para esses dados, portanto é recomendável desativar essa flag.
cache_store_log none
#intervalos de tempos que o proxy verificara os arquivos dos site acessado
#conferem com o do cache, o valor 10080 significa aproximadamente 09 dias
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
#refresh_pattern (Release|Package(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
#Mantendo objetos recentes e pequenos na memoria
memory_replacement_policy heap GDSF
acl shoutcast rep_header X-HTTP09-First-Line ^ICY\s[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
coredump_dir /var/spool/squid
#acl ADSAdClient url_regex ADSAdClient31.dll (O "#",indica a anulação da função)
#http_access deny ADSAdClient
#deny_info http://www.conprove.com/banner_msn.html ADSAdClient (Altere de acordo com as necessidades)
#NEGA CACHE YOUTUBE
acl youtubecache dstdomain .youtube.com .avast.com .avg.com .windowsupdate.com .grisoft.com .avgate.net .googlevideo.com .gl$
cache deny youtubecache
server_persistent_connections off
# Marca Penalty HIT
zph_mode tos
zph_local 0x30
zph_option 136
zph_parent 0
url_rewrite_children 100 (Valor Default é 10.Altere de acordo com as sua necessidades)
url_rewrite_program /etc/squid/loader.php
acl thundercache_allow_url url_regex -i \.youtube\.com\/get_video\?
acl thundercache_allow_url url_regex -i \.googlevideo\.com\/videoplayback \.googlevideo\.com\/videoplay \.googlevideo\.com\/get_video\?
acl thundercache_allow_url url_regex -i \.google\.com\/videoplayback \.google\.com\/videoplay \.google\.com\/get_video\?
acl thundercache_allow_url url_regex -i \.google\.[a-z][a-z]\/videoplayback \.google\.[a-z][a-z]\/videoplay \.google\.[a-z][a-z]\/get_video\?
acl thundercache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/videoplayback\?
acl thundercache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/videoplay\?
acl thundercache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/get_video\?
acl thundercache_allow_url url_regex -i media[a-z0-9]?[a-z0-9]?[a-z0-9]?\.tube8\.com\/
acl thundercache_allow_url url_regex -i \.mais\.uol\.com\.br\/(.*)\.flv
acl thundercache_allow_dom dstdomain .terra.com.br dl.redtube.com .orkut.com .avast.com .avg.com .windowsupdate.com .grisoft.com .avgate.net .globo.com .terra.com .eset.com
acl thundercache_deny_url url_regex -i http:\/\/[a-z][a-z]\.youtube\.com http:\/\/www\.youtube\.com
url_rewrite_access allow thundercache_allow_url
url_rewrite_access allow thundercache_allow_dom
redirector_bypass on
url_rewrite_access deny all
#nega cache local para não haver duplicação
acl servercache dstdomain 192.168.10.2 (Ip do Debian.Altere de acordo com suas necessidades)
cache deny servercache
Obs.:
#máximo tamanho dos arquivo cache no hd
maximum_object_size 40 MB (Altere de acordo com as necessidades)
minimum_object_size 0
Esta opção serve apenas para os arquivos que serão cacheados pelo squid.O thunder vai cachear arquivos de qualuqer tamanho.Então não se espante se ver vídeos de 400MB,500MB em cache!
Então fica aberto este assunto à opiniões dos colegas!