Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Lua в нагруженных
телеком-системах
Борисов Дмитрий
Какие есть варианты?
FreeSWITCH
Стабильность Производительность
Интегрируемость Функциональность
Session Border Controller
Зачем?
• Пассивный SIP-трафик
• Необходимость
балансировки нагрузки
Какие варианты:
• kamailio
•...
heartbeat vs pacemaker
Split brain
Отказоустойчивость kamailio
Отказоустойчивость FreeSWITCH
Отказоустойчивость FreeSWITCH
MySQL 5.7
• Отказоустойчивость
• Репликация
• Хранение документов
• mysqlrouter
http://bit.ly/mysql-innodb-cluster
Конфигурация kamailio
route[REQINIT] {
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
...
Конфигурация kamailio
function ksr_route_registrar()
if KSR.pv.get("$rm")~="REGISTER" then return 1; end
if KSR.isflagset(...
XML-конфигурация FreeSWITCH
<configuration name="hiredis.conf" description="mod_hiredis">
<profiles>
<profile name="defaul...
XML-дерево конфигурации FreeSWITCH
Lua dialplan FreeSWITCH
ACTIONS = {}
...
if targetDst.prefix ~= '' then
bridgeStr = string.format("sofia/external/%s#%s@%s...
Доставка XML во FreeSWITCH
nginx/openresty
http://bit.ly/fs-xml-generator
Схема организации АТС
Интерфейс управления АТС
Расширение системы
Борисов Дмитрий
borik_ints
Dborisov@mail.ru
+7 (905) 723-97-18
http://bit.ly/fs-xml-generator
http://bit.ly/mysql-innodb-c...
Я готов ответить на
вопросы
Lua в нагруженных телеком-системах / Дмитрий Борисов (ИП Борисов Дмитрий Николаевич)
Lua в нагруженных телеком-системах / Дмитрий Борисов (ИП Борисов Дмитрий Николаевич)
Lua в нагруженных телеком-системах / Дмитрий Борисов (ИП Борисов Дмитрий Николаевич)
Upcoming SlideShare
Loading in …5
×

Lua в нагруженных телеком-системах / Дмитрий Борисов (ИП Борисов Дмитрий Николаевич)

260 views

Published on

HighLoad++ 2017

Зал Калининград, 7 ноября, 10:00

Тезисы:
http://www.highload.ru/2017/abstracts/3070.html

Я расскажу о своих наработках в проектировании и внедрении нагруженных телеком-систем. Большая часть заказчиков выставляет к ним сразу несколько требований: масштабируемость, отказоустойчивость, возможность балансировки и распределения нагрузки между географически разнесенными системами. При этом сохраняются все требования для телеком-систем в целом: минимальная дополнительная задержка в тракте обработки звонка, высокая надежность системы, автоматическая обработка аварийных ситуаций.
...

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Lua в нагруженных телеком-системах / Дмитрий Борисов (ИП Борисов Дмитрий Николаевич)

  1. 1. Lua в нагруженных телеком-системах Борисов Дмитрий
  2. 2. Какие есть варианты?
  3. 3. FreeSWITCH Стабильность Производительность Интегрируемость Функциональность
  4. 4. Session Border Controller Зачем? • Пассивный SIP-трафик • Необходимость балансировки нагрузки Какие варианты: • kamailio • opensips
  5. 5. heartbeat vs pacemaker
  6. 6. Split brain
  7. 7. Отказоустойчивость kamailio
  8. 8. Отказоустойчивость FreeSWITCH
  9. 9. Отказоустойчивость FreeSWITCH
  10. 10. MySQL 5.7 • Отказоустойчивость • Репликация • Хранение документов • mysqlrouter http://bit.ly/mysql-innodb-cluster
  11. 11. Конфигурация kamailio route[REQINIT] { if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; } if(!sanity_check("1511", "7")) { xlog("Malformed SIP message from $si:$spn"); exit; } } kamailio.cfg
  12. 12. Конфигурация kamailio function ksr_route_registrar() if KSR.pv.get("$rm")~="REGISTER" then return 1; end if KSR.isflagset(FLT_NATS) then KSR.setbflag(FLB_NATB); -- do SIP NAT pinging KSR.setbflag(FLB_NATSIPPING); end if KSR.registrar.save("location", 0)<0 then KSR.sl.sl_reply_error(); end KSR.x.exit(); end route[REQINIT] { if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; } if(!sanity_check("1511", "7")) { xlog("Malformed SIP message from $si:$spn"); exit; } } kamailio.cfg
  13. 13. XML-конфигурация FreeSWITCH <configuration name="hiredis.conf" description="mod_hiredis"> <profiles> <profile name="default"> <connections> <connection name="primary"> <param name="hostname" value="172.18.101.101"/> <param name="password" value="redis"/> <param name="port" value="6379"/> <param name="timeout_ms" value="500"/> </connection> <connection name="secondary"> <param name="hostname" value="localhost"/> <param name="password" value="redis"/> <param name="port" value="6380"/> <param name="timeout_ms" value="500"/> </connection> </connections> <params> <param name="ignore-connect-fail" value="true"/> </params> </profile> </profiles> </configuration>
  14. 14. XML-дерево конфигурации FreeSWITCH
  15. 15. Lua dialplan FreeSWITCH ACTIONS = {} ... if targetDst.prefix ~= '' then bridgeStr = string.format("sofia/external/%s#%s@%s", targetDst.prefix, session:getVariable("destination_number"), targetDst.gw) else bridgeStr = string.format("sofia/external/%s@%s", session:getVariable("destination_number"), targetDst.gw) end table.insert(ACTIONS,{"bridge",bridgeStr})
  16. 16. Доставка XML во FreeSWITCH
  17. 17. nginx/openresty http://bit.ly/fs-xml-generator
  18. 18. Схема организации АТС
  19. 19. Интерфейс управления АТС
  20. 20. Расширение системы
  21. 21. Борисов Дмитрий borik_ints Dborisov@mail.ru +7 (905) 723-97-18 http://bit.ly/fs-xml-generator http://bit.ly/mysql-innodb-cluster http://quasar-framework.org/
  22. 22. Я готов ответить на вопросы

×