利用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
下一篇 2017-07-03

相关推荐

  • LVS-几种负载方式的区别

    LVS的原理很重要,很重要。每一个知识点都要做到熟记与脑,谨记于心,张口就来。 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。 使用集群技术和Linux操作系统实现一个高性能、高可用的服务器. 很好的可伸缩性(Scal…

    Linux干货 2017-05-11
  • 文本处理工具之AWK

    概述:     在之前的文章中,我们介绍过文本处理三剑客的grep、sed,本篇就简要说明下awk的用法。主要是围绕常见的一些用法进行展开,分为以下几个部分:     1、awk的基础语法     2、awk的进阶语法  &nbs…

    Linux干货 2016-09-20
  • 网络基础知识札记

    Linux网络属性管理(1)     Bell(AT&T), PARC(Xerox)        以太网     计算机网络:共享底层通信信道         CSMA/CD算法      &nbsp…

    Linux干货 2016-09-06
  • 初学Linux之标准 I/O 和管道

    前面我们已经了解了文件系统的部分内容,我们可以通过 ls 命令让当前目录下的内容都显示在屏幕上,也可以使用 pwd 命令,显示当前的所在的目录路径。但是我们输入的是命令,本身并没有输入“显示”这类命令和要求,但是系统就自动的在屏幕上输出我们命令指定的信息。由此可以想象到,系统自身有默认的一种输出方式,同时,有输出就有输入,当输入的和系统无关,系统也会自动提示错误,以上就是我们接下来要了解的基础内容——标准 I/O。具体的涉及内容包括:三种 I/O 设备,把 I/O 重定向入文件,tr 命令的使用,使用管道链接命令。

    2017-12-02
  • grep命令

    grep命令:grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来;grep搜索的结果被送到屏幕,不影响原文件内容。Unix的grep家族包括grep、egrep和fgrep…

    Linux干货 2016-08-08
  • linux用户权限管理

    用户: 管理员–root= 0 普通用户–(1-65535) 系统用户–(1-499),(1-999) 登录用户–(500+),(1000+) 用户和组的配置文件位置: /etc/passwd– 存储系统用户所有信息 /etc/group– 存储用户组的所有信息 /etc/shadow&…

    2017-04-02