Linux CentOs集群LVS负载均衡的实现

准备工作

环境:Win10下Centos6.4虚拟机。

负载均衡:两台(一主一备)  LVS + Keepalived。

HTTP服务器:3台。

给每台服务器配置IP

1、VIP(virtual ip):用来提供Virtual Server服务的ip地址。分别绑定在Director一个物理网卡上(对外接收请求包)和RS的回环设备上(回环设备需要绑定两个ip,一个是127.0.0.1,另一个就是vip)。

粗俗的讲,负载均衡就是Linux虚拟服务器,也就是再加一个虚拟机,虚拟机有一个IP,也就称之为VIP;Linux虚拟机本身自己也有一个IP,也就是本地IP,这两个IP是同等地位。

2、DIP(director ip):与vip绑定在一个物理网卡上,用来转发请求包到RS的RIP对应的mac上,此设备可以通过arp请求获取RIP对应的mac地址。

3、RIP(real server ip):绑定在RS上的一个物理网卡上,用来接收从Directory转发过来的请求包。也就是真实服务器的IP。

说一下我测试的每台服务器的IP:

LVS负载均衡主(192.168.132.244)、LVS负载均衡备(192.168.132.245)

HTTP1(192.168.132.251)、HTTP2(192.168.132.252)、HTTP3(192.168.132.242)

先给每台HTTP服务器关闭防火墙试着访问,启动httpd服务,然后给出一个明显区分的标示。这里把每台服务器的index.html页面输出当前IP。

在每台台(HTTP服务器)真实服务器网上上添加LO:0接口,并设置虚拟IP在此接口上

#cd /etc/init.d/
#vim realserver
SNS_VIP=192.168.132.200                      #定义VIP变量192.168.132.200
. /etc/rc.d/init.d/functions                 #导脚本库
case "$1" in                            #case语句 $1传递给该shell脚本的第一个参数
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP  #设置Lo:0 VIP  netmask  及广播
/sbin/route add -host $SNS_VIP dev lo:0                #route del 增加本地路由
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
sysctl -p >/dev/null 2>&1           # -p <file(default /etc/sysctl.conf) 将标准信息输入设备空文件
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1                       #route del 删除本地路由
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 "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"                           #$0 是脚本本身的名字
exit 1                                       #表示进程正常退出
esac                                         #case结束
exit 0                                        #表示进程非正常退出
#chmod 750 realserver      #给此脚本赋予权限
#chkconfig realserver on         #设置开机自启动此脚本
#service realserver start          #开启此脚本
RealServer Start OK         #表示启动成功!
#ifconfig        #查看一下是否真的成功添加了lo:0接口

OK,查看一下三台HTTP服务器是否都正常,那么继续进行下一步

开始搭建负载均衡

LVS中提供了八种不同的调度算法

详情请参考:http://blog.csdn.net/u014649204/article/details/25115039

1:轮叫调度(Round-Robin Scheduling)

2: 加权轮叫调度(Weighted Round-Robin Scheduling)

3:最小连接调度(Least-Connection Scheduling)

4:加权最小连接调度(Weighted Least-Connection Scheduling)

5:基于局部性的最少链接(Locality-Based Least Connections Scheduling)

6:带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)

7:目标地址散列调度(Destination Hashing Scheduling)

8:源地址散列调度(Source Hashing Scheduling)

9:最短预期延时调度(Shortest Expected Delay Scheduling)

10:不排队调度(Never Queue Scheduling)

对应: rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq

LVS负载均衡主机:

先看一下CentOs内核,如果内核是2.6版本以后,那么LVS虚拟机已经存在于内核中。

在这里使用Yum安装Keepalived

yum -y install keepalived

安装完成之后,使用rpm -ql 命令,查看一下Keepalived的安装信息

rpm -ql keepalived

根据提示信息里Keepalived的配置文件路径,覆盖配置文件,写入以下命令。详细说明在最后说明。

global_defs {
#   notification_email {
#       [email protected]
#   }
#   notification_email_from [email protected]
#   smtp_server smtp.exmail.qq.com
#   smtp_connect_timeout 30
    router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state MASTER             #主
    interface eth1           #在负载均衡主机上查看一下ip,这里是eth1。这里要注意。
    virtual_router_id 51
    priority 100             #优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.132.200
    }
}
virtual_server 192.168.132.200 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP
    real_server 192.168.132.251 80 {       #第一台HTTP
        weight 3
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server 192.168.132.252 80 {        #第二台HTTP
        weight 3
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server 192.168.132.242 80 {         #第三台HTTP
        weight 3
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

然后启动Keepalived服务,有时候虽然提示启动成功,但是未必,因为Keepalive并没有对配置文件的校验功能,最好查看一下日志。

service keepalived start    //启动服务
tail -f /var/log/message     //查看日志

启动成功之后,浏览器访问192.168.132.200观察变化。

OK,分流成功。

然后我们试着关掉一台HTTP服务器,观察访问发现,其他两台仍然可以正常访问,然后再启动一下刚才关闭的服务器,又恢复了之前。

LVS负载均衡备机:

global_defs {
#   notification_email {
#       [email protected]
#   }
#   notification_email_from [email protected]
#   smtp_server smtp.exmail.qq.com
#   smtp_connect_timeout 30
    router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state BACKUP            #备
    interface eth1          #在负载均衡主机上查看一下ip,这里是eth1。这里要注意。
    virtual_router_id 51
    priority 99             #优先级,低于主机
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.132.200
    }
}
virtual_server 192.168.132.200 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP
    real_server 192.168.132.251 80 {       #第一台HTTP
        weight 3
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server 192.168.132.252 80 {        #第二台HTTP
        weight 3
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server 192.168.132.242 80 {         #第三台HTTP
        weight 3
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

配置完成之后,然后试着关掉主机,继续访问192.168.132.200,一切正常,主机开机之后,主机继续做大哥,备机继续待命。

完毕!

时间: 2024-10-11 21:04:23

Linux CentOs集群LVS负载均衡的实现的相关文章

使用LVS+DR搭建集群实现负载均衡

使用LVS+DR搭建集群实现负载均衡 DR模式的概述与工作原理 DR模式服务概述:        Direct Routing(直接路由) --在同一个地域,同一个网段 Director分配请求到不同的real server.real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接.负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性.Direct Routing由与采用物理层(修改MAC地址)技术,因此所有服务器都必须在一

使用LVS+NAT搭建集群实现负载均衡

使用LVS+NAT搭建集群实现负载均衡 LVS集群简介    计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集群计算机通常用来改进单个计算机的计算速度和/或可靠性.一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多        LVS集群分布图   集群有三种类型:           

在Linux上使用Nginx为Solr集群做负载均衡

在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxyserver,和Apache,效果均很差,两台服务器做了负载均衡之后并发响应速度还没单台不做负载均衡的速度快.最后使用nginx,效果很不错,下面将在Linux上安装步骤记述一下. 1        安装准备 nginx软件版本:nginx 1.2.5 安装包:rhel_nginx-1.2.5-1.

用apache和tomcat搭建集群,实现负载均衡

型的企业应用每天都需要承受巨大的访问量,在着巨大访问量的背后有数台服务器支撑着,如果一台服务器崩溃了,那么其他服务器可以使企业应用继续运行,用户对服务器的运作是透明化的,如何实现这种透明化呢?由如下问题需要解决. 一.Session的复制 二.如何将请求发送到正常的服务器 针对以上问题,可以使用群集和负载均衡来解决,整体架构如下:  中间由一台服务器做负载均衡(Load Balancer),它将所有请求,根据一定的负载均衡规则发送给指定的群集服务器(Cluster),群集服务器拥有着相同的状态和

Web服务器Tomcat集群与负载均衡技术

我们曾经介绍过三种Tomcat集群方式的优缺点分析.本文将介绍Tomcat集群与负载均衡技术具体实施过程. 在进入集群系统架构探讨之前,先定义一些专门术语: 1. 集群(Cluster):是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信.应用程序可以通过网络共享内存进行消息传送,实现分布式计算机. 2. 负载均衡(Load Balance):先得从集群讲起,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同硬件构成的计算机.如

Nginx实现集群的负载均衡配置过程详解

Nginx实现集群的负载均衡配置过程详解 Nginx 的负载均衡功能,其实实际上和 nginx 的代理是同一个功能,只是把代理一台机器改为多台机器而已. Nginx 的负载均衡和 lvs 相比,nginx属于更高级的应用层,不牵扯到 ip 和内核的修改,它只是单纯地把用户的请求转发到后面的机器上.这就意味着,后端的 RS 不需要配置公网. 一.实验环境 Nginx 调度器 (public 172.16.254.200 privite 192.168.0.48)RS1只有内网IP (192.168

nginx反向代理tomcat集群达到负载均衡,同时使用proxy_cache做web缓存

Nginx最早是作为一款优秀的反向代理软件,以高并发下的卓越性能被越来越多的用户所用户,国内最早研究nginx的是张宴,该大牛的博客地址:http://zyan.cc/ .但是随着需求的发展,nginx的功能已经不再单单是反向代理,现在已经更倾向作为web容器. Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对

结合Apache和Tomcat实现集群和负载均衡 JK 方式

本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实操经历记录而成,碰到些出入,以及个别地方依据个人的习惯,所以在一定程度上未能保持原文的完整性,还望原著者海涵. 因原文中有较多的贴图,如若各位读者一时不想亲自动手而直想看到配置效果,可查看原文. 一:软件环境 1. Apache: apache 2.0.55 (由http://httpd.apache.org/进入下载)(点击下载apache 2.0.55) 2. Tomcat: Tomcat 5.5.25 (由http:/

linux之集群LVS

负载均衡集群:LVS haproxy 高可用集:keepalived RHCS(主要用于金融机构) 一.LVS配置负载均衡集群 两种模式: 1.LVS/NAT模式负载均衡集群 2.LVS/DR模式负载均衡集群 三种工作模式 1.NAT网络地址转换模式,运用的时NAT地址转换 2.TUN模式:隧道模式,工作中不常用 3.DR模式:路由模式,不用做地址转换 1.配置LVS/NAT模式负载均衡集群 LVS服务器对客户端访问应用服务器时,对客户端到应用服务器的链接进行负载均衡,确保 应用服务器按照LVS