生产环境模拟实现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 08:41
下一篇 2016-11-11 08:41

相关推荐

  • 第一篇文章

    第一篇文章。

    Linux干货 2016-12-26
  • 第二周作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 答:针对文件常用的命令有如下几大类: a)文件创建命令 touch       touch /path/filename  —-新建一个空的文件 b)文件复制命令 cp       cp /path1/…

    Linux干货 2016-11-19
  • linux用户和组管理

    linux用户和组管理 类Unix系统的设计初衷就是为让多用户同时工作,所以也迫使Linux系统有了极强的安全性,在前面安装红帽RHEL7操作系统时还特别要求“设置root用户密码”,而root用户是存在于所有类UNIX系统中的”超级用户”。 用户管理 root账户介绍(超级管理员) root用户拥有极高的系统所有权,能够管理系统的各项功能,如添加/删除用户…

    Linux干货 2016-09-05
  • 马哥教育网络班第21期+第六周课程作业

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的1、以至少一个空白字符开头的行的行首加#; :%s@^[[:space:]]\+@#@   2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符; :%s@^[[:space…

    Linux干货 2016-08-22
  • linux 使用者管理 (9月底)

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。     ~]#w | cut -d ' ' -f 1 |uniq -u 2、取出最后登录到当前系统的用户的相关信息。 ~]# last -1(数字1) 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 ~]#…

    Linux干货 2016-10-02
  • 关于find命令的实际应用

    1、查找/var目录下属主为root,且属组为mail的所有文件 2、查找/var目录下不属于root、lp、gdm的所有文件 3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件 4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件 5、查找/etc目录下大于1M且类型为普通文件的所有文件 6、查找/e…

    Linux干货 2016-08-16