生产环境模拟实现keepalived+Nginx调度器+httpd的高可用集群

blob.png

具体过程是用Nginx做负载均衡,可以将Nginx和主机放在同一台机子上,也可以分开放置,只不过分开的话要指明RS是Nginx的主机地址。至于直接将虚拟地址配置在Nginx主机上我暂时还未成功

blob.png

blob.png

blob.png

blob.png

blob.png

blob.png

blob.png

生产环境模拟实现keepalived+Nginx调度器+httpd的高可用集群

blob.png

blob.png

下面附上我的双主模型的主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 instart)       
 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.99contact='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" inmaster)
        notify master        exit 0
        ;;
backup)
        notify  backup        exit 0
        ;;
fault)
        notify fault        exit 0
        ;;
*)        echo 'Usage: `basename $0` {maser|backup|fault} '
        exit 1esac

原创文章,作者:sjfbjs,如若转载,请注明出处:http://www.178linux.com/56626

(0)
sjfbjssjfbjs
上一篇 2016-11-11
下一篇 2016-11-11

相关推荐

  • Linux文本处理工具

    Linux文本处理工具 文件内容查看的工具:cat tac rev cat [options] [filename]     -E //显示行结束符     -n //对显示出的行编号     -A //显示所有控制符     -b //非空行编号     -S //压缩连续的空行为一行 tac //用于将文件已行为单位的反序输出,即第一行最后显示,最后一行…

    Linux干货 2017-09-09
  • 马哥教育网络19期+第十二周课程练习

    1、请描述一次完整的http请求处理过程; a.向根域名服务器请求解析域名,然后根服务器返回相应的IP信息; b.用户的Web浏览器向服务器端的80端口通过三次握手建立TCP连接; c.建立完TCP连接后发送HTTP请求,请求的格式包括请求方法、URL和协议版本号,方法有GET、HEAD、POST、PUT、DELETE、OPTIONS、TRACE,如: &n…

    Linux干货 2016-08-22
  • Quota和RAID

    高级文件系统管理 磁盘配额 quota 限制用户在某个分区的容量,创建数目的多少!一般实施在家目录 /home 下来限制用户的占用空间 限制某一群组所能使用的最大磁盘配额  (使用群组限制): 限制某一用户的最大磁盘配额  (使用用户限制):它仅能针对整个文件系统来进行设计,无法针对某个单一的目录来设计它的磁盘配额。 限制某一目录 &nb…

    Linux干货 2016-09-01
  • vim的基本使用

    前言:     Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。    Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本…

    Linux干货 2017-07-30
  • 逻辑卷的命令解析

    前言    lvm是logical volume manager(逻辑卷管理器)的简称,通过将若干个磁盘分区连接成一个整块的卷组(volumegroup),形成一个存储池,管理员可以在卷组上随意创建逻辑卷(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按…

    Linux干货 2016-08-30
  • shell精讲

    shell精讲 shell变量        定义变量时,变量名不加美元符号($,PHP语言中变量需要) 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z)。 中间不能有空格,可以使用下划线(_)。 不能使…

    Linux干货 2016-08-21