Blame doc/source/case_study_mixing.rst

Packit c22fc9
#########################################
Packit c22fc9
Case Study: Mixing Healthcheck & Failover
Packit c22fc9
#########################################
Packit c22fc9
Packit c22fc9
For this example, we use the same topology used in the Failover part. The idea here is to use VRRP VIPs as LVS VIPs. That way we will introduce a High Available LVS director performing LVS real server pool monitoring.
Packit c22fc9
Packit c22fc9
Keepalived Configuration
Packit c22fc9
************************
Packit c22fc9
Packit c22fc9
The whole configuration is done in the /etc/keepalived/keepalived.conf file. In
Packit c22fc9
our case study this file on LVS director 1 looks like::
Packit c22fc9
Packit c22fc9
    # Configuration File for keepalived
Packit c22fc9
    global_defs {
Packit c22fc9
        notification_email {
Packit c22fc9
            admin@domain.com
Packit c22fc9
            0633225522@domain.com
Packit c22fc9
        }
Packit c22fc9
        notification_email_from keepalived@domain.com
Packit c22fc9
        smtp_server 192.168.200.20
Packit c22fc9
        smtp_connect_timeout 30
Packit c22fc9
        lvs_id LVS_MAIN
Packit c22fc9
    }
Packit c22fc9
    # VRRP Instances definitions
Packit c22fc9
    vrrp_sync_group VG1 {
Packit c22fc9
        group {
Packit c22fc9
            VI_1
Packit c22fc9
            VI_2
Packit c22fc9
        }
Packit c22fc9
    }
Packit c22fc9
    vrrp_sync_group VG2 {
Packit c22fc9
        group {
Packit c22fc9
            VI_3
Packit c22fc9
            VI_4
Packit c22fc9
        }
Packit c22fc9
    }
Packit c22fc9
    vrrp_instance VI_1 {
Packit c22fc9
        state MASTER
Packit c22fc9
        interface eth0
Packit c22fc9
        virtual_router_id 51
Packit c22fc9
        priority 150
Packit c22fc9
        advert_int 1
Packit c22fc9
        authentication {
Packit c22fc9
            auth_type PASS
Packit c22fc9
            auth_pass k@l!ve1
Packit c22fc9
        }
Packit c22fc9
        virtual_ipaddress {
Packit c22fc9
            192.168.200.10
Packit c22fc9
            192.168.200.11
Packit c22fc9
        }
Packit c22fc9
    }
Packit c22fc9
    vrrp_instance VI_2 {
Packit c22fc9
        state MASTER
Packit c22fc9
        interface eth1
Packit c22fc9
        virtual_router_id 52
Packit c22fc9
        priority 150
Packit c22fc9
        advert_int 1
Packit c22fc9
        authentication {
Packit c22fc9
            auth_type PASS
Packit c22fc9
            auth_pass k@l!ve2
Packit c22fc9
        }
Packit c22fc9
        virtual_ipaddress {
Packit c22fc9
            192.168.100.10
Packit c22fc9
        }
Packit c22fc9
    }
Packit c22fc9
    vrrp_instance VI_3 {
Packit c22fc9
        state BACKUP
Packit c22fc9
        interface eth0
Packit c22fc9
        virtual_router_id 53
Packit c22fc9
        priority 100
Packit c22fc9
        advert_int 1
Packit c22fc9
        authentication {
Packit c22fc9
            auth_type PASS
Packit c22fc9
            auth_pass k@l!ve3
Packit c22fc9
        }
Packit c22fc9
        virtual_ipaddress {
Packit c22fc9
            192.168.200.12
Packit c22fc9
            192.168.200.13
Packit c22fc9
        }
Packit c22fc9
    }
Packit c22fc9
    vrrp_instance VI_4 {
Packit c22fc9
        state BACKUP
Packit c22fc9
        interface eth1
Packit c22fc9
        virtual_router_id 54
Packit c22fc9
        priority 100
Packit c22fc9
        advert_int 1
Packit c22fc9
        authentication {
Packit c22fc9
            auth_type PASS
Packit c22fc9
            auth_pass k@l!ve4
Packit c22fc9
        }
Packit c22fc9
        virtual_ipaddress {
Packit c22fc9
            192.168.100.11
Packit c22fc9
        }
Packit c22fc9
    }
Packit c22fc9
    # Virtual Servers definitions
Packit c22fc9
    virtual_server 192.168.200.10 80 {
Packit c22fc9
        delay_loop 30
Packit c22fc9
        lb_algo wrr
Packit c22fc9
        lb_kind NAT
Packit c22fc9
        persistence_timeout 50
Packit c22fc9
        protocol TCP
Packit c22fc9
        sorry_server 192.168.100.100 80
Packit c22fc9
        real_server 192.168.100.2 80 {
Packit c22fc9
            weight 2
Packit c22fc9
            HTTP_GET {
Packit c22fc9
                url {
Packit c22fc9
                    path /testurl/test.jsp
Packit c22fc9
                    digest ec90a42b99ea9a2f5ecbe213ac9eba03
Packit c22fc9
                }
Packit c22fc9
                url {
Packit c22fc9
                    path /testurl2/test.jsp
Packit c22fc9
                    digest 640205b7b0fc66c1ea91c463fac6334c
Packit c22fc9
                }
Packit c22fc9
                connect_timeout 3
Packit c22fc9
                retry 3
Packit c22fc9
                delay_before_retry 2
Packit c22fc9
            }
Packit c22fc9
        }
Packit c22fc9
        real_server 192.168.100.3 80 {
Packit c22fc9
            weight 1
Packit c22fc9
            HTTP_GET {
Packit c22fc9
                url {
Packit c22fc9
                    path /testurl/test.jsp
Packit c22fc9
                    digest 640205b7b0fc66c1ea91c463fac6334c
Packit c22fc9
                }
Packit c22fc9
                connect_timeout 3
Packit c22fc9
                retry 3
Packit c22fc9
                delay_before_retry 2
Packit c22fc9
            }
Packit c22fc9
        }
Packit c22fc9
    }
Packit c22fc9
    virtual_server 192.168.200.12 443 {
Packit c22fc9
        delay_loop 20
Packit c22fc9
        lb_algo rr
Packit c22fc9
        lb_kind NAT
Packit c22fc9
        persistence_timeout 360
Packit c22fc9
        protocol TCP
Packit c22fc9
        real_server 192.168.100.2 443 {
Packit c22fc9
            weight 1
Packit c22fc9
            TCP_CHECK {
Packit c22fc9
                connect_timeout 3
Packit c22fc9
            }
Packit c22fc9
        }
Packit c22fc9
        real_server 192.168.100.3 443 {
Packit c22fc9
            weight 1
Packit c22fc9
            TCP_CHECK {
Packit c22fc9
                connect_timeout 3
Packit c22fc9
            }
Packit c22fc9
        }
Packit c22fc9
    }
Packit c22fc9
Packit c22fc9
We define the symmetric VRRP configuration file on LVS director 2. That way both directors are active at a time, director 1 handling HTTP stream and director 2 SSL stream.