Affichage des résultats 1 à 8 sur 8

Discussion: Comment configurer un Trunk Sip via un Round Robin ?

  1. #1
    Membre Junior
    Date d'inscription
    octobre 2010
    Messages
    2
    Downloads
    0
    Uploads
    0

    Comment configurer un Trunk Sip via un Round Robin ?

    Bonjour,

    Est-il possible de faire du Round Robin via Asterisk ?

    J'explique ma problématique :

    J'ai 2 lignes T2, le Trunk Sip s'effectue par les 2 routeurs, seulement voilà la majorité des appels vers l'extérieure passe par le 1er Routeur jusqu'à sa saturation (Ce sont nos macros qui sont écrits comme cela).
    J'aimerai donc faire du Round Robin afin de répartir la charge des appels, un coup sur le Routeur1 et ensuite via le Routeur2 puis Routeur1, ainsi de suite...


    Configuration actuelle :

    ---- SIP.CONF ----
    [Routeur1]
    type=friend
    host=X.X.X.10
    canreinvite=no

    [Routeur2]
    type=friend
    host=X.X.X.11
    canreinvite=no

    ---- EXTENSIONS.CONF ----
    [macro-VersNumeroExterne]
    exten => s,1,Set(CALLERID(num)=${ARG1})
    exten => s,n,Dial(SIP/Routeur1/${ARG2})
    exten => s,n,Dial(SIP/Routeur2/${ARG2})


    Configuration souhaité :

    ---- SIP.CONF ----
    [Routeurs]
    type=friend
    host=routeurs.domaine.local
    canreinvite=no

    ---- EXTENSIONS.CONF ----
    [macro-VersNumeroExterne]
    exten => s,1,Set(CALLERID(num)=${ARG1})
    exten => s,n,Dial(SIP/Routeurs/${ARG2})


    Du côté DNS, le round robin fonctionne très bien après avoir fait plusieurs pings à partir du serveur Asterisk, X.X.X.10 et X.X.X.11 aléatoire.

    Seulement voilà, à l'aide d'un "sip show peer routeurs" je n'ai associer qu'une adresse IP qui est le X.X.X.10.

    Je souhaiterai que l'adresse IP associé change toute les 30secondes par exemple, mais je ne sais quels variables utilisées afin de forcer une requête de résolutions de noms.


    Merci d'avance pour vos suggestions !

  2. #2
    Membre
    Date d'inscription
    septembre 2010
    Messages
    57
    Downloads
    0
    Uploads
    0
    je pense que tu peux te baser sur ce tuto :
    http://www.asterisk-france.org/conte...s-avec-freepbx

  3. #3
    Membre Association
    Date d'inscription
    août 2010
    Messages
    856
    Downloads
    0
    Uploads
    0
    Citation Envoyé par tomarch Voir le message
    je pense que tu peux te baser sur ce tuto :
    http://www.asterisk-france.org/conte...s-avec-freepbx
    Je pensais à une solution de ce type, mais j'utiliserai plutôt une variable globale qu'un stockage en astDB, pas besoin que la valeur survive à un restart, l'écriture sur le disque dur est superflue

  4. #4
    Membre Association Avatar de cedricscha
    Date d'inscription
    août 2010
    Localisation
    Geneve/Suisse
    Messages
    578
    Downloads
    1
    Uploads
    0
    j'avais fais ceci, sur un de mes serveurs ......

    Code:
      
    [AppelSortant]
    exten = _XXXX.,1,Random(50:sortie2)
    exten = _XXXX.,n,Dial(SIP/Sortie1/${EXTEN})
    exten = _XXXX.,n(sortie2),Dial(SIP/Sortie2/${EXTEN})
    Cédric
    ---------------------------------------------------------------
    Rejoignez l'Association Asterisk France : http://www.asterisk-france.org

    Envie de mettre des étoiles dans les yeux de vos clients : EasyPyro.ch

    On a pas inventé l'électricité en cherchant à améliorer la bougie...
    ---------------------------------------------------------------

  5. #5
    Asterisk Fan Avatar de fastm3
    Date d'inscription
    août 2010
    Localisation
    Corbeil Essonnes (91)
    Messages
    1 302
    Downloads
    1
    Uploads
    1
    Citation Envoyé par ffossard Voir le message
    Je pensais à une solution de ce type, mais j'utiliserai plutôt une variable globale qu'un stockage en astDB, pas besoin que la valeur survive à un restart, l'écriture sur le disque dur est superflue
    C'etait fait pour 5 trunks initialement...Un simple reload effacera la globale. C'est pas superflu.

    Le fsync dans une config normale aura lieu de toutes facons regulierement donc lors d'un dial, ca ne change strictement rien. Une idee des perfs de astdb pour la 1.8: https://reviewboard.asterisk.org/r/825/
    Je gere en fait les distributions de trunks complexes avec un agi perl nettement plus lourd...
    Quel pinailleur ce gourou...
    Cheers !!
    Fastm3.

  6. #6
    Membre Association
    Date d'inscription
    août 2010
    Messages
    856
    Downloads
    0
    Uploads
    0
    je sais
    Sûr qu'un reload efface les variables globales ? (avec le clearglobalvars=no par défaut, elles sont censées survivre au reload)

  7. #7
    Asterisk Fan Avatar de fastm3
    Date d'inscription
    août 2010
    Localisation
    Corbeil Essonnes (91)
    Messages
    1 302
    Downloads
    1
    Uploads
    1
    Citation Envoyé par ffossard Voir le message
    je sais
    Sûr qu'un reload efface les variables globales ? (avec le clearglobalvars=no par défaut, elles sont censées survivre au reload)
    Pfff, ca m'enerve, tu as effectivement raison si on ne l'a pas setté.
    Fastm3.

  8. #8
    Membre Junior
    Date d'inscription
    octobre 2010
    Messages
    2
    Downloads
    0
    Uploads
    0
    Merci pour l'ensemble de vos réponses.

    Voici ce que j'ai mis en production et qui fonctionne très bien :

    [macro-VersNumeroExterne]
    ;COUNT = 1 ou 2
    exten => s,1,Set(COUNT=${DB(SIP/Routeur)})
    exten => s,n,Set(COUNT=$[${COUNT} + 1])
    exten => s,n,Set(COUNT=${IF($[ ${COUNT} = 3]?1:${COUNT})})
    exten => s,n,Set(DB(SIP/Routeur)=${COUNT})
    exten => s,n,Set(CALLERID(num)=${ARG1})
    exten => s,n,Dial(SIP/Routeur${COUNT}/${ARG2})

Les tags pour cette discussion

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •