Instalación de ThunderCache 3.1 paralelo a Mikrotik

Publicado en 'Redes Inalámbricas' por joemg6, 8 Ago 2011.





  1. btocarmona

    btocarmona Miembro frecuente

    Registro:
    22 Oct 2011
    Mensajes:
    77
    Likes:
    6
    Temas:
    1




    Amigo para que no te suceda esto debes poner el quipo en repeter y no en repeter universal de esta manera te va a entregar cada ip con su mac correpondiente de lo contrario te va a suceder lo que comntas, esto me sucedio con un TP-link 5210 en modo repeter universal pero en modo repeter funciona perfecto.Saludos
     


  2. joemg6

    joemg6 Miembro maestro

    Registro:
    5 May 2010
    Mensajes:
    455
    Likes:
    198
    Temas:
    4
    Se ha reprogramado y compilado el cleaner del Thunder ya que este presentaba fallas en su ejecución en la plataforma de 64bits, también se ha adicionado que limpie los contenidos que hay con tamaño 0.
    32 bits
    http://www.joemg.host56.com/clean/32bits/clean.zip
    64bits
    http://www.joemg.host56.com/clean/64bits/clean.zip
    Su uso es más sencillo solo ejecutar de la siguiente manera:
    Por ej. si se quiere limpiar los archivos que no han hecho Hit en 45 días
    ./clean 45
    No olvidar darle permisos de ejecución.

    Mantenimiento del thunder
    Para rotar los logs de acceso del thunder, ya que hacía falta se puede implementar este script.
    Creamos un archivo con el nombre thunderotate.sh y que tenga el siguiente contenido y que este guardado en "/etc/thunder/"
    Código:
    #!/bin/bash
    PATH="/bin:/usr/bin:/usr/local/bin"
    dates=`date +%Y%m%d`
    thunderlog=/var/log/thunder/access.log
    find $thunderlog -name '*.log' -type f -size +30720k | while read logfile
    do       # the parsing of a line
     echo $logfile
     newlogfile=$logfile.$dates
     cp $logfile $newlogfile
     cat /dev/null > $logfile
     gzip -f -9 $newlogfile
    done
    find $thunderlog -name '*.gz' -type f -mtime 30 |xargs rm -f
    
    Luego ponemos una regla en el crontab para que se ejecute automaticamente
    Código:
    59              22              *       *               *       root    /etc/thunder/thuderotate.sh
    
    Sobre el consumo de CPU alto en algunas ocasiones, se está analizando que es lo que lo ocasiona ya que en las pruebas hasta ahora no me topo con este problema, pero una buena iniciativa es usar el script que publico el amigo Lord Acero, el único inconveniente es que reinicia al thunder aunque este proceso es rápido puede provocar desconexión en los usuarios lo que se puede hacer es optimizar el script que en vez de reiniciar solo mate al este proceso, ya se está trabajando es esto, en las nuevas instalaciones trae un script por decirlo en face beta que hace esto.

    Creamos un archivo con el nombre killcpumax.sh y que tenga el siguiente contenido y que este guardado en "/etc/thunder/"
    Código:
    #!/bin/bash
    PATH="/bin:/usr/bin:/usr/local/bin"
    max_cpu=\/$(ps -eo user,pid,pcpu,pmem,comm | grep thunder | awk '{ if ( $3 > 79) print $2 " " $3 " " $5}')
    echo $max_cpu
    kill -9 $max_cpu >/dev/null 2>&1
    run=$(ps -A -ostat,ppid,pid,cmd | grep thunder | grep -e '^**[Rr]' | awk '{print $2}')
    echo $run
    kill -HUP $run >/dev/null 2>&1
    zbi=$(ps aux | awk '{ print $2 " " $3 " " $8 }' | grep -w Z)
    echo $zbi 
    kill -9 $zbi >/dev/null 2>&1
    
    Luego ponemos una regla en el crontab para que se ejecute automaticamente
    Código:
    */5             *               *       *               *       root    /etc/thunder/killcpumax.sh
    


    Códigos de fuente

    Esta es una actualización al plugin de google, que antes sólo hacia caché al contenido de google earth, con esta implementación tambien hará cache a las actualizaciónes de google por ej. google chrome.
    google.com.cpp
    Código:
    #include <iostream>
    #include <cstring>
    #include <vector>
    #include "../utils.cpp"
    
    // use this line to compile
    // g++ -I. -fPIC -shared -g -o google.com.so google.com.cpp
    // regex 
    // http.*\.google\.com.*(\.kmz|\.exe|\.msi|\.kmz|\.msp|\.cab)
    
    string get_filename(string url) {
          vector<string> resultado;
                    if (url.find("?") != string::npos) {
             stringexplode(url, "?", &resultado);
             stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
             return resultado.at(resultado.size()-1);           
          } else {
             stringexplode(url, "/", &resultado);
             return resultado.at(resultado.size()-1);
          }
    }
    
    extern "C" resposta getmatch(const string url) {
        resposta r;   
    
      if ( (url.find(".google.com/") != string::npos) and (url.find(".kmz") != string::npos)
         ) {
          r.file = get_filename(url);
          if (!r.file.empty()) {
             r.match = true;
             r.domain = "google-earth";       
          } else {
             r.match = false;
          }
       }
       
       else if ( (url.find(".google.com/") != string::npos) and ((url.find(".exe") != string::npos) or (url.find(".msi") != string::npos) or 
                                                                 (url.find(".cab") != string::npos) or (url.find(".msp") != string::npos)) 
       ) {      
           r.file = get_filename(url);
          if (!r.file.empty()) {
             r.match = true;
             r.domain = "google_updates";
          } else {
             r.match = false;
          }
       } 
       else 
       {
          r.match = false;
       }
       return r;
    }
    
    Juego Atlantica
    pandonetworks.com.cpp
    Código:
    #include <iostream>
    #include <cstring>
    #include <vector>
    #include "../utils.cpp"
    
    // use this line to compile
    // g++ -I. -fPIC -shared -g -o pandonetworks.com.so pandonetworks.com.cpp
    // Regex
    // http.*\.pandonetworks\.com.*(\.nzp|\.lst)
    
    string get_filename(string url) {
            vector<string> resultado;
            if (url.find("?") != string::npos) {
                stringexplode(url, "?", &resultado);
                stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
                return resultado.at(resultado.size()-1);           
            } else {
                stringexplode(url, "/", &resultado);
                return resultado.at(resultado.size()-1);
            }
    }
    
    extern "C" resposta getmatch(const string url) {
        resposta r;
        
        if ( (url.find(".pandonetworks.com/IgnitedAtlantica/") != string::npos) 
        ) {
            
            r.file = get_filename(url);
            if (!r.file.empty()) {
                r.match = true;
                r.domain = "atlantica";
            } else {
                r.match = false;
            }
        } else {
            r.match = false;
        }
        return r;
    }
    
    
    Netflix
    nflxvideo.net.cpp
    Código:
    #include <iostream>
    #include <cstring>
    #include <vector>
    #include "../utils.cpp"
    
    // use this line to compile
    // g++ -I. -fPIC -shared -g -o nflxvideo.net.so nflxvideo.net.cpp
    // regex
    // http.*\.nflxvideo\.net.*
    
    string get_filename(string url) {
            vector<string> resultado;
            if (url.find("?") != string::npos) {
                stringexplode(url, "?", &resultado);
                stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
                return resultado.at(resultado.size()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1);           
            } else {
                stringexplode(url, "/", &resultado);
                return resultado.at(resultado.size()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1); ;
            }
    }
    
    extern "C" resposta getmatch(const string url) {
        resposta r;    
    
        if ( (url.find(".nflxvideo.net/") != string::npos) 
        ) {
            
            r.file = get_filename(url);
            if (!r.file.empty()) {
                r.match = true;
                r.domain = "netflix";
            } else {
                r.match = false;
            }
        } else {
            r.match = false;
        }
        return r;
    }
    
    
    veevr
    hwcdn.net.cpp
    Código:
    #include <iostream>
    #include <cstring>
    #include <vector>
    #include "../utils.cpp"
    
    // use this line to compile
    // g++ -I. -fPIC -shared -g -o hwcdn.net.so hwcdn.net.cpp  
    // Regex
    // http.*\.hwcdn\.net*
    
    string get_filename(string url) {
            vector<string> resultado;
            if (url.find("?") != string::npos) {
                stringexplode(url, "?", &resultado);
                stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
                return resultado.at(resultado.size()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1);           
            } else {
                stringexplode(url, "/", &resultado);
                return resultado.at(resultado.size()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1); ;
            }
    }
    
    extern "C" resposta getmatch(const string url) {
        resposta r;        
    
        if ( (url.find(".hwcdn.net/") != string::npos)
        ) {
            
            r.file = get_filename(url);
            if (!r.file.empty()) {
                r.match = true;
                r.domain = "veevr";
                         r.file += ".mp4";
            } else {
                r.match = false;
            }
        } else {
            r.match = false;
        }
        return r;
    }
    
    
    Hay otros más, no puedo poner todos los códigos sino esto se hace muy extenso, pero lo pueden revisar en esta parte
    http://www.joemg.host56.com/plugins32/
    http://www.joemg.host56.com/plugins64/

    Todo esto ya viene actualizado para las nuevas instalaciones.
     
    Última edición: 21 Set 2012
    A mrodas, tonyvzla, Lord Acero y otras 2 personas les gustó este mensaje.
  3. 4rc4nh3ll

    4rc4nh3ll Miembro frecuente

    Registro:
    23 Nov 2009
    Mensajes:
    139
    Likes:
    6
    Temas:
    8
    me vuelvo loco, esto esta muy bueno... muchas gracias joemg

    Yo habia intentado hacer plugin a juegos que usan pandonetworks (audition, point blank, etc..) pero nunca me funcionaron...
     
  4. joemg6

    joemg6 Miembro maestro

    Registro:
    5 May 2010
    Mensajes:
    455
    Likes:
    198
    Temas:
    4
    Si hay más juegos que utilizan el servidor pandonetworks adicionarlos en el código de fuente viendo como modelo el código de softnyx o de google.
     
  5. haroldbb24

    haroldbb24 Miembro frecuente

    Registro:
    14 Set 2008
    Mensajes:
    134
    Likes:
    7
    Temas:
    14
    joemg6 nos ayudas mucho en el foro, te lo agradesco yo recien acabo de instalar el thunder y va bien youtube....

    una consulta algunos que han tenido este sistema cache tienen problemas con archivos corruptos y no saben como limpiarlos, esto es cierto?¨yo recien entro con esta version .... saludos
     
  6. joemg6

    joemg6 Miembro maestro

    Registro:
    5 May 2010
    Mensajes:
    455
    Likes:
    198
    Temas:
    4
    Aumentar discos duros mientras se llena el espacio del caché
    Muchos se han preguntado cómo aumentar el espacio de almacenamiento mientras el Thunder ya casi utilizó la gran parte, este proceso se puede hacer implementando el LVM2 (administrador de volúmenes lógicos) para configurar de esta manera se tiene que tener un disco duro de sistema y el resto para caché, en estos discos es el que se configurará mediante el LVM2, para luego ser montado en la carpeta /thunder/, al utilizar esta configuración uno puede aumentar más discos si uno desea , ya estaré publicando el tutorial de la implementación de este sistema al Thunder, si quieren hacerlo de forma manual pueden buscar información sobre LVM2.
     
    A leandro1979, Firecold y luistec les gustó este mensaje.
  7. luistec

    luistec Miembro frecuente

    Registro:
    5 Mar 2012
    Mensajes:
    206
    Likes:
    19
    Temas:
    0
    Hasta ahora no te tenido problemas repecto al problema de archivos corruptos del youtube, es bueno ver que joemg actualizo el cleaner ya que el antiguo no funcionaba en 64 bits.
     
  8. CASL2008

    CASL2008 Miembro nuevo

    Registro:
    5 Ago 2012
    Mensajes:
    20
    Likes:
    0
    Temas:
    0
    Calidad yupiiiiiiiiiiii, agradecido tremendo thunder no he tenido ningun problema. gracias gracias.... joemg
    :)
     
  9. willysantana

    willysantana Miembro frecuente

    Registro:
    15 Abr 2012
    Mensajes:
    189
    Likes:
    7
    Temas:
    5
    wget http://www.joemg.host56.com/clean/64bits/clean
    mv clean /etc/thunder/

    amigo joeng6 mil gracias,amigo en las nuevas instalaciones no estas estas descargando el clean.
    el scrist esta mal la parte del clean, párese que falto algo.


    amigo por favor, sube estos pluguins al thunder para nuevas instalaciones mil gracias.

    http.*\.speed\.com\.do.*\.jpg

    http.*\.viva\.com\.do.*\.jpg
     
    Última edición: 21 Set 2012
  10. ninoh

    ninoh Miembro frecuente

    Registro:
    28 Oct 2011
    Mensajes:
    53
    Likes:
    1
    Temas:
    0
    Joemg una pregunta.... sabes que en el crontab hay una regla que reinicia el servidor thunder esta configurada por defecto para hacerlo en la madrugada.. y también hay otra que solo reinicia el servicio thunder y el squid...


    Mi pregunta es... es recomendable que se reinicie el servidor diariamente ??
    tambien es recomendable reiniciar el servicio squid y thunder diariamente??
     
  11. willysantana

    willysantana Miembro frecuente

    Registro:
    15 Abr 2012
    Mensajes:
    189
    Likes:
    7
    Temas:
    5
    optimizar el script que en vez de reiniciar solo mate al este proceso, ya se está trabajando es esto, en las nuevas instalaciones trae un script por decirlo en face beta que hace esto.

    Creamos un archivo con el nombre killcpumax.sh y que tenga el siguiente contenido y que este guardado en "/etc/thunder/"
    Código:
    ================================================================
    #!/bin/bash
    PATH="/bin:/usr/bin:/usr/local/bin"
    max_cpu=\/$(ps -eo user,pid,pcpu,pmem,comm | grep thunder | awk '{ if ( $3 > 79) print $2 " " $3 " " $5}')
    echo $max_cpu
    kill -9 $max_cpu >/dev/null 2>&1
    run=$(ps -A -ostat,ppid,pid,cmd | grep thunder | grep -e '^**[Rr]' | awk '{print $2}')
    echo $run
    kill -HUP $run >/dev/null 2>&1
    zbi=$(ps aux | awk '{ print $2 " " $3 " " $8 }' | grep -w Z)
    echo $zbi
    kill -9 $zbi >/dev/null 2>&1
    ==============================================================
    Luego ponemos una regla en el crontab para que se ejecute automaticamente
    Código:
    */5 * * * * root /etc/thunder/killcpumax.sh

    hola alguien me puedes explicar.
    como saber cuando este script iso su función.
    ejemplo antes estaba usando el reinicio del thunder y me guardaba un archivo cuando reiniciaba por cpu80%.
    en este nuevo script como puedo saber, cuando mate el proceso del thunder por cpu80%.
    gracias.
     
    Última edición: 21 Set 2012
  12. joemg6

    joemg6 Miembro maestro

    Registro:
    5 May 2010
    Mensajes:
    455
    Likes:
    198
    Temas:
    4
    Al parecer no se grabó bien esa modificación, pero detalle corregido.
    La regla de reinicio del servidor no es obligatorio, es mas que nada para que haga un reinicio de mantenimiento, sobre el reinicio del thunder y el squid esta regla no se efectúa esta comentada (#) la cual ya no es necesaria, solo esta ahí por si se quiere tal vez aplicar en algún momento.
    Como mencioné no me he topado con este problema, tal vez porque tengo un script que hacía que procesos no se queden estancados, ahora lo estoy aplicando solo al thunder y por lo que he visto en las capturas de cuando el thunder usa un exceso del CPU parece que es porque un proceso se queda en cola y tarda como 1 hora en cola para que llegue a ese consumo del CPU, el script en una de las líneas se encarga de que si el proceso se queda en cola mate a ese proceso, y así evitar que se quede tanto tiempo, pero si esto falla en otra se encarga de que si pasa el consumo de más 79% CPU mate a ese proceso, y también si hay un proceso zombi mate a este proceso, este script está face beta, si todo va bien ya se le adicionará para que genere un log.
     
    Última edición: 21 Set 2012
  13. lucianog

    lucianog Miembro nuevo

    Registro:
    18 Set 2012
    Mensajes:
    3
    Likes:
    0
    Temas:
    0
    Estimados:
    Ante todo gracias por sus prontas respuestas.
    Les comento que las características del hardware donde estoy evaluando TC3.1.2 son
    Mikrotik: RB 750
    Equipo TC3.1.2: HP Proliant
    Intel(R) Pentium(R) 4 CPU 2.80GHz (2 cores)
    Disco duro de 250GB 7200 rpm
    RAM 2,5 GB DDR2 @400MHz
    Usuarios: 4 Notebooks (Todos UBUNTU) 3 inalambricos y 1 cableado

    Voy a armar un equipo con winXP y evalúo el rendimiento

    Si necesitan algún log para analizar me indican cual y lo posteo.

    Muchas gracias.
     
  14. willysantana

    willysantana Miembro frecuente

    Registro:
    15 Abr 2012
    Mensajes:
    189
    Likes:
    7
    Temas:
    5

    amigo mil gracias por tu clara explicación.

    amigo por favor, sube estos pluguins al thunder para nuevas instalaciones mil gracias.

    http.*\.speed\.com\.do.*\ .jpg [este para claro]

    http.*\.viva\.com\.do.*\. jpg [este para viva]
    ============================================================
    alguien me explica,en el thunderreport tengo cachado 98.68 gb
    pero en el disco solo tiene 54 gb

    Cache Dinámico
    Espacio Usado 98.68 GiB
    Ahorro 26.42 GiB
    Eficiencia 26,77 %

    Estado de Discos

    Filesystem Size Used Avail Use% Mounted on
    /dev/sda1 92G 18G 70G 20% /
    tmpfs 2.0G 0 2.0G 0% /lib/init/rw
    udev 2.0G 212K 2.0G 1% /dev
    tmpfs 2.0G 0 2.0G 0% /dev/shm
    /dev/sda3 360G 54G 288G 16% /thunder
     
    Última edición: 21 Set 2012
  15. pelinho

    pelinho Miembro nuevo

    Registro:
    19 Abr 2010
    Mensajes:
    11
    Likes:
    0
    Temas:
    1
    Hola Joemg6, gracias por el los conocimientos que compartes y estoy seguro todos en el foro estamos agradecidos y aprendemos mucho mas sobre este proxy.
    Amigo, si bien la pregunta quizás ya las hayas respondido, o si alguien del foro conoce, hay alguna forma de hacer de backup de todo el cache del Thunder, esto es para poder hacer una nueva reinstalaron con los nuevos cambios que agregaste y luego restaurar el cache, tengo casi unos 6 GB de cache de Windows Update y de otros Plugin y no los quisiera perder si realizo una resintalacion.
    Gracias Joemg6 y disculpen si la pregunta es repetitiva.
     
  16. luistec

    luistec Miembro frecuente

    Registro:
    5 Mar 2012
    Mensajes:
    206
    Likes:
    19
    Temas:
    0
    Ahi esta la información que buscas
     
  17. haroldbb24

    haroldbb24 Miembro frecuente

    Registro:
    14 Set 2008
    Mensajes:
    134
    Likes:
    7
    Temas:
    14
    hola amigos tengo una dificultad ya habia podido entrar al thunder con winscp pero ahora no me deja entrar, pensando que era el thunder lo volvi a instalar y sige con este error..... probe con filezilla y lo mismo , por lo demas esta funcionando perfecto todo pero quiero poner mas plugins ;alguien que le haya pasado esto?
     
  18. tonyvzla

    tonyvzla Miembro frecuente

    Registro:
    6 Ene 2012
    Mensajes:
    203
    Likes:
    5
    Temas:
    2
    Ya instalates el SSH en servidor thunder? si no lo has instaldo has esto:

    Código:
    apt-get install ssh
    y listo prueba a ver si entra
    :yeah:
     
  19. willysantana

    willysantana Miembro frecuente

    Registro:
    15 Abr 2012
    Mensajes:
    189
    Likes:
    7
    Temas:
    5
    amigo joemg6 por favor,que esta pasando con esto?:cray:
    gracias.
     
  20. CASL2008

    CASL2008 Miembro nuevo

    Registro:
    5 Ago 2012
    Mensajes:
    20
    Likes:
    0
    Temas:
    0
    Hola amigos, he visto que varias paginas porno utilizan el servidor xhamster y estos videos no los guarda, la pagina es xhamster.com. hice el plugin pero no me funko. quien ha intentado? joemg si nos podrias ayudar con ese plugin.
     
Etiquetas: