Есть Elastix и GoIP4 с четырьмя симками. У каждой симки есть, как водится, лимит 300 минут.
Каждая sim-карта заведена на Elastix как отдельный транк, и в Outbound route по маске 89ХХХХХХХХХ подряд выставлены три трнака, таким образом, основная нагрузка идет на первую симку.
Какие есть типовые решения для задачи лоад балансинга в данном случае?
Нагуглилось сходу freepbx-trunk-balancing, кто-нибудь пробовал или избыточное решение?
Рабочий контекст для FreePBX. Использует функцию RAND.
[random-trunk-select]
exten => _X.,1,Macro(user-callerid,SKIPTTL,)
exten => _X.,n,Set(_NODEST=)
exten => _X.,n,Macro(record-enable,${AMPUSER},OUT,)
;---
exten => _X.,n,Set(GMIN=2) ;номер первого транка
exten => _X.,n,Set(GMAX=13) ;номер последнего транка
exten => _X.,n,Set(COUNT=$[${GMAX}-${GMIN}+1])
exten => _X.,n,Set(GATE=${RAND(${GMIN},${GMAX})})
exten => _X.,n(noop),Noop(call trying, COUNT= ${COUNT})
exten => _X.,n,GotoIf($[${COUNT} > 0]?:busy)
exten => _X.,n,Set(COUNT=$[${COUNT} - 1])
;---
exten => _X.,n,Macro(dialout-trunk,${GATE},${EXTEN},,)
;---
exten => _X.,n,GotoIf($[${GATE} < ${GMAX}]?add)
exten => _X.,n,Set(GATE=${GMIN})
exten => _X.,n,Goto(noop)
exten => _X.,n(add),Set(GATE=$[${GATE} + 1])
exten => _X.,n,Goto(noop)
;---
exten => _X.,n(busy),Macro(outisbusy,)
Пишите свой контекст
[random-trunk-select]
exten => _X.,1,Noop(выбираем транк случайно)
exten => _X.,n,Noop(Здесь организуйте логику выбора транков. можно пользоваться БД, где хранится информация по транкам и подставлять в macro-dialout)
Далее в Freepbx создаете транк CUSTOM и в DIAL пишите Local/$OUTNUM$@random-trunk-select/n
и этот транк используйте для звонков.
вот тут http://asterisk-support.ru/question/13916/dialplan-balansirovka-i-tsikl-mezhdu-trankami/#19951
я писал как правильно делается такой обзвон.
Задан: Mar 18 '13
Просмотрен: 3,856 раз
Обновлен: Apr 24 '13
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.