美文网首页
KEEPALIVED的具体实现

KEEPALIVED的具体实现

作者: sjfbjs | 来源:发表于2016-11-06 00:41 被阅读91次
    具体过程是用Nginx做负载均衡,可以将Nginx和主机放在同一台机子上,也可以分开放置,只不过分开的话要指明RS是Nginx的主机地址。至于直接将虚拟地址配置在Nginx主机上我暂时还未成功

    下面附上我的双主模型的主keepalived服务器的配置

    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
        root@localhost
        vrrp_mcast_group4  224.0.11.100
       }
       notification_email_from kaadmin@localhost
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id sjf1
    }
    
    vrrp_script  chk_mantaince  {
        script "[[  -e /etc/keepalived/down  ]]  && exit 1 || exit 0"
        interval 1
        weight  -4      
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth1
        virtual_router_id 15
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 11111234
        }
        virtual_ipaddress {
            11.1.0.11/16 dev eth1    
        }
    
        track_script {
        chk_mantaince 
        }
     
       notify_master   "/etc/keepalived/inotify.sh  master"
       notify_backup   "/etc/keepalived/inotify.sh  backup"
       notify_fault    "/etc/keepalived/inotify.sh  fault"
    }
    virtual_server 11.1.0.11 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
      #  persistence_timeout 50
        protocol TCP
    
        sorry_server 11.1.0.201  80
    
        real_server 11.1.0.203  80 {
            weight 1
            HTTP_GET {
                url {
                  path /
                  status_code 200
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
        real_server 11.1.0.204  80 {
             weight 1
            HTTP_GET {
                url {
                  path /
                  status_code 200
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }
    
    vrrp_instance VI_2 {
        state BACKUP
        interface eth1
        virtual_router_id 16
        priority 97
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            11.1.0.22/16 dev eth1    
        }
    
        track_script {
        chk_mantaince 
        }
     
       notify_master   "/etc/keepalived/inotify.sh  master"
       notify_backup   "/etc/keepalived/inotify.sh  backup"
       notify_fault    "/etc/keepalived/inotify.sh  fault"
    }
    virtual_server 11.1.0.22 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
      #  persistence_timeout 50
        protocol TCP
    
        sorry_server 11.1.0.201  80
    
        real_server 11.1.0.205  80 {
            weight 1
            HTTP_GET {
                url {
                  path /
                  status_code 200
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
        real_server 11.1.0.206  80 {
             weight 1
            HTTP_GET {
                url {
                  path /
                  status_code 200
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }
    

    下面附上我的从keepalived的配置

    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
        root@localhost
        vrrp_mcast_group4  224.0.11.100
       }
       notification_email_from kaadmin@localhost
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id sjf2
    }
    
    vrrp_script  chk_mantaince  {
        script "[[  -e /etc/keepalived/down  ]]  && exit 1 || exit 0"
        interval 1
        weight  -4      
    }
    
    vrrp_instance VI_1 {
        state BACKUP
        interface eth1
        virtual_router_id 15
        priority 98
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 11111234
        }
        virtual_ipaddress {
            11.1.0.11/16 dev eth1    
        }
    
        track_script {
        chk_mantaince 
        }
     
       notify_master   "/etc/keepalived/inotify.sh  master"
       notify_backup   "/etc/keepalived/inotify.sh  backup"
       notify_fault    "/etc/keepalived/inotify.sh  fault"
    }
    virtual_server 11.1.0.11 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
      #  persistence_timeout 50
        protocol TCP
    
        sorry_server 11.1.0.201  80
    
        real_server 11.1.0.203  80 {
            weight 1
            HTTP_GET {
                url {
                  path /
                  status_code 200
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
        real_server 11.1.0.204  80 {
             weight 1
            HTTP_GET {
                url {
                  path /
                  status_code 200
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }
    
    vrrp_instance VI_2 {
        state MASTER
        interface eth1
        virtual_router_id 16
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            11.1.0.22/16 dev eth1    
        }
    
        track_script {
        chk_mantaince 
        }
     
       notify_master   "/etc/keepalived/inotify.sh  master"
       notify_backup   "/etc/keepalived/inotify.sh  backup"
       notify_fault    "/etc/keepalived/inotify.sh  fault"
    }
    virtual_server 11.1.0.22 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
      #  persistence_timeout 50
        protocol TCP
    
        sorry_server 11.1.0.201  80
    
        real_server 11.1.0.205  80 {
            weight 1
            HTTP_GET {
                url {
                  path /
                  status_code 200
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
        real_server 11.1.0.206  80 {
             weight 1
            HTTP_GET {
                url {
                  path /
                  status_code 200
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }
    

    下面在附上我的设置虚拟网络的脚本

    #!/bin/bash
    vip='11.1.0.11'
    vport='80'
    netmask='255.255.255.255'
    iface='lo:0'
    
    case $1 in
    start)
            echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
            echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
            echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
            echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
            ifconfig $iface  $vip  netmask $netmask  broadcast $vip up
            route add -host $vip dev $iface
            ;;
    stop)
            ifconfig $iface down
            echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore 
    
            echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
            echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce 
            echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce 
    esac
    

    下面附上我的跟踪脚本

    #!/bin/bash
    #auth sjf
    #date 2016.11.1
    vip=192.16.11.99
    contact='root@localhost'
    
    notify() {
            mailsubject="`hostname` to be $1 ;@vip floating "
            mailbody="`date   +'%F %H:%M%S'`  ;vrrp transited , `hostname ` changed to be $1    "
            echo $mailbody | mail -s "$mailsubject"  $contact
    }
    
    case "$1" in
    master)
            notify master
            exit 0
            ;;
    backup)
            notify  backup
            exit 0
            ;;
    fault)
            notify fault
            exit 0
            ;;
    *)
            echo 'Usage: `basename $0` {maser|backup|fault} '
            exit 1
    esac
            
    

    相关文章

      网友评论

          本文标题:KEEPALIVED的具体实现

          本文链接:https://www.haomeiwen.com/subject/hhlyuttx.html