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

相关推荐

  • rsyslog+mysql+loganalyzer配置

    rsyslog+mysql+loganalyzer 自定义日志存储的信道(facility)和存储位置,让rsyslog作为服务端记录rsyslog客户端的日志信息 环境介绍 以centos 7.2为系统环境 内部已装有mariadb、 一、准备工作 1、 安装rsyslog连接至mysql server的驱动模块;   # y…

    Linux干货 2016-10-21
  • Linux磁盘管理基础

    Linux磁盘管理基础 硬盘结构 文件系统与MBR、GTP 磁盘管理三步骤:分区、格式化、挂载 mount 硬盘结构 硬盘的基本组成材质是盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道,不同盘片相同半径的磁道所组成的圆柱称为柱面,每个磁道被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存…

    Linux干货 2016-09-01
  • linux中nmcli命令使用及网络配置

      Red Hat Enterprise Linux 7 与 CentOS 7 中默认的网络服务由 NetworkManager 提供,这是动态控制及配置网络的守护进程,它用于保持当前网络设备及连接处于工作状态,同时也支持传统的 ifcfg 类型的配置文件。  NetworkManager 可以用于以下类型的连接:Ethernet,VLA…

    Linux干货 2016-09-10
  • LVS管理平台使用手册(第一版)[原创]

     为了更好管理、维护LVS平台,本人基于Django+certmaster+func开发了一套管理平台,主要功能模块分为性能图表、数据中心、虚拟IP池、主机管理、监控模块等功能,基本上是按F5-LTM管理平台思路来设计,下面只要对这几大块功能进行说明。1、性能图表 功能说明:以小时、日、星期、月、年的图表展示LVS SERVER、VIP、SERVE…

    Linux干货 2015-03-28
  • 在VMware workstations中安装CentOS-7-x86_64-Everything-1611.ISO

      对于最近在Linux学习的过程中,许多同学对CentOS系统的详细配置还不熟悉,于是我编写此详细步骤供大家参考。 工具: VMware workstations; CentOS-7-x86_64-Everything-1611.iso; 准备工作:  1、先要下载一个系统镜像centOS-7-x86_64-Everythin…

    2017-07-11