Для настройки механизма резервирования сервера посредством протокола VRRP используется функционал, который предоставляет приложение keepalived.
В составе ubuntu 16.04 обновился системный сервис keepalived, после его обновления VRRP перестает нормально функционировать.
Последняя рабочая версия keepalived - 1.2.19.
Если что-то упустили, откат можно произвести с помощью команды: sudo apt install keepalived=1:1.2.19-1. Также нужно зафиксировать версию пакета командой:
sudo apt-mark hold keepalived
На первом сервере нужно создать файл конфигурации /etc/keepalived/keepalived.conf со следующим содержимым:
global_defs { notification_email { } notification_email_from keepalived@biysk1 smtp_server localhost smtp_connect_timeout 30 } vrrp_script chk_slapd { script "killall -0 slapd" # cheaper than pidof interval 2 # check every 2 seconds } vrrp_script chk_sip { script "/usr/bin/ecss_pa_sip_port 65535" # cheaper than pidof interval 2 # check every 2 seconds } vrrp_script check_core { script "nc -z 127.0.0.1 8085" interval 2 # check every 2 seconds } !For server1 SIP vrrp_instance VI1 { state MASTER interface bond1.2 virtual_router_id 101 priority 100 advert_int 1 smtp_alert preempt_delay 60 authentication { auth_type PASS auth_pass keepssw } virtual_ipaddress { 192.168.2.101/24 dev bond1.2 label bond1.2:1 } track_script { chk_sip } } !For server2 SIP vrrp_instance VI2 { state BACKUP interface bond1.2 virtual_router_id 102 priority 50 advert_int 1 smtp_alert preempt_delay 60 authentication { auth_type PASS auth_pass keepssw } virtual_ipaddress { 192.168.2.102/24 dev bond1.2 label bond1.2:2 } } !For SLAPD vrrp_instance VI3 { state MASTER interface bond1.3 virtual_router_id 103 priority 100 advert_int 1 smtp_alert preempt_delay 20 authentication { auth_type PASS auth_pass keepssw } virtual_ipaddress { 192.168.1.50/24 dev bond1.3 label bond1.3:1 } track_script { chk_slapd } } vrrp_instance VI4 { state BACKUP interface bond1.3 virtual_router_id 104 priority 50 advert_int 1 smtp_alert authentication { auth_type PASS auth_pass keepssw } virtual_ipaddress { 192.168.1.51/24 dev bond1.3 label bond1.3:2 } } !For TC ecss1 vrrp_instance VI5 { state BACKUP interface bond1.2 virtual_router_id 110 priority 100 advert_int 1 smtp_alert preempt_delay 20 authentication { auth_type PASS auth_pass keepssw } virtual_ipaddress { 192.168.2.110/24 dev bond1.2 label bond1.2:110 } track_script { check_core } }
На втором сервере нужно создать аналогичный файл /etc/keepalived/keepalived.conf со следующим содержимым:
global_defs { notification_email { } notification_email_from keepalived@biysk2 smtp_server localhost smtp_connect_timeout 30 } vrrp_script chk_slapd { script "killall -0 slapd" # cheaper than pidof interval 2 # check every 2 seconds } vrrp_script chk_sip { script "/usr/bin/ecss_pa_sip_port 65535" # cheaper than pidof interval 2 # check every 2 seconds } vrrp_script check_core { script "nc -z 127.0.0.1 8085" interval 2 # check every 2 seconds } vrrp_instance VI1 { state MASTER interface bond1.2 virtual_router_id 102 priority 100 advert_int 1 smtp_alert preempt_delay 60 authentication { auth_type PASS auth_pass keepssw } virtual_ipaddress { 192.168.2.102/24 dev bond1.2 label bond1.2:2 } track_script { chk_sip } } vrrp_instance VI2 { state BACKUP interface bond1.2 virtual_router_id 101 priority 50 advert_int 1 smtp_alert preempt_delay 60 authentication { auth_type PASS auth_pass keepssw } virtual_ipaddress { 192.168.2.101/24 dev bond1.2 label bond1.2:1 } } vrrp_instance VI3 { state MASTER interface bond1.3 virtual_router_id 104 priority 100 advert_int 1 smtp_alert preempt_delay 20 authentication { auth_type PASS auth_pass keepssw } virtual_ipaddress { 192.168.1.51/24 dev bond1.3 label bond1.3:2 } track_script { chk_slapd } } vrrp_instance VI4 { state BACKUP interface bond1.3 virtual_router_id 103 priority 50 advert_int 1 smtp_alert authentication { auth_type PASS auth_pass keepssw } virtual_ipaddress { 192.168.1.50/24 dev bond1.3 label bond1.3:1 } } !For TC ecss2 vrrp_instance VI5 { state BACKUP interface bond1.2 virtual_router_id 110 priority 100 advert_int 1 smtp_alert preempt_delay 20 authentication { auth_type PASS auth_pass keepssw } virtual_ipaddress { 192.168.2.110/24 dev bond1 label bond1.2:110 } track_script { check_core } }
Далее нужно произвести корректировку IP-адресов и имен интерфейсов, согласно конфигурации системы.
Более подробная информация о приложении keepalived и его настройке приведена в документации по адресу: http://www.keepalived.org/pdf/UserGuide.pdf.
/usr/bin/ecss_pa_sip_port 65535, где 65535 дефолтное значение порта, который адаптер открывает в случае, когда он готов принимать нагрузку. Для того, чтобы изменить
порт необходимо в конфиге sip адаптера (/etc/ecss/ecss_pa_sip/sip1.config) в секции ip_ssw_intercom изменить в параметрe keepalive значение порта, после чего перезапустить адаптер.