artem
25.03.2016
4242

Corosync и синхронизация device state (hints) между Asterisk

Сначала установим службу corosync на два наших сервера (сервер 1 – 192.168.0.2 сервер 2 – 192.168.1.2)

yum install corosync corosynclib corosynclib-devel

Далее нам нужно пересобрать Астериск с модулем res_corosync. Активируется в разделе Resource Modules (Статья о том, как собрать Asterisk из исходников) Если вы новичок в этом деле, не беритесь за данный пункт самостоятельно!
Теперь создаем ключ для безопасного обмена сообщения между нашим серверами. Запускаем на первом сервере команду

corosync-keygen

Созданный ключ копируем на соседнюю станцую в ту же директорию и с тем же именем

/etc/corosync/authkey

Проверьте, чтобы владелец данного файла был root, а права на файл были 400

Если ваш Астериск, а так и должно быть, запускается не от пользователя root, нам нужно добавить в файл

/etc/corosync/uidgid.d/asterisk

uidgid {
 uid: asterisk
 gid: asterisk
}

Corosync может работать в режиме multicast и unicast в зависимости от специфики вашей сети и расположения серверов с Asterisk. Если Астериски находятся в одной подсети можно использовать multicast, в нашем же случае Астериски находятся в разных подсетях и подключены через vpn, поэтому мы используем unicast

Переходим к настройке конфига corosync на первом сервере:

/etc/corosync/corosync.conf

memberaddr — указываем ip адреса ваших Астерисков
bindnetddr — указываем подсеть в которой находится сервер

compatibility: whitetank
totem {
   version: 2
   secauth: on
   interface {
      member {
         memberaddr: 192.168.0.2
      }
      member {
         memberaddr: 192.168.1.2
      }
      ringnumber: 0
      bindnetaddr: 192.168.0.0
      mcastport: 5405
   }
   transport: udpu
}
   logging {
   fileline: off
   to_logfile: yes
   to_syslog: yes
   debug: off
   logfile: /var/log/cluster/corosync.log
   debug: off
   timestamp: on
   logger_subsys {
      subsys: AMF
      debug: off
   }
}

И для второго сервера

compatibility: whitetank
totem {
   version: 2
   secauth: on
   interface {
      member {
         memberaddr: 192.168.1.2
      }
      member {
         memberaddr: 192.168.0.2
      }
      ringnumber: 0
      bindnetaddr: 192.168.1.0
      mcastport: 5405
   }
   transport: udpu
}
   logging {
   fileline: off
   to_logfile: yes
   to_syslog: yes
   debug: off
   logfile: /var/log/cluster/corosync.log
   debug: off
   timestamp: on
   logger_subsys {
      subsys: AMF
      debug: off
   }
}

Далее стартуем сервис на серверах и не забываем про iptables на ваших станциях, corosync настроен на работу по udp порту 5405

service corosync start

Теперь перейдем к настройке Астерисков, для этого создаем файл res_corosync.conf и прописываем настройки на первом и втором сервере

[general]
publish_event = mwi
subscribe_event = mwi
publish_event = device_state
subscribe_event = device_state

Делаем core reload в консоли Asterisk и проверяем настройки

corosync show members

Должны увидеть примерно следующее на одной и второй станции

Corosync show members Asterisk. Cluster members

Далее на каждом Астериске в контексте, где у вас прописаны хинты, необходимо дописать хинты номеров соседней станции, если у вас freepbx то прописать в контексте ext-local-custom

Первая станция, имеет номера 1XX вторая 2XX

Первая станция

[ext-local-custom]
exten => 200,hint,SIP/200,CustomPresence:200

и т.д.

Вторая станция

[ext-local-custom]
exten => 100,hint,SIP/200,CustomPresence:200

и т.д.
Выполняем dialplan reload и проверяем отображение хинтов на наших Asterisk командой core show hints, при этом должны увидеть хинты не только текущей, но и соседней станции.

 
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