= __Вариант настройки отказоустойчивого сервера FreeSwitch__ = == Исходные данные == Имеется ubuntu-16.04 c настроенным и работающим сервером !FreeSwitch, установленным из нашего репозитория, и используемым для организации диспетчерской связи. Требуется сделать резервирование из двух идентичных серверов !FreeSwitch. == Переносим базы данных !FreeSwitch в MySQL == === Устанавливаем драйвер MyODBC и настраиваем доступ к базе данных === ===== Проверим, что в системе установлен пакет libodbc1 ===== Пакет libodbc1 должен быть уже установлен, так как он является зависимостью пакета libfreeswitch1. Убедимся в этом: {{{ $ dpkg -l libodbc1 }}} ===== Установим драйвер myodbc ===== * Скачиваем архив mysql-connector-odbc-5.3.7-linux-ubuntu16.04-x86-64bit.tar.gz [https://dev.mysql.com/downloads/connector/odbc/ отсюда]; * Распаковываем архив: {{{ $ tar zxvf mysql-connector-odbc-5.3.7-linux-ubuntu16.04-x86-64bit.tar.gz }}} * Переходим в распакованный каталог: {{{ $ cd mysql-connector-odbc-5.3.7-linux-ubuntu16.04-x86-64bit }}} * Скопируем драйвер в каталог odbc: {{{ $ sudo cp lib/* /usr/lib/x86_64-linux-gnu/odbc/ }}} * Конфигурируем установленный драйвер с помощью инсталлятора: {{{ $ sudo bin/myodbc-installer -d -a -n MySQL -t "DRIVER=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc5w.so;" }}} * Конфигурирвем источник: {{{ $ sudo bin/myodbc-installer -s -a -n freeswitch -t "DRIVER=MySQL;SERVER=127.0.0.1;DATABASE=dispatcher;OPTION=67108864" }}} где "dispatcher" - имя нашей базы данных на сервере MySQL. В результате в каталоге /etc должны быть созданы файлы odbc.ini и odbcinst.ini с приблизительно таким содержанием: odbc.ini: {{{ [freeswitch] Driver = MySQL SERVER = 127.0.0.1 DATABASE = dispatcher PORT = 3306 OPTION = 67108864 }}} odbcinst.ini: {{{ [MySQL] Description=MySQL driver Driver=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc5w.so Setup=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc5S.so UsageCount=1 FileUsage=1 }}} ===== Проверим работу с базой данных MySQL серез ODBC ===== {{{ $ isql freeswitch +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> show tables; +-----------------------------------------------------------------+ | Tables_in_dispatcher | +-----------------------------------------------------------------+ | cdr | | options | | recordings | +-----------------------------------------------------------------+ SQLRowCount returns 10 10 rows fetched SQL> quit }}} где и - имя и пароль, установленные для доступа !FreeSwitch к базе данных при конфигурации !FreeSwitch. Теперь необходимо установить базе данных charset по умолчанию utf8, чтобы новые таблицы, которые создаст !FreeSwitch, использовали именно его: {{{ mysql> alter database character set utf8; Query OK, 1 row affected (0,00 sec) }}} где - имя базы данных. ==== Конфигурируем !FreeSwitch для хранения его данных в MySQL ==== ===== Конфигурируем SIP профили !FreeSwitch для хранения данных в MySQL ===== В файлах конфигурации SIP профилей в разделе добавляем такой параметр: {{{ }}} где и - имя и пароль, установленные для доступа !FreeSwitch к базе данных при конфигурации !FreeSwitch. Например: {{{ }}} Здесь же включаем track-calls: {{{ }}} Теперь в консоли FreeSwitch перезапускаем профили командой: {{{ > sofia profile restart }}} где - имя SIP профиля, например: {{{ > sofia profile internal restart }}} Контролируем, что профили перезупустились с помощью команды в консоли FreeSwitch: {{{ > sofia status }}} В нашей базе данных должны создаться новые таблицы. Проверим это: {{{ $ mysql -u -p -e 'show tables' Enter password: +-------------------------------------+ | Tables_in_dispatcher | +-------------------------------------+ | cdr | | options | | recordings | | sip_authentication | | sip_dialogs | | sip_presence | | sip_registrations | | sip_shared_appearance_dialogs | | sip_shared_appearance_subscriptions | | sip_subscriptions | +-------------------------------------+ }}} ===== Конфигурируем хранение core-db в MySQL ===== В конфиг-файле switch.conf.xml добавляем параметр: {{{ }}} где и - имя и пароль, установленные для доступа !FreeSwitch к базе данных при конфигурации !FreeSwitch. Здесь же устанавливаем имя коммутатора: {{{ }}} Теперь выполняем рестарт !FreeSwitch: {{{ $ sudo service freeswitch restart }}} Убедимся, что в базе данных появились новые таблицы: {{{ $ mysql -u root -p dispatcher -e 'show tables' Enter password: +-------------------------------------+ | Tables_in_dispatcher | +-------------------------------------+ | aliases | | basic_calls | | calls | | cdr | | channels | | complete | | detailed_calls | | interfaces | | nat | | options | | recordings | | recovery | | registrations | | sip_authentication | | sip_dialogs | | sip_presence | | sip_registrations | | sip_shared_appearance_dialogs | | sip_shared_appearance_subscriptions | | sip_subscriptions | | tasks | +-------------------------------------+ }}}