一:环境说明:
   LVS-DR-Master:    10.3.0.82
   LVS-DR-Backup:    10.3.0.70
   VIP:                10.3.0.60
   RealServer1:    10.3.0.69
   RealServer1:    10.3.0.83
   Centos:5.7  
 二:安装LVS和Keepalvied软件包
   1. 下载相关软件包
    mkdir /usr/local/src/lvs
    cd /usr/local/src/lvs
    wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
    wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
   2. 安装LVS和Keepalived
    lsmod |grep ip_vs
    uname -r
    2.6.18-53.el5PAE
    ln -s /usr/src/kernels/2.6.18-53.el5PAE-i686/  /usr/src/linux

tar zxvf ipvsadm-1.24.tar.gz
    cd ipvsadm-1.24
    make && make install
    find / -name ipvsadm  # 查看ipvsadm的位置
    
    或者使用yum install ipvsadm

tar zxvf keepalived-1.1.15.tar.gz
    cd keepalived-1.1.15
    ./configure  && make && make install
    find / -name keepalived  # 查看keepalived位置        
        
    cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
    cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
    mkdir /etc/keepalived
    cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
    cp /usr/local/sbin/keepalived /usr/sbin/
    service keepalived start|stop     #做成系统启动服务方便管理.

备注:在安装keepalived的过程中,第一次的版本太高我下载1.2的版本,

  

以上是我的kernel版本,在安装的过程中总报错,网上也没有找到相关的说明,所以就下载了个低版本的结果就ok了。
 三:LVS-DR,配置LVS脚本实现负载均衡

vim /etc/init.d/lvsdr
    
    #!/bin/bash
    RIP1=10.3.0.69
    RIP2=10.3.0.83
    
    VIP=10.3.0.60

. /etc/rc.d/init.d/functions
    case "$1" in
        start)
            echo " start LVS of DirectorServer"

# set the Virtual IP Address and sysctl parameter
            /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
            /sbin/route add -host $VIP dev eth0:0
            echo "1" >/proc/sys/net/ipv4/ip_forward

#Clear IPVS table
            /sbin/ipvsadm -C
            
            #set LVS
            #Web Apache
             /sbin/ipvsadm -A -t $VIP:80 -s rr
             /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
             /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
              
            #Run LVS
             /sbin/ipvsadm
          ;;
        stop)
            echo "close LVS Directorserver"
            echo "0" >/proc/sys/net/ipv4/ip_forward
            /sbin/ipvsadm -C
            /sbin/ifconfig eth0:0 down
          ;;
        *)
            echo "Usage: $0 {start|stop}"
            exit 1
    esac
    
    chmod a+x /etc/init.d/lvsdr
    service lvsdr start|stop
   
    查看命令:
    ipvsadm -ln

      ipvsadm -lcn 查看请求转发情况

    备注:此脚本在LVS-DR-Master和Backup上均需执行

四:配置Realserver脚本
    vim /etc/init.d/realserver
    #!/bin/bash

VIP=10.3.0.60

. /etc/rc.d/init.d/functions
    case "$1" in
        start)
            echo " start LVS of REALServer"
            /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
            echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
            echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
            echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
            echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
            ;;
        stop)
            /sbin/ifconfig lo:0 down
            echo "close LVS Directorserver"
            echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
            echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
            echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
            echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
            ;;
        *)
            echo "Usage: $0 {start|stop}"
            exit 1
    esac
    chmod a+x /etc/init.d/realserver
    service realserver start|stop
    
    可以通过ifconfig或者ip add 命令查看是否绑定

备注:此脚本在两台realserver上均须执行。
    
五:利用Keepalvied实现负载均衡和和高可用性

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
       notification_email {
          caozhenhuamail@gmail.com
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 127.0.0.1
       router_id LVS_DEVEL
    }

vrrp_instance VI_1 {
        state MASTER    #备份服务器上将MASTER改为BACKUP
        interface eth0
        virtual_router_id 51
        priority 100      #备份服务器将100改为98
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.3.0.60
        }
    }

virtual_server 10.3.0.60 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        protocol TCP

real_server 10.3.0.69 80 {
            weight 3               #(权重)
            TCP_CHECK {
                connect_timeout 10       #(10秒无响应超时)
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }

}

real_server 10.3.0.83 80 {
            weight 3               #(权重)
            TCP_CHECK {
                connect_timeout 10       #(10秒无响应超时)
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }

}
    }

service keepalived start|stop
    备注:BACKUP服务器同上配置,只需将红色标示的部分改一下即可.

六:测试

1 realserver其中一台服务停止:

我用的是两台nginx服务器

ps -aux |grep nginx  #查找nginx主线程pid

kill -QUIT 4195

观察DR情况:

10.3.0.83服务器已经被清除了,证明ok;

2. 把刚才停掉得83的nginx启动

继续观察DR情况:

83已经成功被加入到realserver组

3:停掉master的keepalived看是否backup能接管:

访问10.3.0.60 观察backup的DR情况:

发现backup的DR接收到了客户端发出得请求,而且成功转发,也可以通过日志信息查看

tail -f /var/log/message

4:我们把master的keepalived重新启动,观察客户端请求是否会重新被master接收并且转发:

visit: http://10.3.0.60  观察

master:

请求成功接收并且转发

backup 日志:

tail -f /var/log/message

备份服务器日志说明它已经进入备份状态,而且也没有接收到客户端发来的请求;

七:
以上是自己操作的流程,有什么问题请大家给予指正,对了,还有点要说明的是如果你的机器的防火墙都开得话,试验是不可能成功的,除非你对防火墙的过滤规则
设置的正确,因为这次主要是测试负载均衡,所以我直接把所有的机器的iptables都停掉了,service iptables stop;

转自:http://www.cnblogs.com/czh-liyu/archive/2011/12/01/2270973.html

虚拟机 搭建LVS + DR + keepalived 高可用负载均衡的更多相关文章

  1. 测试LVS+Keepalived高可用负载均衡集群

    测试LVS+Keepalived高可用负载均衡集群 1. 启动LVS高可用集群服务 此时查看Keepalived服务的系统日志信息如下: [root@localhost ~]# tail -f /va ...

  2. LVS+Keepalived高可用负载均衡集群架构实验-01

    一.为什么要使用负载均衡技术? 1.系统高可用性 2.  系统可扩展性 3.  负载均衡能力 LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,keepalived提供健康检查, ...

  3. 案例一(haproxy+keepalived高可用负载均衡系统)【转】

    1.搭建环境描述: 操作系统: [root@HA-1 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) 地址规划: 主机名 IP地址 集群角 ...

  4. 使用Ansible实现nginx+keepalived高可用负载均衡自动化部署

    本篇文章记录通过Ansible自动化部署nginx的负载均衡高可用,前端代理使用nginx+keepalived,端web server使用3台nginx用于负载效果的体现,结构图如下: 部署前准备工 ...

  5. 基于HAProxy+Keepalived高可用负载均衡web服务的搭建

    一 原理简介 1.HAProxyHAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web ...

  6. HAProxy+Keepalived 高可用负载均衡

    转自 https://www.jianshu.com/p/95cc6e875456 Keepalived+haproxy实现高可用负载均衡 Master backup vip(虚拟IP) 192.16 ...

  7. 配置LVS + Keepalived高可用负载均衡集群之图文教程

    负载均衡系统可以选用LVS方案,而为避免Director Server单点故障引起系统崩溃,我们可以选用LVS+Keepalived组合保证高可用性.  重点:每个节点时间都同步哈! C++代码 [r ...

  8. Ubuntu构建LVS+Keepalived高可用负载均衡集群【生产环境部署】

    1.环境说明: 系统版本:Ubuntu 14.04 LVS1物理IP:14.17.64.2   初始接管VIP:14.17.64.13 LVS2物理IP:14.17.64.3   初始接管VIP:14 ...

  9. LVS+Keppalived实现高可用负载均衡

    三.LVS Keppalived的安装 3.1.环境描述 LVS server1 (Master):10.0.0.202 虚拟IP为:10.0.0.210 LVS server2 ( Slave ) ...

随机推荐

  1. ios的一些经验记录2

    1.UITextField 的事件用 valuechanged outlet连接 2.swift 中 struct 和class的self 3.Int 和UInt 4.Gesture 的target ...

  2. mybatis中如果存在参数不再实体中的是如何处理

    <select id="queryMapByType" parameterType="int" resultType="my.geomap.VO ...

  3. pku oj overhang叠加卡片求最少的卡片数

    这个估计是里面第二简单的了,因为第一简单的是求a+b 哈哈,一submit就ac了 题目如下: Description How far can you make a stack of cards ov ...

  4. C语言 · 龟兔赛跑预测

    基础练习 龟兔赛跑预测   时间限制:1.0s   内存限制:512.0MB        锦囊1 模拟.   问题描述 话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共 ...

  5. C中结构体的存储分配

    C中结构体的存储分配 对于C语言中结构体所占的存储空间的大小,也一直是笔试面试的常客,今天好好看了一下这方面,以前一直以为很清楚了,今天通过各种实际测试举例,发现原来还是没有搞透彻,好在现在是彻底懂了 ...

  6. python_matplotlib知识点总结

    文作为学习过程中对matplotlib一些常用知识点的整理,方便查找. 强烈推荐ipython无论你工作在什么项目上,IPython都是值得推荐的.利用ipython --pylab,可以进入PyLa ...

  7. thinkphp 第一个设计总结

    1.thinkphp的无限级分类不是万能的... 2.感觉先看前台(根据前台设计数据库)后写控制代码(后台),速度或许会快一点,思路明确...

  8. 关于在Android中添加事件监听器的方法

    一.匿名内部类 1.先找到那个控件(初始化) private Button bt1;  //onCreate方法外 bt1 = (Button)findViewById(R.id.button1); ...

  9. 关于Cocos2d-x中数组的使用

    1.定义和背景 cocos2d::Vector<T> 是一个封装了动态大小的数组的顺序型容器. 它的元素是连续存储的,cocos2d::Vector<T> 的存储是自动处理的. ...

  10. javascript -- 判断是否为某个数据类型

    为何不用其他方法,因为下面的写法考虑了各种兼容性.判断是否为数组isArray = function (source) {    return '[object Array]' == Object.p ...