Александр Мутовин
22.02.2019
17265

Настройка модуля Backup&Restore на FreePBX13. Full&Remote Backup

В данной статье будет рассмотрена настройка Backup для восстановления станции в случае возникновения аварии на АТС. Описание модуля Backup&Restore на FreePBX13. Данный модуль служит для создания резервной копии сервера, а так же восстановления работоспособности сервера из своевременно подготовленной копии. Примечательно, что данный модуль имеет очень широкий набор параметров, которые предопределяют файлы и директории, которые будут […]

Модуль Backup&Restore на FreePBX13

В данной статье будет рассмотрена настройка Backup для восстановления станции в случае возникновения аварии на АТС.

Описание модуля Backup&Restore на FreePBX13.

Данный модуль служит для создания резервной копии сервера, а так же восстановления работоспособности сервера из своевременно подготовленной копии. Примечательно, что данный модуль имеет очень широкий набор параметров, которые предопределяют файлы и директории, которые будут подвержены копированию. В том числе модуль предполагает настройку параметров для подключения к серверам, которые будут хранить резервные копии, настройку расписания резервного копирования, а так же отправку их на удалённые машины, либо же хранение на жёстком диске. Таким образом, можно исключить использование стороннего программного обеспечения и довериться данному модулю, при условии правильной конфигурации нашего Backup.

Следует отметить, что модуль не предустановлен в стандартном дистрибутиве FreePBX, его необходимо доставить самостоятельно через <strong>Admin -> Module Admin</strong>.

Ключевые отличия Full Backup & Remote.

Прежде, чем приступить к созданию бэкапов, стоит поговорить о том, чем отличаются друг от друга Full & Remote Backup’s. Полный бэкап подразумевает, что мы делаем полную копию сервера Asterisk. Под копирование попадают все базы данных, статистика звонков, записи телефонных разговоров, все конфигурационные файлы Asterisk, звуковые файлы, а так же те файлы, которые прямо или косвенно связаны с сервером телефонии, например, FOP2.  Как правило, отправляется на жёсткий диск сервера, где находится IP-ATC Asterisk.  

Remote же состоит из конфига сервера в MySQL, базы данных Asterisk DB, директории /etc/asterisk*, директорию /etc/dahdi*, директорию Apache /etc/httpd/conf.d, конфигурационного файла FPBX /etc/freepbx.conf, директории MariaDB /etc/my.cnf.d, директорию с поддиректориями Asterisk Gateway Interface /var/lib/asterisk/agi-bin*, а так же, звуковых файлов MOH и записей диктора. Отправляется на удалённый сервер.

Подведём итог:

  1. Full Backup – полная копия сервера телефонии, поднимет сервер из пепла и праха, как ни в чём не бывало, но тяжёлый и, как следствие, труднотранспортируемый на удалённые машины, потому, обычно, сохраняется на жёсткий диск сервера, на котором установлен Asterisk.
  2. Remote Backup – минимально необходимый набор для восстановления работоспособности сервера, как следствие, очень маловесный и легкотранспортируемый.

Всё вышеописанное – не является сводом правил, а лишь руководством к созданию тех или иных резервных копий, наработки, личный опыт. Никто не помешает Вам создать один Full_Backup и организовать его передачу удалённому серверу-хранилищу. Всё остальное зависит только от Вашей фантазии.

Создание Full Backup с сохранением на локальном сервере.

Для того, чтобы приступить к настройке бэкапирования, в FreePBX необходимо перейти Admin -> Backup & Restore.

После перехода увидим примерно следующее:

Далее нам необходимо сразу настроить подключение к удалённому серверу, на который будет отправляться копия. Для этого необходимо нажать на , затем выбрать “Servers”.

После перехода увидим следующее:

Как можно увидеть, отправка бэкапа на локальное хранилище уже настроена, давайте ознакомимся с структурой отправки более подробно:

Server Name – имя сервера, может быть любым, например, Voxlink.
Description – пользовательский комментарий.

Path – путь, по которому будет располагаться папка с бэкапами.

__ASTPOOLDIR__/backup означает, что мы будем отправлять и хранить бэкапы по пути /var/spool/asterisk/backup. __ASTPOOLDIR__ — это системная константа, описанная в файле asterisk.conf. Директория по backup, по указанному пути, будет создана автоматически с нужными привелегиями, создавать вручную ничего не нужно!

Приступим к добавлению удалённого сервера-хранилища бэкапов. Для этого необходимо нажать на кнопку Add Server, а затем выбрать нужный пункт из меню. В нашем случае – это будет FTP сервер-хранилище:

Откроется меню настройки отправки на FTP сервер:

Далее заполним параметры отправки на удалённый сервер:

Server Name – имя сервера. Может быть любым, например Voxlink.

Description – пользовательский комментарий.

Hostname – укажите IP адрес удалённого сервера или DNS имя, по которому можно произвести обращение к искомому серверу.

Port – укажите порт, по которому следует обращаться к удалённому серверу.

Username – имя пользователя для подключения к удалённому серверу.

Password – пароль пользователя для подключения к удалённому серверу.

Filesystem type – укажите тип файловой системы удалённого FTP-сервера.

Наилучшим решением для выбора файловой системы будет конкретное значение, нежели режим автоопределения, т.к. автоматический режим не всегда может верно определить тип файловой системы.

Path – укажите путь к директории хранения бэкапов.

Transfer mode – укажите тип передачи.

По умолчанию режим передачи равен Passive. Если Ваш FTP-сервер находится за NAT или межсетевым экраном по отношению к VoIP серверу, следует выбрать режим Active. В активном режиме FTP-сервер устанавливает соединение с VoIP сервером для получения данных. В режиме Passive, VoIP сервер устанавливает соединение к FTP-серверу для отправки данных самостоятельно.

В моём случае это будет выглядеть вот так:

После описание параметров передачи бэкапа на удалённый сервер, нажимаем кнопку Save.

Результате можно наблюдать в общем списке серверов:

Далее, для настройки Full Backup вернёмся в Backups:

Для того, чтобы создать новый Backup, нажмите на + New Backup:

Откроется меню создания бэкапов:

Приступим к конфигурированию Full Backup по разделам:

Первый блок раздела Backup включает в себя описательные параметры:

Backup Name – название бэкапа для WEB-Interface FPBX.

Description – краткое описание.

Status Email – уведомление на почту. В этом поле указывается электронный почтовый ящик по форме [email protected]

On Failure Only – условие, при котором должно поступать уведомление на почту. Если выставлено No, то сообщение будет приходить в случае успешного создания и отправки бэкапа на сервер. Если выставлено Yes, то сообщение будет приходить только в случае возникновения ошибки.
Должно получиться что-то похожее:

Следующий блок раздела Backup – Items:

В данном разделе нужно описать все файлы и директории, которые мы хотим включить в наш фулл.

Для того, чтобы добавить элемент, нажмите +:

Появится контекстное меню chose:

Затем нажмите на поле chose, чтобы сделать выбор типа элемента.

Выбрав нужный тип, укажите путь к элементу или базу данных:<p

Также, в целях экономии времени или недостатка знаний о том, что именно нужно скопировать, выберите нужные шаблоны из списка:<

Базовый Full Backup выглядит следующим образом:

В базовый набор входит:

  1. MySQL CDR Server – сохраняем статистику звонков.
  2. MySQL Config Server – сохраняем конфигурацию сервера.
  3. Asterisk DB – сохраняем базу данных Asterisk.
  4. Directory __ASTETCDIR__ — сохраняем /etc/asterisk*.
  5. Directory __AMPWEBROOT__ — сохраняем /var/www/html*
  6. Directory __AMPBIN__ — сохраняем /usr/bin*
  7. Directory /tftpboot – сохраняем директорию автопровиженинга, а так же все её поддиректории.
  8. Directory /etc/dahdi – сохраняем директорию драйвера DAHDI платы, а так же все её поддиректории.
Бэкап сет может и будет отличаться, в зависимости от конфигурации отдельно взятого сервера.

Переходим к следующему разделу Hooks:

В данном разделе подключаются дополнительные внешние скрипты, которые будут выполняться на разных этапах создания бэкапа или восстановления из него, а так же выбор сервера, который нужно забэкапить и выбор серверов, на которые нужно отправлять готовый бэкап.

PreBackup Hook – скрипт, который будет выполняться до инициализации бэкапа.

PostBackup Hook – скрипт, который будет выполняться после инициализации бэкапа.

PreRestore Hook – скрипт, который будет выполняться до восстановления их бэкапа.

PostRestore Hook – скрипт, который будет выполняться после восстановления из бэкапа.

Backup Server – селектор, позволяющий выбрать сервер, который нужно забэкапить.

Следующий блок раздела Hooks – выбор серверов, на которые будут отправляться готовые бэкапы.

Здесь у нас есть 2 подраздела – Storage Servers и Available Servers.

Storage Servers – список серверов-хранилищ, на которые будет осуществлена отправка резервной копии.

Available Servers – список доступных серверов, которые можно использовать.

Перетащим, voxlink (ftp) из Storage Servers в Available Servers:

Полный бэкап будет храниться на нашей машине в директории /var/spool/asterisk/backup

Следующий раздел Backup Shedule:

В данном разделе устанавливается временной режим создание бэкапов, в котором присутствует хэлпер с пояснением по каждому из параметров – Schedule Help.

Hourly – запуск бэкапа раз в час.

Daily – запуск бэкапа раз в день.

Weekly – запуск бэкапа раз в неделю.

Monthly – запуск бэкапа раз в месяц.

Anually – запуск бэкапа раз в год.

Reboot – запуск бэкапа после перезагрузки системы, в частности после выполнения команды service cron restart.

Never – никогда не запускать бэкап автоматически.

Custom – настройка собственного расписания инициализации бэкапа.

Для полного бэкапа нам подходит расписание ежемесячного копирования, т.е. Monthly.

После выбора расписания копирования, появляется селектор Randomize. Данный параметр работает следующим образом: если значение = Yes, то расписание плавает в рамках месяца, подстраиваясь под нагрузку сервера, избегая пиковых рабочих часов. Перепланирование происходит случайным образом, т.е. дата очередного бэкапа будет постоянно меняться в рамках, определённых параметром Run Automatically. Если значение = No, то дата всегда будет одной и той же. Я выставлю No.

Последний раздел модуля Backup – Maintenance.

В данном разделе настраивается удаление бэкапов по определённым параметрам, а именно:

Delete After – В зависимости от выбранного временного значения (Minutes, Hours, Days, Weeks, Months, Years) будет удаляться бэкап-файл. Например, в графе выставлено значение 2, а в параметре выбрано Months, то файл будет удаляться тогда, когда ему исполнится 2 месяца.

Delete After Runs – в зависимости от количества копий удалять самую старую. Например, выставлено значение 3, это означает, что после того, как на сервер запишется 3 бэкапа, каждая последующая инициализация нового бэкапа будет запускать процесс удаления самого старого из созданной тройки, таким, образом постоянно поддерживая установленное количество актуальных копий.

Если в данных параметрах выставлено значение, равное нулю, то данные параметры не будут работать.

Я выставлю параметр Delete After 3 Runs:

Это последний этап в конфигурировании политики создания Full Backup. Далее необходимо нажать Save:

Бэкап сконфигурирован. Для того, чтобы инициализировать процесс резервного копирования, необходимо нажать Save and Run:

После запуска процесса увидим окно состояния создания бэкапа:

В случае успешного создания бэкапа на локальную машину увидим следующий вывод:

После этого зайдём на сервер и выполним команду:

#ls –l /var/spool/asterisk/backup/

Если после исполнения Вы увидели следующий вывод, значит, бэкап создан успешно:

Создание Remote Backup для отправки на удалённый сервер.

Аналогичным образом происходит создание Remote Backup. Т.к. общий процесс создания бэкапа был описан в предыдущем пункте, то здесь я сделаю то же самое, но в тех местах, где имеются отличия.

Т.к. у меня нет FTP-сервера, но есть машина, к которой есть доступ по SSH, расскажу о том, как организовать данный способ передачи.

Первым делом заходим на машину, которая будет выступать в роли сервера-хранилища, затем выполняем в терминале следующий набор команд (в моём случае используется машина под управлением CentOs 6):

Изменим пароль пользователя asterisk:

#passwd asterisk

Вводим пароль, затем система просит повторить его:

Если всё хорошо, увидим следующий вывод:

После этого нужно дать необходимые права нашему пользователю, для этого выполним:

#chmod 755 /var/lib/asterisk

С сервером-хранилищем закончили. Переходим к машине, на которой развёрнут сервер телефонии:

Меняем пользователя root на asterisk#

#su asterisk

Далее действуем от лица пользователя asterisk. Выполним в терминале генерацию SSH-ключа для подключения к серверу-хранилищу.

Для SSH-передачи бэкапов обязательным и неизменным условием является SSH-аутентификация.
$ssh-keygen

Будет предложено ввести имя файла. Ничего не вводим, нажимаем Enter.

Далее будет предложено ввести пароль. Ничего не вводим, нажимаем Enter:

Подтверждение пароля. Снова нажимаем Enter.

Если генерация прошла удачно, увидим следующий вывод:

SSH-ключи id_rsa и id_rsa.pub созданы и находятся в директории /var/lib/asterisk/.ssh/.

Далее нужно загрузить наш ключ на машину, к которой мы имеем доступ по паролю, т.е. – серверу-хранилищу. Для этого выполним:

$sshcopyid asterisk@host_ip (где asterisk – имя пользователя на удалённой машине host_ip – IP адрес удалённой машины)

Будет запрошен пароль пользователя, который мы вводили ранее. Вводим пароль. После ввода пароля увидим следующий вывод:

Это значит, что ключ загружен на удалённый сервер. Для проверки аутентификации по SSH-ключу, в терминале нужно выполнить следующую команду:

$ssh asterisk@host_ip (где asterisk – имя пользователя на удалённой машине host_ip – IP адрес удалённой машины)

Если всё прошло удачно, увидим, что мы попали на удалённый сервер. На этом терминальная работа окончена. Перейдём к настройке передачи бэкапа по SSH на FreePBX.

Переходим во вкладку Servers, нажимаем Add Server -> + New SSH Server:

Затем заполняем параметры по аналогии:

Server name – имя сервера.

Description – пользовательский комментарий.

Hostname – IP адрес или DNS имя, по которому можно обратиться к серверу-хранилищу.

Port – выбираем порт подключения к серверу-хранилищу. По умолчанию SSH работает на 22 порту. Если Ваш сервер использует другой порт, укажите его.

Username – имя пользователя. Указываем имя пользователя, под которым нужно залогиниться на удалённой машине.

Key – указываем путь к ключу на сервере телефонии, где развёрнут Asterisk, чтобы подключиться к серверу-хранилищу.

Path – указываем директорию, в которой должны храниться наши бэкапы. В моём случае это __ASTPOOLDIR_/SSH_Backup, что иначе выглядит как /var/spool/asterisk/SSH_Backup. Сохраняем, затем переходим к настройке Remote_Backup.

Изменим ему имя и описание, чтобы различать бэкапы:

Затем пропишем сет для Remote_Backup:

Выберем сервер, на который будет оправляться Backup:

Далее настроим расписание. Т.к. это легковесный бэкап, содержащий основу сервера телефонии, то целесообразно будет использовать еженедельное копирование:

Систему очистки старых бэкапов настроим так, чтобы она удаляла самый старый шестой бэкап, освобождая место новому. Так мы будем всегда держать 6 актуальных резервных копий.

Нажимаем Save:

Затем запустим первый бэкап, чтобы удостовериться, что всё работает:

Бэкап готов. Зайдём на сервер-хранилище, который должен был принять наш бэкап и выполним команду в терминале:

#ls –l /var/spool/asterisk/SSH_Backup

Если увидим следующий вывод:

Значит, бэкап был отправлен и принят сервером-хранилищем успешно.

Подводя итог статьи, можно сказать, что на сервере полностью настроена и налажена система резервного копирования с отправкой на локальное хранилище и на удалённый сервер.

Книга 101 функция Asterisk
Познакомьтесь с возможностями Asterisk. Найдите инструменты, которые помогут вашей компании развиваться.
Скачать книгу
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

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

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.