Для настройки механизма резервирования сервера посредством протокола VRRP используется функционал, который предоставляет приложение keepalived.

  1. На первом сервере нужно создать файл конфигурации /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
  2. На втором сервере нужно создать аналогичный файл /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 значение порта, после чего перезапустить адаптер.