+ Responder ao Tópico



  1. #1
    Danilo_Montagna
    Visitante

    Padrão shell script para IPROUTE2

    Preciso que alguem faça um script para mim para um balanceamento de carga que possuo..

    a ideia é a seguinte...

    tenho 2 links de internet aqui.. balanceados por um LInux com IPROUTE2..

    se um link cair.. um script shell que ficara monitorando a interface de internet dos 2 roteadores devera remover uma das rotas que caiu da rota de balanceamento...

    e continuar a ficar chegando se o link voltar.. ele tem que readicionar essa rota novamente...

    detalhes: esse script precisa detectar que o link caiu via ping.. se o link cair.. ele executa um comando para remover uma das rotas do balanceamento.. porem.. depois dele remover essa rota.. o script nao pode ficar re-executando esse script para tirar a rota.. ate que o link volte.. deu para entender?

    pois a ideia é deixar esse script em LOOP rodando a cada um intervalo de tempo.. tipo a cada 2 minutos.. se o link cair.. ele remove uma das rotas do linux.. porem.. depois na proxima execucao do script.. ele nao pode executar novamente essa remocao da rota.. pois ela ja foi feita.. e dae vai ficar dando erro.. blz?

    interessados.. favor enviar mensagens privativas aqui no forum mesmo..

    OBs.: Claro que esse trabalho será remunerado por mim. :-)

  2. #2

    Padrão shell script para IPROUTE2

    Ola..

    Possuo algo parecido com o quer fazer...., vou te passa o script e vc modifica conforme sua necessidade:

    #!/bin/bash

    PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin

    MISSED=0
    Count=0

    ## Dá um salto de 6 pacotes no IP

    while [ $Count -lt 6 ]; do
    if ! ping -c 1 201.XXX.XXX.XXX ; then
    ((MISSED++))
    fi
    ((Count++))
    done
    echo "Terminou"

    ## Se falhou em mais de 4 pacotes do ping então limpa as configurações ##
    if [ $MISSED -ge 5 ]; then
    Tuas_regras_para_Limpar (aqui é contigo)
    fi

    OBS-> adicionei o script no cron de 3 em 3 minutos...

    O resto é contigo...

    t+

  3. #3
    Danilo_Montagna
    Visitante

    Padrão shell script para IPROUTE2

    blz cara.. vou testar...

    mais isso faz a checagem de que comentei ?

    se ele remover a regra .. depois que ele detectou que o link nao responde mais.. no proximo RUN do script.. ele nao vai tentar remover a regra novamente ?

    ou ele checa se ja foi executado ?

    esse é o meu maior problema hoje...

  4. #4

    Padrão shell script para IPROUTE2

    Vai sim, mas isso não vai ser um problema.. simplesmente vai rodar o script ou regras (como vc definir) para remoção do link novamente...

    Você tbem pode adapta-lo....

    [];

  5. #5
    Danilo_Montagna
    Visitante

    Padrão shell script para IPROUTE2

    vc sabe se existe como fazer essa checagem ?

    de repente gravar um log a palavra "Link OFF" e fazer ele ler esse log por esas linha antes de executar o comando ? se estiver LINK OFF no arquivo de log.. ele nao faz nada.. caso contrario.. se o ping responder .. ele adiciona a rota novamente ... e loga no arquivo "Link ON" .. e depois como o ping ira responder.. ele vai checar se existe a palavra "LINK ON" dentro do logfile.. se tiver.. ele nao faz nada..

    vc tem ideia de como faz isso no shell script ?

  6. #6

    Padrão resposta

    Mano brão vc vai d ter de escrever seu próprio script conforme suas regras ou melhor bases..... dá para vc pegar o começo do script do nosso amigo ai e escrever o resto conforme você quer... quanto ao log tem sim!
    vê ai ce vc concegue fazer o script rodar c naum posta ai como está sua estrutura.... blz que dai vou tentar te ajudar.
    falows


    Citação Postado originalmente por Danilo_Montagna
    vc sabe se existe como fazer essa checagem ?

    de repente gravar um log a palavra "Link OFF" e fazer ele ler esse log por esas linha antes de executar o comando ? se estiver LINK OFF no arquivo de log.. ele nao faz nada.. caso contrario.. se o ping responder .. ele adiciona a rota novamente ... e loga no arquivo "Link ON" .. e depois como o ping ira responder.. ele vai checar se existe a palavra "LINK ON" dentro do logfile.. se tiver.. ele nao faz nada..

    vc tem ideia de como faz isso no shell script ?

  7. #7

    Padrão shell script para IPROUTE2

    bom nao se esqueca de que alterar seu load balance voce deve (deve nao, é quase que obrigatorio) voce limpar o cache de rotas, pois senao ele continuara roteando os pacotes pelo link invalido (isso é uma grave falha do iproute2), o comando "ip flush cache" resolve o seu problema, se nao me falha a memoria (faz um certo tempinho q eu nao faco loadbalance com iproute2), assim ele vai aprender as novas rotas pelo "novo" link.

    vale a pena lembrar tambem que existe um patch para corrigir esse problema do iproute2 nao se preocupar com o estado do link. procure por ele. talvez seja melhor do que fazer um script e teste-o, e veja se funciona.

    outra solução é monitorar a conexao com o "mon" e fazer um script para na hora q ele tomar a decisão executar o mesmo ajeitando seus links, bom, essa é uma solução mais complexa, entretanto mais robusta do que um simples script, pois conta com logs, alertas de email, etc etc.

    Nao to desmerecendo o script, mais dependendo do que voce for fazer o script vai ficar maior e mais complexo, caso voce queira monitrar outro servico, terá que fazer outro script, ja com o mon isso fica um pouco mais facil, já que ele foi feito para monitoração, basta adptar ele ao seu caso, mas como um "workaround" va com o script que eh muito, mas muito mais facil, mas lembre-se que essa solução pode falar, e deixar seu link em estado incosistente, mesmo que pode 3 minutos, ou o tempo de intervalo do seu cron + a execucao do script, se voce se der o luxo de ficar esse tempo todo "offline", sem problemas.

  8. #8

    Padrão Vamos ver c vai funfar

    eu tive pensnado... para ficar mais facil da para fazer dois scripts... pois vc vai colocar tipo o script1 no crontab dai ele ta ali rodando..... quando flahar ele limpa as regras cria as suas , troca o nome dele no cron para o nome do script2 e chama o script2, que por sua vez fai fazer o inverso......

    O que vc acha... pelo que tive analisando da realmente para fazer tudo isso com esse fragmento do script de cima![/code]

  9. #9

    Padrão legal...

    Boa lembrada.... eu uso os scripts pois não tenho problemas quanto ao tempo.... mas é uma boa escolha
    Citação Postado originalmente por mistymst
    Nao to desmerecendo o script, mais dependendo do que voce for fazer o script vai ficar maior e mais complexo, caso voce queira monitrar outro servico, terá que fazer outro script, ja com o mon isso fica um pouco mais facil, já que ele foi feito para monitoração, basta adptar ele ao seu caso, mas como um "workaround" va com o script que eh muito, mas muito mais facil, mas lembre-se que essa solução pode falar, e deixar seu link em estado incosistente, mesmo que pode 3 minutos, ou o tempo de intervalo do seu cron + a execucao do script, se voce se der o luxo de ficar esse tempo todo "offline", sem problemas.

  10. #10
    Danilo_Montagna
    Visitante

    Padrão shell script para IPROUTE2

    galera.. ja consegui .. valew... uma pessoa se ofereceu para fazer o script para mim.. e como meu negocio é infra e nao shell script... eu so tenho a agradecer a todos..


    mistymst,

    O flush de cache de rotas.. ja esta no script que cria o balanceamento.. e tb vai estar no script de monitoracao dos links.. e sera executado sempre que houver mudanca no estado de qualquer rota.. mais obrigado por avisar mesmo assim...