+ Responder ao Tópico



  1. #1

    Padrão Squid Cluster - sibling proxy

    Bom, vamos passar um background da informação.... como sabemos o squid nao é um processo multithread, logo se colocarmos em uma maquina SMP ele nao irá funcionar a contento, ficando somente em um CPU.

    Então a ideia é o seguinte, de posse de uma maquina dual xeon 2.4ghz, com isso temos 4 nucleos, a ideia seria alocar 1 processo do squid por nucleo, para aproveitar melhor o hardware.

    Como ideia inicial, vou rodar somente 2 processos do squid para ver como se compartará o garoto, então vamos lá, vou postar as linhas relevantes das configurações.


    Squid Principal:

    cache_peer 10.1.0.2 sibling 3129 3131 proxy-only allow-miss name=rafael/3
    icp_hit_stale on


    Squid Sibling 3:
    http_port 3129
    icp_port 3131
    cache_peer 10.1.0.2 sibling 3128 3130 proxy-only name=rafael
    icp_access allow all
    icp_hit_stale on


    Basicamente é isso de informação relavante, ativei o loggin do sibling 3 (que no futuro nao logará nada para nao tufar o meu loggin com baboseira) e temos as seguintes linhas relevantes:

    cache.log
    2008/04/25 12:11:57| Configuring Sibling 10.1.0.2/3128/3130

    access.log
    1209136919.548 0 10.1.0.2 UDP_MISS/000 100 ICP_QUERY http://artistas.flogbrasil.terra.com...0004518-tb.jpg - NONE/- -
    1209136919.676 0 10.1.0.2 UDP_MISS/000 73 ICP_QUERY <![CDATA[estadao.com.br - Últimas notícias]]> - NONE/- -
    1209136919.678 0 10.1.0.2 UDP_MISS/000 73 ICP_QUERY <![CDATA[estadao.com.br - Últimas notícias]]> - NONE/- -
    1209136919.708 0 10.1.0.2 UDP_MISS/000 79 ICP_QUERY http://fmail-b.uol.com.br/css/shoppi...as-webmail.css - NONE/- -
    1209136919.792 0 10.1.0.2 UDP_MISS/000 69 ICP_QUERY http://www.brimages.com/uploads/9/e285fd8403.jpg - NONE/- -


    Ok, agora vamos lá, o PROBLEMA:

    Pelo que me consta depois de alguns temos nesse acesso este sibiling nao esta indo fazer diretamente o acesso a internet e baixando o objeto solicitado, e apos algumas horas de uso, o tamanho do cache nem se moveu, ou seja, acredito que ele nao esteja indo na internet fazer o fetch do objeto.

    Então o que eu quero basicamente, eu quero que o usuario veja somente um proxy (possa somente acessar diretamente um deles) e esse cache faz as solicitações para os seus siblings para ajudar no cache (mas daí os siblings pesquisarem objetos também para ajudar).
    Deu para entender o problema? acho que a outra opção seria configurar os proxy dos usuarios com varios cache_peer de parents, e talvez funcione, mas nao sei... ainda nao testei, o que voces dizem? Deu para entender o problema e a solução que eu quero ?

  2. #2

  3. #3

    Padrão

    o que você pode fazer é usar o NTH do iptables para fazer o redirecionamento para os proxy's, desta forma cada conexão vai para uma instância, caso a mesma não tenha o objeto consulta o irmão.

  4. #4

    Padrão

    o nth nao resolveria.. porque voce teria 2 caches duplicados..

    vou verificar nas minhas configs aqui sobre o parentesco do squid..

    talvez um allow_direct ou never_direct seja necessario para forçar algo..

  5. #5

  6. #6

    Padrão

    Nao uso proxy transparente Luciano eu uso politica de dominio para forçar o proxy, mas ainda não está tao organizado para poder aplicar diversas politicas de proxy assim.. e ai seria inviavel fazer isso, ai seria mole mole o lance dos siblings.

    Vou tentar rolar com multiplos parents!

  7. #7

    Padrão

    Bom vamos lá... mais um passo da viagem... agora eu juntei a historia usando multiplos pais (parents) e os parents com sibling, ou seja, juntei as duas ideias anteriores.

    Vamos ao que interessa:

    * squid

    cache_peer 127.0.0.1 parent 3129 3131 carp weight=1 no-query proxy-only name=rafael1
    cache_peer 127.0.0.1 parent 3127 3132 carp weight=1 no-query proxy-only name=rafael2

    icp_hit_stale off

    * parent/sibling 1

    http_port 127.0.0.1:3129
    icp_port 3131

    cache_peer 127.0.0.1 sibling 3127 3132 proxy-only name=rafael/2
    http_access allow localhost
    visible_hostname rafael/1
    icp_hit_stale on


    * parent/sibling 2

    http_port 127.0.0.1:3127
    icp_port 3132

    cache_peer 127.0.0.1 sibling 3129 3131 proxy-only name=rafael/1

    http_access allow localhost

    visible_hostname rafael/2
    icp_hit_stale on

    ------

    Bom isso aparanemente esta funcionando, pois eu zerei os cache_dir todo e com umas 2h de funcionamento:

    rafael:~# df -h|grep squid
    /dev/sda7 5.5G 4.1G 1.2G 79% /squid-cache/01
    /dev/sda8 5.5G 160M 5.1G 3% /squid-cache/02
    /dev/sda9 5.9G 1.1G 4.5G 19% /squid-cache/03

    Até agora so cresceu pouco o cache numero 2, enquanto que o 03 ta bem mais rapido, mas ta crescendo!

    So que eu acho que a minha perfomance nao melhorou tanto assim não, realmente tirou uma carga de cima de um unico cpu, mas a carga principal que eu creio que são de ACLs ainda continuam (visto que os parents nao possuem ACL, ja que a ideia disto tudo é ter somente um unico lugar para controlar o acesso). Nesse setup também é interessante se algum dos parents crashar, ou no caso se ambos, a internet nao fica fora porque o squid principal continua configurado para acessar diretamente a internet.

    top - 13:54:26 up 27 days, 3:12, 1 user, load average: 1.54, 1.92, 1.92
    Tasks: 88 total, 2 running, 86 sleeping, 0 stopped, 0 zombie
    Cpu(s): 25.9%us, 2.0%sy, 0.0%ni, 69.4%id, 1.1%wa, 0.3%hi, 1.3%si, 0.0%st
    Mem: 1036492k total, 1020300k used, 16192k free, 52036k buffers
    Swap: 1951888k total, 72k used, 1951816k free, 551920k cached

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    26550 proxy 22 0 105m 91m 2112 R 100 9.0 133:40.06 squid
    2891 root 15 0 37656 3712 532 S 6 0.4 391:30.99 fprobe
    26888 proxy 15 0 106m 102m 2016 S 5 10.2 3:56.43 squid
    26894 proxy 15 0 2292 696 592 S 1 0.1 0:25.05 diskd-daemon
    26556 proxy 15 0 2288 748 652 S 0 0.1 0:21.63 diskd-daemon
    26926 proxy 15 0 63480 58m 1948 S 0 5.8 0:31.74 squid
    27147 root 15 0 2228 1128 856 R 0 0.1 0:00.14 top
    ai fica um pedaço do top, como agente pode ver so 1 squid ta tocando 100% de cpu. Se analisarmos a % de ocupação ta em ~25%.

    Ainda vou analisar se os acessos ficaram mais rapidos, deixam os usuarios "analisarem"