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

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

В данной статье будет рассмотрена настройка Backup для восстановления станции в случае возникновения аварии на АТС. Содержание: Ключевые отличия Full Backup & Remote. Описание модуля Backup&Restore на FreePBX13. Создание Full Backup с сохранением на локальном сервере. Создание Remote Backup для отправки на удалённый сервер. Описание модуля Backup&Restore на FreePBX13. Данный модуль служит для создания резервной […]

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

Содержание:

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

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

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

Создание Remote 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 – уведомление на почту. В этом поле указывается электронный почтовый ящик по форме example@voxlink.ru

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

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

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

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

 
avatar
  Подписаться  
Уведомление о

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

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

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

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

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices