Keepalived+LVS实现web高可用负载集群

目标:基于LVS的DR模型实现keepalived高可用负载集群

拓扑图:

一、准备好DR模型的Real server1和Realserver2两个节点

1、此处我就用脚本来快速的部署这两个节点,脚本内容如下:

#!/bin/bash
vip=192.168.1.100
interface="lo:0"

case $1 in              
start)                  
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

ifconfig $interface $vip broadcast $vip netmask 255.255.255.255 up 
route add -host $vip dev $interface                     
;;                              

stop)                   
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce

ifconfig $interface down        
;;             
status)                 
if ifconfig lo:0 |grep $vip &> /dev/null; then
echo "ipvs is running."                 
else                            
echo "ipvs is stopped."                 
fi                              
;;                              

*)
echo "Usage: `basename $0` {start|stop|status}"
exit 1
esac

2、分别为两个节点配置web服务,用于测试使用。

[[email protected] ~]# yum -y install httpd
[[email protected] ~]# echo "Rserver111" > /var/www/html/index.html 
[[email protected] ~]# service httpd start
#######Realserver2同样操作即可

二、配置director1和director2为keepalived的,并且为主和从模式:

Director1:

[[email protected] ~]# yum -y install keepalived  ###安装keepalived程序包
! Configuration File for keepalived

global_defs {  ###全局配置段
   notification_email {  ###通知邮件发送给哪个地址
        [email protected]
   }
   notification_email_from [email protected]###发件人地址
   smtp_server 127.0.0.1 ##邮件服务器监听地址
   smtp_connect_timeut 30  ##超时时间
   router_id node1  ##路由id标识
   vrrp_mcast_group4 224.0.0.100 ###组播地址,几个director需要相同
}

vrrp_instance VI_1 {  
    state MASTER  ##当前节点虚拟路由的初始状态
    interface eno16777736 ###vrrp绑定的接口
    virtual_router_id 51 ##虚拟路由的vrid好,范围是0-255
    priority 100 ###优先级别,范围是1-254
    advert_int 1 ###vrrp通告间隔时间,单位秒
    authentication {   ###定义认证类型和具体的方式
        auth_type PASS  ###基于简单密码认证
        auth_pass 121212   ###密码,一般不超过8个字符串,主从需要相同
    }
    virtual_ipaddress {  定义vip地址,需要同RS相同
        192.168.1.100
    }    
    

virtual_server 192.168.1.100 80 {  ###定义Vs的IP地址和端口号
    delay_loop 3  ##设定RS的检测试剂间隔,默认单位为s
    lb_algo rr  ##指定地址分配的算法
    lb_kind DR  ##指定RS的模型
#    persistence_timeout 50  ##连接超时时长
    net_mask 255.255.255.0
    protocol TCP
    sorry_server 127.0.0.1 80  ####sorry服务器地址,如果服务都挂了,那么sorry服务器将响应

  
  
  
    real_server 192.168.1.102 80 {  ##定义Rs1的IP地址及端口号
        weight 1 ###设置RS的权重
        HTTP_GET {  ###设置Rs的健康检测方式
            url {
              path /index.html ###设置检测资源路径
              #digest 640205b7b0fc66c1ea91c463fac6334d
              status_code 200 ##设置采用status_conde方式验证健康
            }
            connect_timeout 3 连接超时时长
            nb_get_retry 3 ##重试次数
            delay_before_retry 3 ###重试前延迟时长
        }
    }    

    
   
real_server 192.168.1.108 80 {  ####定义RS2的地址和端口号
        weight 1
        HTTP_GET {
            url {
              path /index.html
              #digest 640205b7b0fc66c1ea91c463fac6334d
                status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

ok,director1就基本上搞定了,现在复制本配置文件到director2中做下修改就可以了,此处我就省了。等两边修改好了启动服务,就可以测试了。。

三、简单的监控脚本的使用配置;

a)监控vip流动状态的通知脚本:

1、建立vip状态通知脚本,内容如下:

#!/bin/bash
contact=‘[email protected]‘ ##定义收件人

notify() {
mailsubject="$(hostname) to be $1, vip floating."
mailbody="$(date +‘%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		

2、编辑配置文件添调用通知脚本:

vrrp_instance VI_2 {

notify_master "/etc/keepalived/notify.sh master"  
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"

}

此脚本和配置访问需要Director1和Director2两边都需要配置

b)通过定义vrrp_script脚本来完成资源监控,实现动态调整director的优先级别

脚本定义在vrrp_instance以外就可以:

首先是定义我么的监控脚本

定义通过资源监控来实现调整:
vrrp_script chk_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weight -5
}

定义通过服务监控来实现调整:
vrrp_script chk_httpd {
script "killall -0 httpd && exit 0 || exit 1"
interval 1
weight -5
}

调用定义好的vrrp脚本,,##此脚本需要放在vrrp_instance内

track_script {
  chk_down
  chk_httpd
}

此脚本和配置访问需要Director1和Director2两边都需要配置

ok!此处我么及可以来测试哦,测试省略;

时间: 2024-10-18 00:05:02

Keepalived+LVS实现web高可用负载集群的相关文章

搭建LVS+Keepalived高可用负载集群

搭建LVS+Keepalived高可用负载集群 最近,本屌接到公司的任务,公司新上20台服务器,需要搭建一整套架构来运行公司的业务,其中有应用服务器,认证服务器,数据库服务器等.服务器基础架构中的应用服务器集群要有高可用性,且需要负载均衡.当我接到这个任务的时候,脑子里第一个想法就是LVS+Keepalived. 由于公司资金有限,直接上硬件的负载均衡设备是不可能的了,所以只好使用软件来实现,LVS在负载均衡集群中无疑是一种很好的方案,使用LVS可以同时分发10台以下的设备,用在我们这个项目中是

nginx结合keepalived做高可用负载集群服务

一.概述 前面几篇介绍了nginx做web网站以及https网站,反向代理,LVS的NAT与DR调度负载,但由于nginx本身负载是七层,需要套接字,即使基于upstream模块模拟成四层代理也是瓶颈,因此本文介绍nginx基于keepalived做高可用负载均衡集群服务,目标就是两台keepalived对nginx反向代理负载服务做检查与调度,做成双主模式,nginx负载调度后端的httpd网站,任何一台调度器(nginx或keepalived服务)故障,不影响业务;后端任何一台web故障也不

apache+inotify-tools+keepalived+lvs-DR模式配置高可用负载均衡集群

环境:虚拟机VMware workstation 9 操作系统:Redhat 5.6 i386 一.keepalived+LVS-DR模式配置高可用负载均衡 拓扑如下: 二.服务器IP配置信息 四台服务器均有VMware虚拟机实现,两台HA主机.两台web服务器.网络方式都设置为NAT模式 1.master:192.168.80.145 2.slaver:192.168.80.137 3.web1:192.168.80.144 4.web2:192.168.80.134 5.VIP:192.16

LVS基础及LVS+Keepalived实现双主高可用负载均衡

LVS基础及LVS+Keepalived实现双主高可用负载均衡 LB集群: (Load  Balancing)即负载均衡集群,其目的是为了提高访问的并发量及提升服务器的性能,其    实现方式分为硬件方式和软件方式. 硬件实现方式: 常用的有 F5公司的BIG-IP系列.A10公司的AX系列.Citrix公司的 NetScaler系列等 软件实现方式: LVS工作于传输层.nginx工作于应用层.haproxy工作于传输层和应用层 本文主要讲解LVS. 一.什么是LVS ? 1. LVS:(Li

Keepalived+Haproxy双主高可用负载均衡web和mysql综合实验

日期及版本:2014.5.4v1.0 架构图 实验目的: 1.Haproxy+Keepalived双主双机高可用模型,keepalived为Haproxy主从提供高可用保证haproxy-master若挂掉haproxy-backup能无缝接管,haproxy为后端Web提供负载均衡,缓解并发压力,实现WEB站点负载均衡+高可用性: 2. Haproxy反代web做动静分离: 3. Haproxy反代mysql 算法leastconn和roundrobin的不同效果: 系统环境: OS:cent

L8.1 lvs+heartbeat-ldirectord实现高可用负载均衡

lvs+heartbeat-ldirectord实现高可用负载均衡 IPVS规则与heartbeat ipvs规则不再使用ipvsadm配置,而是依靠heartbeat的包工具ldirectord去生成规则 并且ldirectord有检测后端RS健康状况的机制(利用权重,非常正常剔除(w=0),正常后添加). 删除之前 heartbeat v2 crm lamp配置的约束和资源 节点分别停止heartbeat:/etc/init.d/heartbeat stop 规划 ipvs-ld节点: 19

使用Keepalived+ipvs构建(高可用+负载均衡)环境!

之前写过一个heartbeat-ldirectord实现LVS的高可用,这里引入一个轻量级的程序Keepalived基于VRRP协议工作,也能为服务提供高可用功能,这个程序的开发初衷是为了给lvs提供高可用. 下面我们来看看如何使用keepalived+ipvs实现高可用+负载均衡. 在RHEL6.4以后就提供了rpm格式的安装包,这里我们用源码编译安装. 先去官网下载源码包http://keepalived.org/ 解压源程序包,预编译配置,编译程序,安装程序. tar zxvf keepa

高可用RabbitMQ集群安装配置

RabbitMQ集群安装配置+HAproxy+Keepalived高可用 rabbitmq 集群 消息队列 RabbitMQ简介 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现. AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然.AMQP的主

高可用(HA)集群原理概述

一.高可用集群(High Availability Cluster) 集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源.每一个单个的计算机系统都叫集群节点(node).随着业务的增长,集群通过添加新的节点,满足资源的高可扩展性. 计算机硬件和软件易错性不可避免,这样在节点上的服务会不可避免的中断.高可用集群的出现是为保证即使节点失效,而服务能不中断. 高可用集群在一组计算机中,采用主备模式,主节点提供服务,备节点等待:一旦,主节点失效,备节点无需人工的无缝取代主节点提