Kamailio установка и настройка centos 7
Kamailio это open source SIP сервер отделившийся от SIP Express Router (SER) в 2005-м году, под именем OpenSER. В июле 2008, OpenSER был переименован в Kamailio потому что торговая марка была занята.
Начиная с ноября 2008 года, Kamailio и SER объединили разработку, в результате чего появилясь версия 3.0.0.
Одно из главных достоинств Kamailio, это возможность обслуживания большого кол-ва пользователей на одном сервере (в зависимости от железа, это может быть 100 000+ активных регистраций).
Длительный срок разработки обеспечивает необходимую стабильность для телекоммуникаций в реальном времени и широкий набор функций при обработке SIP сигнализации.
Следующие сценарии могут быть реализованы при помощи данного руководства:
Локальные пользователи имеют 3-х значные ID ( 101, 102 и 103 и тд).
ID голосовых ящиков такие же, как ID пользователей.
Расширения медиа сервисов 4-х значные.
Kamailio и FreeSWITCH установлены на одном физическом сервере (ip 192.168.178.23), используют разные порты:
freeswitch: порт 5090 для профиля internal и 5092 для профиля external .Инициация вызовов
Аутентификация пользователей выполняется Kamailio. Когда вызов пришел и аутентифицирован то:
если вызываемый пользователь офлайн, то вызов перенаправляется на голосовую почту Freeswitch. если пользователь онлайн, то Kamailio также отравляет его на Freeswitch для реализации специфических медиа функций, таких как, воспроизведение аудио во время вызова, ограничение продолжительности вызова, согласования и перекодировки кодеков и тд.Настройка Kamailio
Установка
Пошаговая инструкция по установке Kamailio 5.2.x:
Вы можете использовать MySQL, как в приведенном примере или другой более предпочтительной для вас базой данных, это не принципиально. Но если вы выберете другой тип бд, позаботьтесь о его настройке в конфигурационном файле Kamailio.
FreeSWITCH и Kamailio в данной инсталяции, сделаны, как можно более независимыми друг от друга.
Конфигурационный файл
Kamailio имеет один конфигурационный файл по умолчанию - kamailio.cfg. Начиная с версии 3.0.0 возможно распределять настройки по разным файлам и при помощи директивы include_file объединять их в главном конфигурационном файле.
Сама архитектура балансировщика состоит из модулей, которые добавляют функционал. К примеру, модуль dispatcher — позволяет обеспечить распределение нагрузки между media серверами (об в одной из следующих статей), модуль registrar позволяет обрабатывать запросы регистрации от пользователей, nathelper — для прохода NAT и.т.д.
Схема работы
В этой серии статей мы реализуем следующую схему:
Где Kamailio будет заниматься обработкой SIP сигнализации, а также терминацией WSS трафика для WebRTC (звонки из браузера). Media сервера — занимаются обработкой непосредственно голоса и предоставлением бизнес логики (IVR, очереди, Call Center…), эти сервера могут быть реализованы через Asterisk/FreeSWITCH или любых других SoftSwitch 5 класса. В базе данных хранятся все dialplan’ы, SIP аккаунты и в принципе все данные для которых нужно долговременное хранение.
Установка Kamailio на разных дистрибутивах Linux
Для установки мы будем использовать заранее собранные пакеты от разработчиком. Этот метод наиболее оптимальный, нежели сборка из исходников по нескольким причинам:
- Установкой занимается пакетный менеджер операционной системы, что позволяет легко обновлять/удалять пакеты
- Нет необходимости в установке дополнительных пакетов для сборки из исходников
- Это рекомендуемый способ установки от разработчиков
Установка на примере CentOS 7:
Необходимо выполнить последовательно следующие команды от пользователя с sudo правами:
Для установки на других дистрибутивов, например Debian подобных, необходимо следовать инструкции с официального сайта: ссылка.
После установки, в директории /etc/kamailio/ будет автоматически создан конфигурационный файл kamailio.cfg. Рекомендую сохранить его как пример, к нему иногда придется обращаться, чтобы посмотреть как разработчики реализовали тот или иной функционал.
После того, как сохранили стандартный конфиг, например переименовав его в kamailio.cfg.example, необходимо создать пустой файл kamailio.cfg в директории /etc/kamailio.
Простейший конфиг для запуска Kamailio
Для обеспечения минимальной работоспособности, в конфиг необходимо добавить следующие строки:
Теперь можно запустить балансировщик с помощью systemd демона. Это делается вызовом команды:
Заключение
В следующей статье мы начнем реализовывать схему описанную ранее и начнем с добавления обработки запросов REGISTER, а также подключим базу данных для хранения SIP аккаунтов в ней.
Все установки мы будем производить на виртуальных машинах, которые находятся в одной локальной сети. При этом если бы у них были публичные адреса или в облаке, особых отличий бы не было. Также мы постараемся максимально подробно описать процесс установки для изучения SIP Proxy новичками.
Исходные данные:
Схема реализации:
Преамбула
Подготовка
Во-первых, подготовим систему и обновим все пакеты до актуальных версий. Также выполним обновление системы:
Во-вторых, выполним установку и настройку необходимых пакетов для Asterisk, Kamailio, Siremis.
Зависимости
MariaDB
В процессе установки необходимо ввести пароль суперпользователя root.
Apache2
PhpMyAdmin
Установка Asterisk
Первым делом установим зависимости для Asterisk 16, выполнив следующие команды:
Скачивание и компиляция Asterisk:
В обязательном порядке необходимо активировать следующие компоненты, если оне не выбраны:
Остальные компоненты устанавливаются в зависимости от потребностей.
Дополнительные примечания по установке можно найти в нашей базе знаний в разделе Asterisk
База данных Asterisk
Asterisk UnixODBC
Для подключения CDR через ODBC редактируем файл /etc/odbcinst.ini:
Также редактируем файл /etc/odbc.ini:
Отредактируйте файл /etc/asterisk/res_odbc.conf:
Открываем файл для редактирования /etc/asterisk/extconfig.conf:
Далее редактируем файл /etc/asterisk/sip.conf, добавив параметр:
Установка Kamailio
Первым шагом является создание конфигурационных файлов сборки с добавлением модуля MySQL:
Компилируем Kamailio с выводом флагов установки:
Двоичные файлы и исполняемые скрипты были установены в /usr/local/sbin, в которой:
Чтобы иметь возможность использовать двоичные файлы из командной строки, убедитесь, что они /usr/local/sbin установлены в PATH переменной среды. Вы можете проверить это с echo $PATH. Если нет, и вы используете bash, откройте /root/.bash_profile и в конце добавьте:
Модули Kamailio устанавливаются в:
Примечание. В 64-битных системах может использоваться /usr/local/lib64.
Документация и файлы readme установлены в:
Файл конфигурации был установлен в:
Создание БД MySQL Kamailio
Редактируем файл /usr/local/etc/kamailio/kamctlrc для того, чтобы указать тип базы данных, сменить пароли пользователей, используемые по умолчанию для подключения к базе данных. Следует установить, заменив на свои следующие параметры:
Запускаем скрипт создания базы данных Kamailio:
Никаких других изменений в структуре базы данных Kamailio не требуется. Сервер SIP получит пароль из базы данных Asterisk. Запускаем сценарий init.d в каталоге Kamailio:
Наконец, установка Kamailio как служба и применение настроек:
Настройка Kamailio
Создадим пользователя для запуска Kamailio и назначим права:
Для запуска/остановки Kamailio SIP сервера используйте следующие команды:
Установка Siremis
Полученный в консоле код вставляем в файл /etc/apache2/sites-available/000-default.conf во внутрь вашего VirtualHost:
После чего перезапускаем службу Apache:
Вывод будет примерно следующим:
Убедитесь, что следующие каталоги имеют доступ на запись для пользователя веб-сервера:
- siremis/log
- siremis/session
- siremis/files
- siremis/themes/default/template/cpl
Установим права доступа на каталоги:
Не забудьте перезапустить веб-сервер после внесения изменений
Создадим пользователя БД, который будет иметь полный доступ к базе данных Siremis.
Вам не нужно ничего делать для настройки базы данных Siremis, остальная часть процесса завершается с помощью мастера веб-установки.
Проверка параметров системы
Настраиваем создание БД Siremis и подключение к БД Kamailio, указав логин и пароль kamailio/kamailiorw, которые мы ввели ранее при создании БД Kamailio.
После установки
Если вы хотите снова запустить мастер установки:
Начните использовать Siremis
Управление Kamailio осуществляется из пункта меню SIP Admin Menu; Для начала необходимо добавить домен SIP-сервера в разделе Server Services ⇒ Domain List . Если у вас есть установленный Kamailio с одним доменом, без проверки части домена внутри SIP-сервера, вы можете просто ввести 127.0.0.1 в качестве своего домена; Далее вы можете начать управление записями, используемыми Kamailio SIP Server: добавить подписчиков через Subscriber Services ⇒ Subscriber List управлять записями для сервисов маршрутизации (диспетчер/балансировка нагрузки, маршрутизация с наименьшей стоимостью,…) из Routing Services ⇒…На этом установка SIP Proxy Kamailio и панель управления Siremis окончена.
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.
В этой статье мы соберем кластер на дистрибутиве Centos 7 с использованием пакета Pacemaker. Сборка из исходников DRBD описывается в этой статье. Настройка реплицируемого блочного устройства описывается в статье по этой ссылке. Для полноценной работы кластера одного DRBD не достаточно, должен быть механизм мониторинга состояния блочных устройств, процессов, сервисов, состояние работы самой операционной системы, сети […]
В этой статье мы соберем кластер на дистрибутиве Centos 7 с использованием пакета Pacemaker.
Дстрибутив будем использовать CentOS-7-x86_64-Minimal-1908 и DRBD версии 9.Для полноценной работы кластера одного DRBD не достаточно, должен быть механизм мониторинга состояния блочных устройств, процессов, сервисов, состояние работы самой операционной системы, сети ит.д. Также должен быть механизм репликации диска на другую ноду в случае отказа первой. Также в некоторых случаях используется один общий виртуальный ip адрес на нодах для возможности функционирования кластера как единая система. Этими функциями DRBD не занимается.
Нода это единица кластера. Простыми словами это один из серверов входящий в кластерную систему. Их может быть произвольное количествоВышеописанными задачами занимается Pacemaker – менеджер ресурсов кластера.
Pacemaker состоит из 5 ключевых компонентов:
- CIB – Cluster Information Base это база данных которая содержит конфигурацию кластера и состояние ресурсов кластера. Сама база данных храниться в файле в формате XML
2. Stonithd – это механизм, который позволяет кластеру выключать, перезагружать, включать узлы кластера сети если узел не отвечает, то его ресурсы передаются другой ноде, или если ресурс дал сбой он отключается от общего кластера для предотвращения сбоя всего кластера.
3. PEngine – механизм политики. Он рассчитывает идеальное состояние кластера. Если какой либоо механизм дал сбой, PEngine сделает перерасчет механизма работы всего кластера и передаст его в CRMd
4. CRMd – демон управления ресурсами кластера. PEngine выбирает CRMd на какой-то одной ноде. В случае сбоя забочей ноды с CRMd быстро назначается новая нода как главная. Главная CRMd получает инструкции от PEngine и передает их в требуемом порядке или LRMd (демон локального управления) или одноранговым CRMd на других нодах, а те в свою очередь LRMd своего локального процесса.
5. LRMd – демон управления локальными ресурсами который исполняет полученные инструкции от CRMd на локальной машине, а также передает обратно результат их выполнения.
Главный CRMd называется DC (Designated Controller) – назначенный контроллерДля правильной работы кластера нам необходимо иметь по 2 сетевых интерфейса в каждой ноде. По первому интерфейсу будет связь с общей сетью, а через второй интерфейс ноды будут обмениваться служебной информацией.
Также нужно настроить имя хостовой машины и DNS для общения серверов по имени
Построить кластер можно только с использованием имен. По ip адресам настроить не получится.Исходные параметры первой ноды
Первый интерфейс 192.168.32.20 (доступ в локальную сеть)
Второй интерфейс 10.10.10.1 (интерфейс для общения нод)
Исходные данные второй ноды:
Первый интерфейс 192.168.32.19 (доступ в локальную сеть)
Второй интерфейс 10.10.10.2 (интерфейс для общения нод)
Для изменения имени хоста без перезагрузки сервера воспользуемся утилитой hostnamctl
После указания имени хоста необходимо в файле /etc/hosts прописать Ip адрес и hostname противоположных атс.
На первой ноде добавляем
На второй ноде добавляем
Далее необходимо проверить корректность введенных данных пропинговав друг друга по имени хоста.
Результат должен быть как на скриншоте (пример с одной ноды):
Перед наxалом установки убедитесь, что отключен SELINUX
Для выключения Selinux необходимо в конфигурационном файле /etc/selinux/config прописать SELINUX=disabled
Далее приступим к установке необходимых пакетов для сборки кластера:
Где pacemaker описан выше, менеджер ресурсов кластера. Он позволяет использовать службы и объекты в рамках одного кластера из двух или более нод.
Resource-agent – этот пакет содержит агенты ресурсов(набор скриптов) кластера (RA), соответствующие спецификации Open Cluster Framework (OCF), используемые для взаимодействия с различными службами в среде высокой доступности, управляемой менеджером ресурсов Pacemaker.
Corosync – информационный уровень. программный продукт, который позволяет создавать единый кластер из нескольких аппаратных или виртуальных серверов. Corosync отслеживает и передает состояние всех участников (нод) в кластере.
Этот продукт позволяет:
Pcs – pacemaker/corosync configuration system. Утилита для управления, настройки и мониторинга кластера. Управляется как через командную строку, так и через веб интерфейс.
Также кластер можно настроить без pcs. Но тут будет немного сложнее, т.к. все остальные утилиты придется настраивать вручную. Pcs берет все на себяНа следующем этапе необходимо отключить фаервол на время, после сборки кластера в фаевол надо обязательно включить и прописать необходимые порты.
На следующем этапе запустим на обеих нодах pcs демон:
После установки pcs на обоих нодах будут созданы пользователи «hacluster»
С помощью этих учеток ноды будут «общаться между собой». Зададим для них новые сложные пароли:
Далее с помощью pcs авторизуемся на обоих нодах:
На следующем шаге создаем кластер:
Эта команда создаст кластер, автоматически сгенерирует конфигурационный файл corosync.
После успешного создания кластера его необходимо запустить следующей командой:
Как видно из скриншота, запускается corosync и pacemaker.
На этом установка и первоначальная настройка кластера завершена. В следующей статье мы поговорим про управление, мониторинг кластера.
Читайте также: