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

相关推荐

  • 22期第十二周课堂练习

    1、请描述一次完整的http请求处理过程; (1)建立和处理连接:接收请求或者拒绝请求; (2)接收请求:接收来自于网络上的主机请求报文中对某特定的资源的一次请求的过程; (3)处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息 (4)访问资源:获取请求报文中请求的资源 (5)构建响应报文; (6)发送响应报文; (7)记录日志; 2、h…

    Linux干货 2016-12-26
  • 帮助和文件管理信息

    history命令: -c 清空命令历史 -d offset 删除历史中指定的第offset个命令 n 显示最近的n条历史 -a 追加本次会话新执行的命令历史列表至历史文件 -n 读历史文件中未读过的行到历史列表 -r 读历史文件附加到历史列表 -w 保存历史列表到指定的历史文件 -p 展开历史参数成多行,但不存在历史列表中 -s 展开历史参数马一行。附加在…

    Linux干货 2017-04-11
  • shell脚本进阶

    一、流程控制 过程式编程语言:顺序执行、选择执行、循环执行 1.1 条件语句 1.1.1 if条件选择语句  选择执行: (注意: if 语句可嵌套) v  单分支:if  判断条件;then           条件为真的分支代…

    Linux干货 2016-11-27
  • 马哥教育网络班21期+第一周课程练习

    1,描述计算机的组成及其功能。 2.按系列罗列linux的发行版,并描述不同发行版之间的练习与区别。 3.描述linux的哲学思想,并按照自己的理解对其进行解释性描述。 1.       一切皆文件,计算机中所有的文件目录,        包括计算机的硬件设备显示为文件格式。 2…

    Linux干货 2016-07-07
  • N25-第四周作业

    第四周作业 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 ~]#cp -r /etc/skel /home/tuser1 ~]#chmor 700 /home/tuser1 2、编辑/etc/group文件,添加组hadoop。 ~]#echo "h…

    Linux干货 2017-01-03
  • 马哥Linux学习之Linux背景和主要发行版篇

        Linux是一种 类Unix计算机操作系统的统称,简单的说来就是Linux内核+GNU工程的各种工具和数据库。Linux包括各种Linux的发行版,其实也就是为达到不同的目的而制作(目的包括对不同计算机结构的支持,对一个具体区域或语言的本地化,实时应用或嵌入式)的不同版本。     Linux的由来.…

    2015-03-19