利用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

相关推荐

  • 第一周:Linux基础之系统入门知识(一)

    一、计算机的组成及功能 现代计算机的基本结构是由匈牙利-美国科学家冯· 诺依曼于1946年提出的。迄今为止所有进入实用的电子计算机  都是按冯· 诺依曼提出的结构体系和工作原理设计制造的故又统称为“冯·诺依曼型计算机"。 根据冯.诺依曼原理:计算机由运算器、控制器、存储器、输入设备、输出设备所组成 运算器: 进行算术与逻辑运算 控制器:&…

    Linux干货 2016-09-18
  • vi编辑器

       vim编辑器是众多文件编辑软件中比较好的一个,也是使用最多 ,功能最强大的,提供了图形化界面。    Vi:类unix系统中默认的文本编辑器    Vim:vi编辑器的增强版本,习惯上也称vi。    作用:创建或修改文本文件,维护linux系统的各种配置文件 vim的使用…

    Linux干货 2016-08-15
  • LVS小记

    19.LVS小记    LVS的类型:        nat:是一种基于IP的DNAT的,通过目标端口与目标地址利用特定的算法选取出响就的主机进行响应,通过RS(Real Server)的地址和端口进行转发            特点:&n…

    2017-05-15
  • 正则表达式及文本处理

    正则表达式及文本处理 通俗点说,正则表达式就是处理字符串的方法,更加快速简洁的代表各个要求参数,一般用于描述字符排列和匹配模式的一种语法规则,通过正则表达式一些特殊符号的辅助,让用户轻易的查找、删除、替换一些字符串的处理程序。( ps:正则表达式和通配符不一样,通配符代表的是bash接口的一个功能,但正则表达式是一种字符串处理的表达方式,两者一定要分清楚。)…

    2017-06-11
  • 马哥教育面授班22期:第一天课程练习

    Linux发展史:        1984年:Richard Stallman发起GNU项目和自由软件基金会创建开源的UNIX实用工具版本        创建通用公共许可证(GPL)        1991年:Linux Torvalds发…

    Linux干货 2017-05-16
  • 马哥教育第一天记

    一天学习心得和记录

    Linux干货 2018-03-26