http://www.biazus.com/forum/ |
|
| Thunder Cache 3 no FreeBSD - Instruções de Instalação. http://www.biazus.com/forum/viewtopic.php?f=38&t=1001 |
Página 1 de 4 |
| Autor: | eksffa [ Dezembro 2nd, 2009, 12:23 pm ] |
| Assunto do Tópico: | Thunder Cache 3 no FreeBSD - Instruções de Instalação. |
Senhores, Seguem instruções passo-a-passo para instalação do Thunder Cache 3 em FreeBSD 7.2 e 8.0. Os procedimentos são literais e devem ser seguidos na ordem mencionada. Essas instruções são para quem já tem algum conhecimento em FreeBSD. Preparação prévia - Atualização do Sistema Operacional e Coleção de Ports Garanta que você tem o último 7.2-STABLE ou 8.0-STABLE. O processo esta documento no Handbook do FreeBSD: http://doc.fug.com.br/handbook/cutting-edge.html Garanta também a versão mais recente da Coleção de Ports do FreeBSD com os comandos: Código: portsnap fetch portsnap extract Instalando Thunder 3 no FreeBSD Em nosso setup, o Thunder vai rodar com usuário desprivilegiado, então criemos o usuário: Código: pw groupadd thunder pw useradd thunder -c "Thunder Cache Daemon User" -s /sbin/nologin -d /usr/local/thunder O TC3 é fechado e compilado, ao menos na versão atual, apenas para Linux. De tal forma será necessário ativar o modo de compatibilidade binária com Linux: Código: kldload linux > /dev/null 2>&1 sysctl -w compat.linux.osrelease=2.6.16 cd /usr/ports/emulators/linux_base-f10/ make install clean echo "linproc /compat/linux/proc linprocfs rw 0 0" >> /etc/fstab echo "linsys /compat/linux/sys linsysfs rw 0 0" >> /etc/fstab mount /compat/linux/sys mount /compat/linux/proc echo "OVERRIDE_LINUX_BASE_PORT=f10" >> /etc/make.conf echo "OVERRIDE_LINUX_NONBASE_PORTS=f10" >> /etc/make.conf O processo de instalar Linux Base Fedora Core 10 demorará, pois será preciso baixar uma sé de rpm e outros binários Linux. A velocidade dependerá de sua largura de banda com Internet. Ao encerrar ative o modo de compat binário no rc.conf: Código: echo 'linux_enable="YES"' >> /etc/rc.conf Se você tem um FreeBSD com mais de 4GB de RAM, terá um kernel com PAE (Phisical Address Extensions). Nesse caso carregar Linux como módulo não é possível, então compile estático no kernel: Código: options COMPAT_LINUX options LINPROCFS options LINSYSFS Você não pode ter o SQLite nativo para FreeBSD pois o Thunder tem ABI restritiva e não permitirá linkar o uso de um ELF tipo 3 (Linux) em um tipo 9 (FreeBSD). Então instale o SQLite3 de Linux: Código: cd /usr/ports/databases/linux-f10-sqlite3/ make install clean E para garantir que a compatibilidade com Linux seja com base no kernel 2.6 (pre-requisito pro thunder), adicione a entrada aplicada manualmente ao sysctl.conf (persistente): Código: echo "compat.linux.osrelease=2.6.16" >> /etc/sysctl.conf Agora vamos criar a hierarquia de sistema de arquivos para o Thunder. Manteremos a organização FreeBSD padronizando o PREFIX /usr/local/ (tipicamente para aplicações de terceiros) também para o Thunder (assim os usuários se sentirão em casa). Vamos também adequar as permissões necessárias. Código: mkdir -p /usr/local/thunder/cache/ mkdir /var/log/thunder /var/tmp/thunder /var/run/thunder chown -R thunder /var/log/thunder /var/tmp/thunder /var/run/thunder /usr/local/thunder/cache chmod 755 /var/log/thunder /var/tmp/thunder /var/run/thunder Agora vamos baixar e descompactar o Thunder Cache 3: Código: cd /usr/local/thunder fetch -o thunder3.0.tar.bz2 "http://www.biazus.com/forum/download/file.php?id=179" tar xzf thunder3.0.tar.bz2 Crie agora também os arquivos de white/blacklist: Código: :> /usr/local/thunder/etc/thunder/whitelist :> /usr/local/thunder/etc/thunder/blacklist É pre-requisito ter o Apache2 e PHP instalados se você deseja usar a rotina PHP de monitoração das atividades do TC. Instale-os como de costume, e configure a seguinte entrada no seu httpd.conf: Código: Alias /thunder "/usr/local/thunder/cache" <Directory "/usr/local/thunder/cache"> Order allow,deny Allow from all Header set THUNDER "THUNDER" # desnecessário, fica em homenagem ao TC2.1 Options Indexes MultiViews FollowSymLinks </Directory> Agora instale o suporte a PDO do PHP e PDO_SQLITE. Agora sim nativo, ja que não vamos usar binários Linux pra essa etapa: Código: cd /usr/ports/databases/php5-pdo_sqlite make install clean "Mas Patrick... não preciso do PDO também... ??" Não se preocupe, o php5-pdo_sqlite instalará o php5-pdo automaticamente como dependência. Facilidades óbvias do Ports. Agora copie o thunder.php para dentro da estrutura que você mapeou no Apache. Note que assim como o thunder, esse php depende de um padrão pre-estabelecido. Ele acredita que o cache do thunder será sempre /cache. Então vamos copiar e substituir esse padrão apontando para /usr/local/thunder/cache (padrão FreeBSD no PREFIX /usr/local): Código: cp /usr/local/thunder/etc/thunder/thunder.php /usr/local/thunder/cache/index.php sed -i "" -e 's/\/thunder/\/usr\/local\/thunder\/cache/g' /usr/local/thunder/cache/index.php Faça um backup do thunder.conf original: Código: cp /usr/local/thunder/etc/thunder/thunder.conf /usr/local/thunder/etc/thunder/thunder.conf-dist Edite o /usr/local/thunder/etc/thunder/thunder.conf (ou apenas /etc/thunder/thunder.conf afinal temos o link simbólico la) e coloque o seguinte conteúdo: Código: CACHEDIR /usr/local/thunder/cache/ PLUGINSDIR /usr/local/thunder/etc/thunder/plugins/ BLACKLIST /usr/local/thunder/etc/thunder/blacklist WHITELIST /usr/local/thunder/etc/thunder/whitelist USER thunder GROUP thunder Pode remover todo o conteúdo do thunder e deixar apenas esse (temos um backup para referência). Sim esse thunder.conf é minimalista, modifica apenas o que precisamos no nosso setup. Na ausência das demais opções o thunder sobe com seus valores default, que é suficiente para a maioria dos usuários. Como não colocamos o thunder no Ports (ainda?) você precisa criar um script de startup. Crie o arquivo /usr/local/etc/rc.d/thunder com o seguinte conteúdo: Código: #!/bin/sh # # PROVIDE: thunder # REQUIRE: LOGIN # # Remember to thunder_enable="YES" in /etc/rc.conf # # FreeBSD Brasil LTDA <consultoria@freebsdbrasil.com.br> # . /etc/rc.subr name="thunder" rcvar=`set_rcvar` command="/usr/local/thunder/sbin/thunder ${thunder_flags}" pidfile="/var/run/thunder/thunder.pid" : ${thunder_enable="NO"} : ${thunder_flags="-c /usr/local/thunder/etc/thunder/thunder.conf"} load_rc_config $name run_rc_command "$1" De as permissões de execução: Código: chmod +x /usr/local/etc/rc.d/thunder E pronto, você tem um script de startup padrão FreeBSD simples, elegante e 100% funcional. Agora adicione ao seu rc.conf: Código: thunder_enable="YES" Reinicie o seu Apache e inicie o seu Thunder: Código: apachectl graceful /usr/local/etc/rc.d/thunder start Pronto, o Thunder está instalado e funcional. Testando o Thunder Cache 3 Para tirar a limpo a funcionalidade, façamos o teste simples, usando o Thunder local como proxy para um Download. Configure o proxy para o fetch(1): Código: setenv HTTP_PROXY 127.0.0.1:8080 E faça um download. Sugiro reproduzir o comando abaixo na íntegra: Código: fetch -o /dev/null -v "http://au.download.windowsupdate.com/msdownload/update/software/secu/2008/09/windowsxp-kb956803-x86-ptb_41fc52d91a9750d9087a714163b396dd381e2020.exe" A primeira vez que você executar o comando, vai demorar um pouco o download, pois o Thunder vai buscar na Internet. Repita esse comando 2, 3, 10 vezes e veja a diferença de performance depois da primeira. Veja a reprodução: Código: fetch -o /dev/null -v "http://au.download.windowsupdate.com/msdownload/update/software/secu/2008/09/windowsxp-kb956803-x86-ptb_41fc52d91a9750d9087a714163b396dd381e2020.exe" looking up 127.0.0.1 connecting to 127.0.0.1:8080 requesting http://au.download.windowsupdate.com/msdownload/update/software/secu/2008/09/windowsxp-kb956803-x86-ptb_41fc52d91a9750d9087a714163b396dd381e2020.exe remote size / mtime: 576552 / 0 /dev/null 100% of 563 kB 105 MBps Você deve prestar atenção em: looking up 127.0.0.1 connecting to 127.0.0.1:8080 Para confirar que está realmente usando o Thunder. E depois da primeira vez note a velocidade: /dev/null 100% of 563 kB 105 MBps Portanto o Cache está 100% funcional. Dica: Se precisar de mais informações no teste, use o fetch com -vv para elevar o nível de verbose. Quanto mais vezes repetir o -v mais informações. No tentando duas vezes será suficiente para acompanhar toda a transação HTTP, incluindo headers. No seu HD você pode comprar o arquivo cacheado: Código: ls /usr/local/thunder/cache/windowsupdate/ domain.db windowsxp-kb956803-x86-ptb_41fc52d91a9750d9087a714163b396dd381e2020.exe E nos logs do Thunder (/var/log/thunder/access.log) você vai ver o TCP_MISS e depois os TCP_HIT: Código: tail -200 /var/log/thunder/access.log 1259779323.000 0 127.0.0.1 TCP_MISS/200 576855 GET http://au.download.windowsupdate.com/msdownload/update/software/secu/2008/09/windowsxp-kb956803-x86-ptb_41fc52d91a9750d9087a714163b396dd381e2020.exe - NONE/- - 1259779326.000 0 127.0.0.1 TCP_HIT/200 576777 GET http://au.download.windowsupdate.com/msdownload/update/software/secu/2008/09/windowsxp-kb956803-x86-ptb_41fc52d91a9750d9087a714163b396dd381e2020.exe - NONE/- - 1259779329.000 0 127.0.0.1 TCP_HIT/200 576777 GET http://au.download.windowsupdate.com/msdownload/update/software/secu/2008/09/windowsxp-kb956803-x86-ptb_41fc52d91a9750d9087a714163b396dd381e2020.exe - NONE/- - Integrando Thunder Cache 3 com Squid/Lusca/Cacheboy Aqui cabe uma consideração. Eu não uso Squid, uso Lusca, fork do Squid criado pelo Adrian (commiter FreeBSD) e recomendo este proxy ao invés do squid. Isso posto, as instruções são equivalentes. Adicione ao final do seu /usr/local/etc/squid.conf: Código: # Thunder 3 include "/usr/local/etc/squid/thunder_squid.conf" E crie o arquivo /usr/local/etc/squid/thunder_squid.conf com o seguinte conteúdo: Código: acl thunder_lst url_regex -i "/usr/local/thunder/etc/thunder/thunder.lst" cache deny thunder_lst cache_peer 127.0.0.1 parent 8080 0 proxy-only no-digest no-query dead_peer_timeout 2 seconds cache_peer_access 127.0.0.1 allow thunder_lst cache_peer_access 127.0.0.1 deny all Adapte essa configuração ao seu cenário. Ela é funcional para um cenário onde o Lusca é o proxy primário e usa o Thunder3 como Parent na mesma máquina. Reinicie seu lusca/squid e note que você passará a observar a expressão FIRST_UP_PARENT no Lusca/Squid, indicando desvio de consulta pro primeiro cache_peer (o Thunder) Código: TCP_MISS/200 325887 GET http://au.download.windowsupdate.com/msdownload/update/software/secu/2009/06/windowsxp-kb971633-x86-ptb_86dbbb1ba8ad50210695e4adcaad0e5b577b86f6.exe - FIRST_UP_PARENT/127.0.0.1 application/octet-stream Algumas Considerações: Se você está usando um cenário profissional e transparente, saiba que o Thunder não vai funcionar por padrão com Squid em modo T-Proxy. Código: http_port 3127 transparent tproxy Então use em modo transparente convencional. Código: http_port 3127 transparent Para funcionar com t-proxy são necessárias outras intervenções, que não são inerentes ao Thunder e provavelmente só vão funcionar com Lusca, mas provavelmente esse não é seu cenário. Monitorando o Thunder Cache 3 Agora acesse o http://seu_ip/thunder/ e você poderá acompanhar o status de atividade do seu setup. Modificações / Contribuições O script PHP de monitoração do Thunder é excelente. No entanto tomei a liberdade de modifica-lo afim de contabilizar a banda economizada desde o último acesso ao script. A idéia é muito simples, apenas salvo em um arquivo temporário a última economia em bytes calculada pelo script e a data, calculo a diferença e quanto tempo passou: essa é a economia por segundo. Converto para bits e temos o que queremos. Tentei anexar o patch no Forum mas infelizmente a extensão .patch nem .txt são permitidas. Então segue no corpo deste how-to: Código: --- /usr/local/thunder/etc/thunder/thunder.php 2009-09-27 12:14:07.000000000 -0300 +++ /usr/local/thunder/cache/index.php 2009-12-02 17:01:49.000000000 -0200 @@ -16,7 +16,7 @@ * * (C) Copyright 2008-2009 Thunder Cache * -* For more information check http://thundercache.org +* For more information check http://usr/local/thunder/cachecache.org * * Get relatories from system * @@ -24,7 +24,7 @@ */ error_reporting(0); - $cache_dir = "/thunder"; + $cache_dir = "/usr/local/thunder/cache"; function disk_use($dir){ $df = disk_free_space($dir); @@ -84,25 +84,32 @@ return $total; } - function sizeFormat($size){ + function sizeFormat($size,$By2bi){ + $b="B"; + $bs="bytes"; + if ($By2bi) { + $b="b/s"; + $bs="bits/s"; + $size=($size*8); + } if($size<1024) { - return $size." bytes"; + return round($size,1)." $bs"; } else if($size<(1024*1024)) { $size=round($size/1024,1); - return $size." KiB"; + return $size." K$b"; } else if($size<(1024*1024*1024)) { $size=round($size/(1024*1024),1); - return $size." MiB"; + return $size." M$b"; } else { $size=round($size/(1024*1024*1024),1); - return $size." GiB"; + return $size." G$b"; } } @@ -169,8 +176,12 @@ <table border="1" align="center"> <tr class="cabecalho"> <td><strong>Domínio</strong></td><td><strong>Arquivos</strong></td><td><strong>Tamanho</strong></td><td><strong>Economia</strong></td><td><strong>Hits</strong></td> - <td><strong>Eficiência %</strong></td></tr> + <td><strong>Eficiência %</strong></td> + <td><strong>Banda</strong></td></tr> <? + $current_data = array(date(U)); + $saved_data = unserialize(file_get_contents("/tmp/thunder_stats_fbsdbr.txt")); + foreach($domains as $domain) { //caso a base de dados não exista, ele tenta criar if ($db = new PDO("sqlite:$cache_dir/$domain/domain.db")) { @@ -184,6 +195,11 @@ foreach($db->query("SELECT file, requested, size from thunder") as $roww) { $economia_domain += ($roww[2] * $roww[1]); } + $current_data[$domain] = $economia_domain; + $segundos = $current_data[0] - $saved_data[0]; + $econo_bytes = (($current_data[$domain] - $saved_data[$domain])/$segundos); + $totalEcono_bytes+=$econo_bytes; + foreach ($db->query("SELECT SUM(requested) FROM thunder") as $row) { $ar = getDirectoryInfo("$cache_dir/$domain"); $porcent=round(($economia_domain/$ar['size'])*100,2) @@ -193,7 +209,8 @@ <td height="18"><font color="#20A253"><?= sizeFormat($ar['size']) ?></font></td> <td height="18"><font color="#20A253"><?= sizeFormat("$economia_domain") ?></font></td> <td height="18"><font color="#20A253"><?= $row['SUM(requested)'] ?></font></td> - <td height="18"><font color="#20A253"><?= $porcent ?> %</td></tr> + <td height="18"><font color="#20A253"><?= $porcent ?> %</td> + <td height="18"><font color="<?= ($econo_bytes<0) ? 'red' : ($econo_bytes>0) ? 'green' : 'black' ?>"><?= sizeFormat($econo_bytes,true) ?></td></tr> <? $totaleconomy += $economia_domain; $totalhits += $row['SUM(requested)']; @@ -204,13 +221,18 @@ ?> <?php $ar_root = getDirectoryInfo("$cache_dir"); + +$fp = fopen("/tmp/thunder_stats_fbsdbr.txt", 'w+') or die("I could not open $filename."); +fwrite($fp, serialize($current_data)); +fclose($fp); ?> <tr><td height="22"><b><font color="#0C70EE">Total</font></b></td> <td height="22"><b><font color="#0C70EE"><?= $ar_root['count'] ?></font></b></td> <td height="22"><b><font color="#0C70EE"><?= sizeFormat($ar_root['size']) ?></font></b></td> <td height="22"><b><font color="#0C70EE"><?= sizeFormat($totaleconomy) ?></font></b></td> <td height="22"><b><font color="#0C70EE"><?= $totalhits ?></font></b></td> - <td height="22"><b><font color="#0C70EE"><?= round(($totaleconomy/$ar_root['size'])*100,3) ?> %</font></b></td></tr> + <td height="22"><b><font color="#0C70EE"><?= round(($totaleconomy/$ar_root['size'])*100,3) ?> %</font></b></td> + <td height="22"><b><font color="#0C70EE"><?= sizeFormat($totalEcono_bytes,true) ?></font></b></td></tr> </table> </body> </html> Feedback de Performance e Economia de banda. Em anexo vocês vêem na primeira imagem o script de status do thunder modificado. Anexo:
Comentário sobre o Arquivo: Status do Thunder modificado (economia de banda) integrado Cacti. Captura_de_tela.png [ 266.1 KiB | Visualizado 2369 vezes ] Na segunda uma análise do tráfego NetFlow HTTP. Pra baixo a banda que eu envio pros clientes, pra cima a banda que eu vou buscar da Internet. Note que as cores é praticamente só HTTP tanto pros clientes quanto Internet. Anexo:
Comentário sobre o Arquivo: Análise NetFlow depois da ativação do Thunder. Captura_de_tela-1.png [ 304.89 KiB | Visualizado 2369 vezes ] Ou seja com o Thunder chegamos perto de 70Mbit/s entregue aos clientes, nesse FreeBSD em questão, enquanto consumimos menos de 8Mbit/s de Internet. Bem-vindos ao Thunder com FreeBSD. Notem que esse é o pico. Considerem a economia como o baseline que fica claro no gráfico em anexo. Atenção: Se você for usar o script modificado e não usa FreeBSD modifique : Código: + $cache_dir = "/thunder"; - $cache_dir = "/usr/local/thunder/cache"; Espero que essas instruções sejam úteis. Elas estão 100% testadas, se alguem simplesmente copiar e colar os comandos vai funcionar. Mas não faça isso puro-e-simpesmente; importante é entender o que você está fazendo. Obrigado a essa equipe pelo Thunder Cache e por criar um fórum para FreeBSD. Bom uso do how-to à comunidade FreeBSD. E se você não é usuário FreeBSD aproveite o encejo e use esse how-to como um convite. |
|
| Autor: | osmano807 [ Dezembro 2nd, 2009, 12:39 pm ] |
| Assunto do Tópico: | Re: Thunder Cache 3 no FreeBSD - Instruções de Instalação. |
Executou o thunder --help? Código: Usage: thunder [Options] Thunder Version 3 Possible options are: --help | -h This pamphlet --conf-file=FileName | -c Filename Use this Config-File Exiting.. thunder -c /path/do/conf Agora, me passe seu msn que to pensando em migrar meu servidor aqui
|
|
| Autor: | eksffa [ Dezembro 2nd, 2009, 4:36 pm ] |
| Assunto do Tópico: | Re: Thunder Cache 3 no FreeBSD - Instruções de Instalação. |
Opa, tem toooda razão osmano! Excelente. Vi que existem variaveis pra BLACK e WHITE o que resolve tambem essa questão. Vou atualizar a documentação. Quanto ao msn é esse mesmo que voce adicionou Sigamos. |
|
| Autor: | eksffa [ Dezembro 2nd, 2009, 4:48 pm ] |
| Assunto do Tópico: | Re: Thunder Cache 3 no FreeBSD - Instruções de Instalação. |
How-to atualizado depois da dica do Osmanu. CHANGELOG: - thunder_flags adicionado ao script de startup (pode ser customizado via /etc/rc.conf). - Não precisamos mais do /etc/thunder como symlink. - thunder.conf modificado para refletir a inexistência do /etc/thunder (BLACKLIST, WHITELIST, PLUGINSDIR). Testado (estou rodando com essas mudanças aqui) |
|
| Autor: | minelli [ Dezembro 2nd, 2009, 5:23 pm ] |
| Assunto do Tópico: | Re: Thunder Cache 3 no FreeBSD - Instruções de Instalação. |
Parabéns amigo pelo trabalho caso queira que seu material seja disponibilizado somente para Donators nos avise e fazermos a transferência de área, caso não queira meus parabéns mais uma vez. Afinal poucos fazem o que fez. |
|
| Autor: | Luiz Biazus [ Dezembro 3rd, 2009, 2:52 am ] |
| Assunto do Tópico: | Re: Thunder Cache 3 no FreeBSD - Instruções de Instalação. |
excelente mesmo! acho que todos sabem que servidores BSD são muito mais "parrudos" que linux de modo geral e tiram muito mais proveito do hardware... com certeza testarei isso ai! Parabéns velho! Abraços Luiz |
|
| Autor: | eksffa [ Dezembro 4th, 2009, 8:00 am ] |
| Assunto do Tópico: | Re: Thunder Cache 3 no FreeBSD - Instruções de Instalação. |
Minelli, Vamos ver, se o how-to se mostrar valioso podemos sim, nao torna-lo restrito mas uma versão melhor dele, com mais detalhes como t-proxy com Thunder, tunning de performance. |
|
| Autor: | minelli [ Dezembro 4th, 2009, 10:51 am ] |
| Assunto do Tópico: | Re: Thunder Cache 3 no FreeBSD - Instruções de Instalação. |
Ok, ficamos no aguardo. |
|
| Autor: | eksffa [ Dezembro 17th, 2009, 10:38 pm ] |
| Assunto do Tópico: | Re: Thunder Cache 3 no FreeBSD - Instruções de Instalação. |
Testado ambiente 64bits também. 100% funcional. |
|
| Autor: | matheuscucoloto [ Dezembro 18th, 2009, 6:28 pm ] |
| Assunto do Tópico: | Re: Thunder Cache 3 no FreeBSD - Instruções de Instalação. |
Fala Patrick. Estou usando o thunder 3 aqui na empresa mas sem o linux emule, o pessoa do thunder acessou nosso servidor e compilou. Aqui esta rodando perfeitamente também. Faz tempo que eu nao via uma publicação sua. Abraços |
|
| Página 1 de 4 | Todos os Horários estão como UTC - 3 horas |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|