定义keepalived的双主模型和lvs

配置keepalived为实现haproxy高可用的双主模型配置文件示例:


说明:其基本实现思想为创建两个虚拟路由器,并以两个节点互为主从。

   server1

! Configuration File for keepalived  

  

global_defs {  

   notification_email {  

         [email protected]

         [email protected]  

   }  

   notification_email_from [email protected] 

   smtp_connect_timeout 3  

   smtp_server 127.0.0.1  

   router_id LVS_DEVEL  

}  


vrrp_script chk_haproxy {  

    script "killall -0 haproxy"  

    interval 1  

    weight 2  

}  


vrrp_script chk_mantaince_down {

   script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"

   interval 1

   weight 2

}


vrrp_instance VI_1 {  

    interface eth0  

    state MASTER  # BACKUP for slave routers

    priority 101  # 100 for BACKUP

    virtual_router_id 51 

    garp_master_delay 1 

  

    authentication {  

        auth_type PASS  

        auth_pass password  

    }  

    track_interface {  

       eth0    

    }  

    virtual_ipaddress {  

        172.16.100.1/16 dev eth0 label eth0:0 

    }  

    track_script {  

        chk_haproxy  

        chk_mantaince_down

    }  

  

 

    notify_master "/etc/keepalived/notify.sh master"  

    notify_backup "/etc/keepalived/notify.sh backup"  

    notify_fault "/etc/keepalived/notify.sh fault"  


vrrp_instance VI_2 {  

    interface eth0  

    state BACKUP  # BACKUP for slave routers

    priority 100  # 100 for BACKUP

    virtual_router_id 52

    garp_master_delay 1 

  

    authentication {  

        auth_type PASS  

        auth_pass password  

    }  

    track_interface {  

       eth0    

    }  

    virtual_ipaddress {  

        172.16.100.2/16 dev eth0 label eth0:1

    }  

    track_script {  

        chk_haproxy  

        chk_mantaince_down

    }    

}



说明:

1、对于VI_1和VI_2来说,两个节点要互为主从关系;

   server2

配置keepalived为实现haproxy高可用的双主模型配置文件示例:


说明:其基本实现思想为创建两个虚拟路由器,并以两个节点互为主从。


! Configuration File for keepalived  

  

global_defs {  

   notification_email {  

         [email protected]

         [email protected]  

   }  

   notification_email_from [email protected] 

   smtp_connect_timeout 3  

   smtp_server 127.0.0.1  

   router_id LVS_DEVEL  

}  


vrrp_script chk_haproxy {  

    script "killall -0 haproxy"  

    interval 1  

    weight 2  

}  


vrrp_script chk_mantaince_down {

   script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"

   interval 1

   weight 2

}


vrrp_instance VI_1 {  

    interface eth0  

    state BACKUP  # BACKUP for slave routers

    priority 99  # 100 for BACKUP

    virtual_router_id 51 

    garp_master_delay 1 

  

    authentication {  

        auth_type PASS  

        auth_pass password  

    }  

    track_interface {  

       eth0    

    }  

    virtual_ipaddress {  

        172.16.100.1/16 dev eth0 label eth0:0 

    }  

    track_script {  

        chk_haproxy  

        chk_mantaince_down

    }  

  

 

    notify_master "/etc/keepalived/notify.sh master"  

    notify_backup "/etc/keepalived/notify.sh backup"  

    notify_fault "/etc/keepalived/notify.sh fault"  


vrrp_instance VI_2 {  

    interface eth0  

    state MASTER  # BACKUP for slave routers

    priority 101  # 100 for BACKUP

    virtual_router_id 52

    garp_master_delay 1 

  

    authentication {  

        auth_type PASS  

        auth_pass password  

    }  

    track_interface {  

       eth0    

    }  

    virtual_ipaddress {  

        172.16.100.2/16 dev eth0 label eth0:1

    }  

    track_script {  

        chk_haproxy  

        chk_mantaince_down

    }    

}



说明:

1、对于VI_1和VI_2来说,两个节点要互为主从关系;

   


LVS + keepalived的实现:


! Configuration File for keepalived  

  

global_defs {  

   notification_email {  

         [email protected]

         [email protected]  

   }  

   notification_email_from [email protected] 

   smtp_connect_timeout 3  

   smtp_server 127.0.0.1  

   router_id LVS_DEVEL  

}  


vrrp_script chk_schedown {

   script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"

   interval 2

   weight -2

}


vrrp_instance VI_1 {  

    interface eth0  

    state MASTER  

    priority 101

    virtual_router_id 51 

    garp_master_delay 1 

 

    authentication {  

        auth_type PASS  

        auth_pass password  

    }  


    track_interface {  

       eth0    

    }  


    virtual_ipaddress {  

        172.16.100.1/16 dev eth0 label eth0:0

    }  


    track_script {  

        chk_schedown

    }    



virtual_server 172.16.100.1 80 {

    delay_loop 6

    lb_algo rr 

    lb_kind DR

    persistence_timeout 50

    protocol TCP


#    sorry_server 192.168.200.200 1358


    real_server 172.16.100.11 80 {

        weight 1

        HTTP_GET {

            url { 

              path /

              status_code 200

            }

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }


    real_server 172.16.100.12 80 {

        weight 1

        HTTP_GET {

            url { 

              path /

              status_code 200

            }

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

}



如果要使用TCP_CHECK检测各realserver的健康状态,那么,上面关于realserver部分的定义也可以替换为如下内容:

virtual_server 172.16.100.1 80 {

    delay_loop 6

    lb_algo rr 

    lb_kind DR

    persistence_timeout 300

    protocol TCP


    sorry_server 127.0.0.1 80


    real_server 172.16.100.11 80 {

        weight 1

        TCP_CHECK {

       tcp_port 80

            connect_timeout 3

        }

    }


    real_server 172.16.100.12 80 {

        weight 1

        TCP_CHECK {

       connect_port 80

            connect_timeout 3

          }

    }

}


说明:其中的sorry_server是用于定义所有realserver均出现故障时所用的服务器。

    

你可能感兴趣的:(LVS,keepalived)