一:环境说明:
   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. ip_conntrack table full dropping packet解决方案

    在一台繁忙的服务器上,建议关闭ip_conntrack模块的加载: 当我们开启iptables后,会有这么个现象发生,丢包.ping的话会断断续续的丢包,ifconfig 会看到网卡dropped:X ...

  2. URLConnection格式与用法

    private void getdialog() { final EditText et = new EditText(this); final String workid = this.workid ...

  3. MapReduce的集群行为和框架

    MapReduce的集群行为 MapReduce的集群行为包括: 1.任务调度与执行MapReduce任务由一个JobTracker和多个TaskTracker两类节点控制完成.(1)JobTrack ...

  4. Hbase 学习(二)各种filter

    各种filter 今天的主题是Filter,hbase客户端查询的时候,自定义查询filter. 直接上例子吧,不多说别的了,第一个例子是RowFilter的. Scan scan = new Sca ...

  5. 查询一个字符串的子串出现的次数在sql中

    select name,char_length(name)-char_length(replace(name,'aaaaaa','')) from teacher; 将原来的字符串字段取出长度  将子 ...

  6. Config文件的使用:通过程序修改Config文件

    对于config文件,一般情况下都是使用ConfigurationManager加载,然后通过读取相应节点的值来获取想要的数据,但是,有时候需要修改config文件的值,这时候就用到了OpenExeC ...

  7. shell脚本----for循环

      1.方法1 #!/bin/bash for((i=1;i<10;i++)) do echo $i done 保存为for1.sh 直接sh for1.sh 会报错: Syntax error ...

  8. rails中render 和 redirect_to的区别, each只能用在数组中,如果只有一个或者零个项,用each方法会报错undefined method `each' for #...

    在render中,即使有:action,那么也仅仅是取对应的view中的模板(html.erb)而已,所以这里即使浏览器中的url是/orders/xcreate,但是显示的界面是/app/views ...

  9. javac编译成功,用java运行class文件出现“找不到或无法加载主类” 的问题

    1.pack后为包名,包与系统文件夹一一对应.并且代码中的包名不包含文件包的名字,即文件名 2.javac 按照*.java 文件的所在路径进行编译,编译完成后,使用java +完整包名(包含文件包名 ...

  10. Linux Tcl和Expect的安装

    一.先安装Tcl 1.下载:tcl版本 8.4.19 http://sourceforge.net/projects/tcl/files/Tcl/8.4.19/tcl8.4.19-src.tar.gz ...