利用keepalived实现nginx七层负载均衡器双主模型高可用集群

nginx通过ngx_http_upstream_module可以实现七层http服务的负载均衡,同时还自带RS的健康监测功能,但是也有弊端,nginx负载均衡器如果发生故障则整个集群失效,此文通过keepalived构建nginx负载均衡器的高可用集群。

一、实验环境:

实验需要4台服务器:

nginx负载均衡器1:192.168.11.100

nginx负载均衡器2:192.168.11.101

nginx静态网页服务器1:192.168.11.201

nginx静态网页服务器2:192.168.11.202

拓扑如下:

利用keepalived实现nginx七层负载均衡器双主模型高可用集群

二、实验步骤:

负载均衡器配置:

  1. 安装nginx和keepalived
    yum install -y nginx keepalived
  2. 修改keepalived配置文件:
    ! Configuration File for keepalived  global_defs {    notification_email {         root@localhost    }    notification_email_from keepalived@localhost    smtp_server 127.0.0.1    smtp_connect_timeout 30    router_id node1    vrrp_mcast_group1 224.0.115.17 #组播ip地址# }  #服务检测脚本1:当/etc/keepalived目录下存在down文件,则权重-5# vrrp_script chk_down {     script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"     interval 1 #每隔1秒检测一次#     weight -5 #权重减5# }  vrrp_script chk_nginx {     script "killall -0 nginx && exit 0 || exit 1" #检测nginx进程是否存在#     interval 1      weight -5     fall 2 #检测两次都不存在则降低权重#     rise 1 #检测一次存在则加权重# }  vrrp_instance VI_1 {     state MASTER     interface ens33     virtual_router_id 1         priority 100     advert_int 1     authentication {         auth_type PASS         auth_pass hello     }     virtual_ipaddress {         192.168.11.250 label ens33:0     }     #检测chk_down和chk_nginx两个脚本#     track_script {         chk_down         chk_nginx     }     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 {     state BACKUP     interface ens33     virtual_router_id 2     priority 96     advert_int 1     authentication {         auth_type PASS         auth_pass world     }     virtual_ipaddress {         192.168.11.251 label ens33:1             }     track_script {         chk_down         chk_nginx     }     #定义触发通知脚本条件#     notify_master "/etc/keepalived/notify.sh master"     notify_backup "/etc/keepalived/notify.sh backup"     notify_fault "/etc/keepalived/notify.sh fault" }
  3. 通知脚本内容如下:
     #!/bin/bash # contact='root@localhost' #定义函数:当主次节点发生变更之后给root@localhost发邮件通知# notify() {         local mailsubject="`hostname` to be $1,vip floating"         local mailbody="`data +"%F %T"`:vrrp transition,`hostname` changed to be $1"         echo "$mailbody" | mail -s "$mailsubject" $contact }  case $1 in master)         notify master         ;; backup)         notify backup         ;; fault)         notify fault         ;; *)         echo "Usage:$(basename $0) {master|backup|fault}"         exit 1         ;; esac

     

     

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

(2)
王子豪王子豪
上一篇 2017-07-03 15:42
下一篇 2017-07-03 15:45

相关推荐

  • keepalived+nginx

    keepalived可以认为是VRRP协议在Linux上的实现,主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。本文基于如下的拓扑图: 配置keepalived+nginx的方…

    Linux干货 2016-11-04
  • Python 课堂笔记

    第二天

    Linux干货 2018-03-21
  • PXE

    BootStraping 系统提供 PXE 简介 PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file…

    Linux干货 2016-11-05
  • 删除三天前备份的脚本

    [root@scm-dzm testfolder]# ll total 4 drwxr-xr-x. 2 root root   6 Jul 14 00:53 20160722 drwxr-xr-x. 2 root roo…

    Linux干货 2016-07-16
  • samba应用

    samba详解 前言 前面学过了NFS,是一个网络文件系统,可以让远程连接像访问本地文件一样,在同一个网络上的多个用户间共享目录和文件系统。只不过NFS只是针对于两个linux主机,我们现在需要linux主机和windows主机都能共享,这个时候就用到了samba。 1、步骤,允许个别用户访问 1、安装下面三个包: samba samba-common sa…

    Linux干货 2016-12-21