3.14.0 Настройка VRRP
Для настройки механизма резервирования сервера посредством протокола VRRP используется функционал, который предоставляет приложение keepalived.
На первом сервере нужно создать файл конфигурации /etc/keepalived/keepalived.conf со следующим содержимым(адреса и имена интерфейсов прописать свои):
Пример:
global_defs { set local_addr_v3 = 192.168.1.21 set peer_addr_v3 = 192.168.1.22 set local_addr_v2 = 192.168.2.21 set peer_addr_v2 = 192.168.2.22 set local_addr_v476 = 10.16.33.5 set peer_addr_v476 = 10.16.33.6 } vrrp_script chk_sip { script "/usr/bin/ecss_pa_sip_port 65535" interval 2 timeout 2 } vrrp_script check_core { script "nc -z localhost 8085" interval 2 # check every 2 seconds } vrrp_script check_mysqld { script "nc -z localhost 3306" interval 2 # check every 2 seconds } #For domain_bsk_ecss1 SIP vrrp_instance VI_SIP_61 { state MASTER interface bond1.2 virtual_router_id 61 priority 100 advert_int 1 preempt_delay 60 unicast_src_ip $local_addr_v2 unicast_peer { $peer_addr_v2 } authentication { auth_type PASS auth_pass kassw2 } virtual_ipaddress { 192.168.2.61/24 dev bond1.2 label bond1.2:SIP61 } track_script { chk_sip } } #For domain_bsk_ecss2 SIP vrrp_instance VI_SIP_62 { state BACKUP interface bond1.2 virtual_router_id 62 priority 50 advert_int 1 smtp_alert preempt_delay 60 unicast_src_ip $local_addr_v2 unicast_peer { $peer_addr_v2 } authentication { auth_type PASS auth_pass kassw2 } virtual_ipaddress { 192.168.2.62/24 dev bond1.2 label bond1.2:SIP62 } } #For TC ecss1 vrrp_instance VI_TC63 { state BACKUP interface bond1.2 virtual_router_id 63 priority 100 advert_int 1 preempt_delay 20 unicast_src_ip $local_addr_v2 unicast_peer { $peer_addr_v2 } authentication { auth_type PASS auth_pass kassw2 } virtual_ipaddress { 192.168.2.63/24 dev bond1.2 label bond1.2:TC } track_script { check_core } } #For MySQL vrrp_instance MySQL71 { state BACKUP interface bond1.3 virtual_router_id 71 priority 100 advert_int 1 preempt_delay 10 unicast_src_ip $local_addr_v3 unicast_peer { $peer_addr_v3 } authentication { auth_type PASS auth_pass pmysql } virtual_ipaddress { 192.168.1.71/24 dev bond1.3 label bond1.3:MYSQL } track_script { check_mysqld } notify_master /usr/lib/ecss/ecss-scripts/mysql-replication/ecss_reset_mysql_events_to_master.sh. notify_backup /usr/lib/ecss/ecss-scripts/mysql-replication/ecss_reset_mysql_events_to_backup.sh }
CODEНа втором сервере нужно создать аналогичный файл /etc/keepalived/keepalived.conf со следующим содержимым:
global_defs { set local_addr_v3 = 192.168.1.22 set peer_addr_v3 = 192.168.1.21 set local_addr_v2 = 192.168.2.22 set peer_addr_v2 = 192.168.2.21 set local_addr_v476 = 10.16.33.6 set peer_addr_v476 = 10.16.33.5 } vrrp_script chk_sip { script "/usr/bin/ecss_pa_sip_port 65535" interval 2 timeout 2 } vrrp_script check_core { script "nc -z localhost 8085" interval 2 # check every 2 seconds } vrrp_script check_mysqld { script "nc -z localhost 3306" # cheaper than pidof interval 2 # check every 1 seconds } #For domain_bsk_ecss1 SIP vrrp_instance VI_SIP_62 { state MASTER interface bond1.2 virtual_router_id 62 priority 100 advert_int 1 preempt_delay 60 unicast_src_ip $local_addr_v2 unicast_peer { $peer_addr_v2 } authentication { auth_type PASS auth_pass kassw2 } virtual_ipaddress { 192.168.2.62/24 dev bond1.2 label bond1.2:SIP62 } track_script { chk_sip } } #For domain_bsk_ecss2 SIP vrrp_instance VI_SIP_61 { state BACKUP interface bond1.2 virtual_router_id 61 priority 50 advert_int 1 smtp_alert preempt_delay 60 unicast_src_ip $local_addr_v2 unicast_peer { $peer_addr_v2 } authentication { auth_type PASS auth_pass kassw2 } virtual_ipaddress { 192.168.2.61/24 dev bond1.2 label bond1.2:SIP61 } } #For TC ecss1 vrrp_instance VI_TC63 { state BACKUP interface bond1.2 virtual_router_id 63 priority 80 advert_int 1 preempt_delay 20 unicast_src_ip $local_addr_v2 unicast_peer { $peer_addr_v2 } authentication { auth_type PASS auth_pass kassw2 } virtual_ipaddress { 192.168.2.63/24 dev bond1.2 label bond1.2:TC } track_script { check_core } } #For MySQL vrrp_instance MySQL71 { state BACKUP interface bond1.3 virtual_router_id 71 priority 80 advert_int 1 preempt_delay 20 unicast_src_ip $local_addr_v3 unicast_peer { $peer_addr_v3 } authentication { auth_type PASS auth_pass pmysql } virtual_ipaddress { 192.168.1.71/24 dev bond1.3 label bond1.3:MYSQL } track_script { check_mysqld } notify_master /usr/lib/ecss/ecss-scripts/mysql-replication/ecss_reset_mysql_events_to_master.sh. notify_backup /usr/lib/ecss/ecss-scripts/mysql-replication/ecss_reset_mysql_events_to_backup.sh }
CODE
Далее нужно произвести корректировку IP-адресов и имен интерфейсов, согласно конфигурации системы.
Более подробная информация о приложении keepalived и его настройке приведена в документации по адресу: http://www.keepalived.org/pdf/UserGuide.pdf.
Изменён скрипт проверки доступности контрольного сип порта. Теперь скрипт из keepalive нужно вызывать следующим образом:
/usr/bin/ecss_pa_sip_port 65535, где 65535 дефолтное значение порта, который адаптер открывает в случае, когда он готов принимать нагрузку. Для того, чтобы изменить
порт необходимо в конфиге sip адаптера (/etc/ecss/ecss_pa_sip/sip1.config) в секции ip_ssw_intercom изменить в параметрe keepalive значение порта, после чего перезапустить адаптер.
/usr/bin/ecss_pa_sip_port 65535, где 65535 дефолтное значение порта, который адаптер открывает в случае, когда он готов принимать нагрузку. Для того, чтобы изменить
порт необходимо в конфиге sip адаптера (/etc/ecss/ecss_pa_sip/sip1.config) в секции ip_ssw_intercom изменить в параметрe keepalive значение порта, после чего перезапустить адаптер.