wiki:SoftswitchFailOver

Version 2 (modified by alx, 8 years ago) ( diff )

Добавлено указание установки базе данных charset по умолчаниюб utf8.

Вариант настройки отказоустойчивого сервера 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 отсюда;
  • Распаковываем архив:
    $ 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 <username> <password>
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> show tables;
+-----------------------------------------------------------------+
| Tables_in_dispatcher                                            |
+-----------------------------------------------------------------+
| cdr                                                             |
| options                                                         |
| recordings                                                      |
+-----------------------------------------------------------------+
SQLRowCount returns 10
10 rows fetched
SQL> quit

где <username> и <password> - имя и пароль, установленные для доступа FreeSwitch к базе данных при конфигурации FreeSwitch.

Теперь необходимо установить базе данных charset по умолчанию utf8, чтобы новые таблицы, которые создаст FreeSwitch, использовали именно его:

mysql> alter database <db-name> character set utf8;
Query OK, 1 row affected (0,00 sec)

где <db-name> - имя базы данных.

Конфигурируем FreeSwitch для хранения его данных в MySQL

Конфигурируем SIP профили FreeSwitch для хранения данных в MySQL

В файлах конфигурации SIP профилей в разделе <settings/> добавляем такой параметр:

<param name="odbc-dsn" value="odbc://freeswitch:<username>:<password>"/>

где <username> и <password> - имя и пароль, установленные для доступа FreeSwitch к базе данных при конфигурации FreeSwitch. Например:

<param name="odbc-dsn" value="odbc://freeswitch:freeswitch:lagjh46dh3"/>

Здесь же включаем track-calls:

<!-- Enable Track Calls -->
<param name="track-calls" value="true"/>

Теперь в консоли FreeSwitch перезапускаем профили командой:

> sofia profile <profile-name> restart

где <profile-name> - имя SIP профиля, например:

> sofia profile internal restart

Контролируем, что профили перезупустились с помощью команды в консоли FreeSwitch:

> sofia status

В нашей базе данных должны создаться новые таблицы. Проверим это:

$ mysql -u <username> -p <dbname> -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 добавляем параметр:

<param name="core-db-dsn" value="odbc://freeswitch:<username>:<password>"/>
<param name="core-recovery-db-dsn" value="odbc://freeswitch:<username>:<password>"/>

где <username> и <password> - имя и пароль, установленные для доступа FreeSwitch к базе данных при конфигурации FreeSwitch.

Здесь же устанавливаем имя коммутатора:

<param name="switchname" value="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                               |
+-------------------------------------+

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.