вторник, 6 августа 2013 г.

Резервирование сервера Asterisk при помощи heartbeat

В этой статье хочу рассказать о простом способе настройки резервирования asterisk при помощи heartbeat.
Мы имеем два сервера с установленым астериском и имеющим один сетевой интерфейс.
asterisk1 192.168.1.34
asterisk2 192.168.1.94
Певрое что мы делаем на каждом узле устанавливаем heartbeat
apt-get install heartbeat
 
после установки создадим файл ha.cf

touch /etc/ha.d.ha.cf

ha.cf должен содеражать следующие параметры

logfile /var/log/ha-log
node asterisk1
node asterisk2
keepalive 1 # Send one heartbeat each second
deadtime 20 # Declare nodes dead after 10 seconds
bcast eth0
auto_failback on # при восстановлении «упавшего» сервера адрес вернуть
respawn hacluster /usr/lib/heartbeat/ipfail # Failover on network failures


asterisk1 asterisk2 hostname имена, их можно узнать командой uname -n

далее создадим файл haresources

touch /etc/ha.d/haresources

содержимое файла на asterisk1

asterisk2 Ipaddr::192.168.1.94/24/eth0

содержимое файла на asterisk2

asterisk1 Ipaddr::192.168.1.34/24/eth0

далее создадим файл authkeys на asterisk1

touch /etc/ha.d/authkeys

содержимое файла должно быть примерно таким

auth 1
1 sha1 ffde5356f5ea5589ee0dc84b7b116543

даем права 600

chmod 600 /etc/ha.d/authkeys

копируем ключ на другой узел
scp -P22 /etc/ha.d/authkeys root@192.168.1.94:/etc/ha.d/
запускаем heartbeat на обоих севрерах

/etc/init.d/heartbeat start


Теперь при падении asterisk1 (192.168.1.34) резервный сервер asterisk2 (192.168.1.94) возьмет на себя роль asterisk1

для проверки выключим asterisk1

shutdown -h now

через некоторое время мы увидим что asterisk2 начал принимать запросы на интерфейсе eth0:0 с адресом 192.168.1.34

eth0 Link encap:Ethernet HWaddr b8:27:eb:28:e0:38
inet addr:192.168.1.94 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:212607 errors:0 dropped:0 overruns:0 frame:0
TX packets:150011 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:45470191 (43.3 MiB) TX bytes:35285006 (33.6 MiB)

eth0:0 Link encap:Ethernet HWaddr b8:27:eb:28:e0:38
inet addr:192.168.1.34 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

обратите внимание что на asterisk2 сервис asterisk должен быть запущен. После того как asterisk1 будет снова доступен запросы на адрес 192.168.1.34 будут приходить на как и  прежде.
Так же в sip.conf в секции general на asterisk2 я прописал следующие параметры
media_address=192.168.1.34 # RTP трафик будет идти с адреса 192.168.1.34
bindaddr=192.168.1.34:5060 # если не указать bindaddr запросы отправленые на адрес 192.168.1.34 будут уходить с адреса 192.168.1.94
 

2 комментария:

  1. А я могу второй астериск держать в другой подсети? (например, хочу чтобы он был в другом конце города, или у другого провайдера)

    ОтветитьУдалить