linux集群系列(3) --- LVS之负载均衡集群DR实例

一、简介

    1.1.  负载均衡集群:LB (load balancing)

LVS 是linux virtual server 的简写,即linux的虚拟服务器,是一个虚拟的服务器集群系统。ip负载均衡技术是在负载调度器的实现技术中效率最高的,在已有的ip负载均衡技术中,主要通过网络地址转换(即VS/NAT 技术)、由于使用nat技术会使分派器成为瓶颈,所以提出了通过ip隧道实现虚拟服务器(即VS/TUN)和通过直接路由实现虚拟服务器的方法即VS/DR。 VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。

LVS采用ip负载均衡技术和基于内容的请求分发技术。调度器具有很好的吞吐率,将请求均衡的转移到不同的服务器上执行,且调度器自动屏蔽故障的服务器,从而将一组服务器构成了一个高性能、高可用的虚拟服务器 。整个服务器对客户完全透明,而且无需修改客户端和服务器端的程序,所以有透明性、可伸缩性、高可用性和易管理性优点。

    1.2.  DR模型:

如下图所,外网用户直接访问Director上的VIP地址,Director将请求分派给real server 进行处理,当realserver处理后不再经过Director,而是直接送至客户端,绕开了Director,使Director不再成为瓶颈。可以有大量的节点,最多可以有100个节点

    1.3.  LVS调度算法:

当Director收到请求后,需要将请求发送给Real server 进行处理,但是发送哪一台服务器就要按照算法进行分派。

共有十总调度算法:

固定算法4个:按照设置的算法执行,不考虑现实状况

RR:Round-robin 轮循调度算法

WRR:Weighted round-robin 加权的轮循调度算法,权值越大越优先

DH:Destination hashing 目标hash 同一个ip用户的请求都发送给其中的一台固定的realserver

SH:Source hashing 来源hash

当director的前端同时连接有两台或多台路由器或防火墙时,用户通过通过其中一台路由器(或防火墙)将请求发送给director,realserver处理完后将仍然从进入的路由器(或防火墙)的接口出去

     动态算法6个:根据Director中的跟踪表,查看每个服务器的active 和inactive 个数进行调整

LC:least-connection :最小连接

查看每个节点的active 和inactive数量,根据active* 256+inactive,哪个结果小,就将请求发送给该服务器

WLC:weighted least-connection 加权的最小连接,

计算方法:(active* 256+inactive)/权值,哪个结果小,就将请求发送给该服务器

SED:最少的期望权值

只考虑active激活的连接,不考虑inactive连接。计算方法:(active+1)*256

NQ:永不排队

若果某个节点未处于活动连接,就将下一个请求发送给该节点进行处理

LBLC:

当director和服务器之间有squid或varnish缓存服务器时,需要在director上设置,使请求分别到两台缓存服务器上

LBLCR:在LBLC的基础上,

若其中一部分人不在访问网站,则下面一台缓存服务器将不会有页面缓存,这时候该缓存服务器将会空闲下来。该算法使下面一台缓存服务器自动复制上面一台缓存服务器的网页,用于提供缓存。

二、DR类型手动配制示例

    2.1. 实验环境:

VIP=10.109.134.210

DIP=10.109.134.201

RIP1=10.109.134.202

RIP2=10.109.134.203

    2.2. Director的配置示例:

[[email protected]~]# ifconfig eth0:0 10.109.134.210/22

[[email protected]~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:50:56:B9:0B:B9

inet addr:10.109.134.201  Bcast:10.109.135.255  Mask:255.255.252.0

eth0:0    Link encap:Ethernet  HWaddr 00:50:56:B9:0B:B9

inet addr:10.109.134.210  Bcast:10.109.135.255  Mask:255.255.252.0

UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1

[[email protected]~]# route add -host 10.109.134.210 dev eth0:0

    2.2.1. 测试远程访问网页是否正常:

[[email protected]~]# curl http://10.109.134.202

test202

[[email protected]~]# curl http://10.109.134.203

<html><h1>test203</h1></html>

    2.2.2. 配制LVS

[[email protected]]# ipvsadm -C

[[email protected]]# ipvsadm -A -t 10.109.134.210:80 -s wlc

[[email protected]]# ipvsadm -a -t 10.109.134.210:80 -r 10.109.134.202 -g -w 2

[[email protected]]# ipvsadm -a -t 10.109.134.210:80 -r 10.109.134.203 -g -w 1

[[email protected]]# ipvsadm -L -n

IPVirtual Server version 1.2.1 (size=4096)

ProtLocalAddress:Port Scheduler Flags

-> RemoteAddress:Port        Forward Weight ActiveConn InActConn

TCP  10.109.134.210:80 wlc

-> 10.109.134.203:80         Route  1      0       0

-> 10.109.134.202:80         Local  2      0       0

    2.3. RealServer1的配置示例:

[[email protected]~]# ifconfig -a

eth0 Link encap:Ethernet  HWaddr 00:50:56:B9:76:D1

inet addr:10.109.134.202 Bcast:10.109.135.255 Mask:255.255.252.0

[[email protected]~]# cd  /proc/sys/net/ipv4/conf

[[email protected]]# echo 1 > lo/arp_ignore

[[email protected]]# echo 1 > all/arp_ignore

[[email protected]]# echo 2 > all/arp_announce

[[email protected]]# echo 2 > lo/arp_announce

[[email protected]]# cat lo/arp_announce

2

[[email protected]]# ifconfig lo:0 down

[[email protected]]# ifconfig lo:0 10.109.134.210 broadcast 10.109.134.210 netmask255.255.255.255 up

[[email protected]]# iptables –F

    2.4. RealServer2的配置示例:

[[email protected]~]# ifconfig -a

eth0      Link encap:Ethernet  HWaddr 00:50:56:B9:42:5D

inet addr:10.109.134.203  Bcast:10.109.135.255  Mask:255.255.252.0

[[email protected]~]# cd /proc/sys/net/ipv4/conf

[[email protected]]# echo 1 > lo/arp_ignore

[[email protected]]# echo 1 > all/arp_ignore

[[email protected]]# echo 2 > all/arp_announce

[[email protected]]# echo 2 > lo/arp_announce

[[email protected]]# cat lo/arp_announce

2

[[email protected]]# ifconfig lo:0 down

[[email protected]]# ifconfig lo:0 10.109.134.210 broadcast 10.109.134.210 netmask255.255.255.255 up

[[email protected]]# iptables -F

    2.5. 实例截图:

三、DR类型服务自动配制示例

    3.1. Director的配置脚本:

#!/bin/bash

#

# LVS script for VS/DR

# chkconfig: - 90 10

#

. /etc/rc.d/init.d/functions

#

VIP=10.109.134.210

DIP=10.109.134.201

RIP1=10.109.134.202

RIP2=10.109.134.203

PORT=80

RSWEIGHT1=2

RSWEIGHT2=5

#

case "$1" in

start)

/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up

/sbin/routeadd -host $VIP dev eth0:0

# Since this is the Director we must be able toforward packets

echo 1 >/proc/sys/net/ipv4/ip_forward

# Clear all iptables rules.

/sbin/iptables -F

# Reset iptables counters.

/sbin/iptables -Z

# Clear all ipvsadm rules/services.

/sbin/ipvsadm-C

# Add an IP virtual service for VIP 192.168.0.219port 80

# In this recipe, we will use the round-robinscheduling method.

# In production, however, you should use a weighted,dynamic scheduling method.

/sbin/ipvsadm-A -t $VIP:80 -s wlc

# Now direct packets for this VIP to

# the real server IP (RIP) inside the cluster

/sbin/ipvsadm-a -t $VIP:80 -r $RIP1 -g -w $RSWEIGHT1

/sbin/ipvsadm-a -t $VIP:80 -r $RIP2 -g -w $RSWEIGHT2

/bin/touch/var/lock/subsys/ipvsadm &> /dev/null

;;

stop)

# Stop forwarding packets

echo 0 >/proc/sys/net/ipv4/ip_forward

# Reset ipvsadm

/sbin/ipvsadm-C

# Bring down the VIP interface

/sbin/ifconfig eth0:0 down

/sbin/routedel $VIP

/bin/rm -f/var/lock/subsys/ipvsadm

echo"ipvs is stopped..."

;;

status)

if [ ! -e/var/lock/subsys/ipvsadm ]; then

echo"ipvsadm is stopped ..."

else

echo"ipvs is running ..."

ipvsadm -L-n

fi

;;

*)

echo"Usage: $0 {start|stop|status}"

;;

esac

    3.2. RealServer的配置脚本:

#!/bin/bash

#

# Script to start LVS DR real server.

# chkconfig: - 90 10

# description: LVS DR real server

#

. /etc/rc.d/init.d/functions

VIP=10.109.134.210

host=`/bin/hostname`

case "$1" in

start)

# Start LVS-DR real server on this machine.

/sbin/ifconfig lo down

/sbin/ifconfig lo 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

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

/sbin/route add -host $VIP dev lo:0

;;

stop)

# StopLVS-DR real server loopback device(s).

/sbin/ifconfig lo:0 down

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

;;

status)

#Status of LVS-DR real server.

islothere=`/sbin/ifconfig lo:0 | grep $VIP`

isrothere=`netstat -rn | grep "lo:0" | grep $VIP`

if [ !"$islothere" -o ! "isrothere" ];then

# Either the route or the lo:0 device

#not found.

echo "LVS-DR real server Stopped."

else

echo "LVS-DR real server Running."

fi

;;

*)

#Invalid entry.

echo "$0: Usage: $0 {start|status|stop}"

exit 1

;;

esac

---END---

时间: 2024-08-01 22:44:57

linux集群系列(3) --- LVS之负载均衡集群DR实例的相关文章

linux集群系列(4) --- LVS之负载均衡集群 --- 持久连接

一.简介 1.1. lvs的持久连接简介 先说说lvs的持久连接能干什么:无论你选择lvs的何种转发策略,如果你想确定来自某一个客户端的所有连接均返回到同一台Real Server,就需要LVS的持久连接了.经常用于SSL,建立一个SSL连接,需要交换SSL密钥,当启用持久性连接时,只需要做一次验证即可. 显然LVS持久连接的定义也就知道了:某一个周期(时间段)之内,来自于同一个用户的请求,都转向同一个RS. 1.2. 持久连接模板: 当使用LVS持久连接时,分发器使用一个连接跟踪(持久连接模板

linux下lvs搭建负载均衡集群

常用开源集群软件有:lvs,keepalived,haproxy,nginx,apache,heartbeat 常用商业集群硬件有:F5,Netscaler,Radware,A10等 一.LVS介绍 LVS是linux virtual server的简写linux虚拟服务器,是一个虚拟的服务器集群系统,可以再unix/linux平台下实现负载均衡集群功能.该项目在1998年5月由章文嵩博士组织成立. LVS的三种工作模式:1.VS/NAT模式(Network address translatio

LVS搭建负载均衡集群

1.集群的概念: 服务器集群就是将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器 2.集群的分类: 高可用集群(HA) 主要用于高可用解决方案的实现,节点间以主备形式,实现容灾:在大型故障的情况下实现快速恢复,快速提供服务 工作方式: 主从方式:主机工作,备机监控 互为主从:两服务器同时在线,一台服务器故障可切换到另一台上.有效的利用服务器资源,但当服务器故障时候,将可能导致服务器负载过大 多台服务器主从:大部分服务器在线使用,小部分监控:若有部分服务器故障,可切换到指定

使用lvs搭建负载均衡集群

有时候,单台服务器的性能可能无法应付大规模的服务请求,且其一旦出现故障,就会造成用户在一段时间内无法访问.通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益. 集群是一组相互独立的.通过网络互联的计算机组,并以单一系统的模式加以管理,或用于分摊负载,或用于增强可靠性,或用于高速计算. 一.集群类型 LB:Load Balancing,负载均衡集群,用于消除单点故障,当一个节点出现故障而无法正常提供服务时,自动.快速地切换到另外的节点上去:常见软件或实现方式有l

keepalived+LVS实现负载均衡集群

keepalived keepalived基于vrrp(虚拟路由冗余)协议,是vrrp协议在linux主机上的实现,早先是设计出来和LVS协同工作的,在配置文件中可以直接支持生成ipvs规则 vrrp协议: vrrp协议将route_id相同的主机或路由绑定在一起组成一个虚拟路由组,一个组内有一个master和多个backup,master每隔一段时间通过组播的方式向整个虚拟路由组发送一个数据包告诉所有backup在线信息. 当多个路由器组成了一个虚拟组,vrrp或给这个虚拟主生成一个虚拟ip和

Centos7搭建lvs+keepalive负载均衡集群

keepalived简介 keepalived是分布式部署解决系统高可用的软件,结合lvs(LinuxVirtual Server)使用,解决单机宕机的问题. keepalived是一个基于VRRP协议来实现IPVS的高可用的解决方案.对于LVS负载均衡来说,如果前端的调度器direct发生故障,则后端的realserver是无法接受请求并响应的.因此,保证前端direct的高可用性是非常关键的,否则后端的服务器是无法进行服务的.而我们的keepalived就可以用来解决单点故障(如LVS的前端

搭建LVS+Keepalived负载均衡集群

这两天学习了LVS+Keepalived负载均衡的搭建.网上的教程非常多,可是动起手来遇到不少问题. 如今把自己的搭建过程以及遇到的一些问题给分享下. 硬件环境: Macbook 8G内存.250G SSD,双核 软件环境: 因为资源有限.搭建了4个虚拟机. 虚拟机 [[email protected] work]# uname -a Linux rs-1 2.6.18-238.el5 #1 SMP Thu Jan 13 15:51:15 EST 2011 x86_64 x86_64 x86_6

Linux集群:LVS搭建负载均衡集群(二)

一.DR模式LVS搭建 1.准备工作 调度器dir:192.168.242.128 真实服务器rs1:192.168.242.129,网关恢复为之前的原始网关 真实服务器rs2:192.168.242.130,网关恢复为之前的原始网关 VIP:192.168.242.110 2.dir上编写脚本 [[email protected] ~]# vim /usr/local/sbin/lvs_dr.sh #! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forw

【LVS】负载均衡集群NAT模式

LVS (Linux Virtual Server)是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.LVS可以实现LINUX平台下的简单负载均衡. 其中LVS/NAT是一种最简单的方式,所有的RealServer只需要将自己的网关指向Director即可. LVS负载均衡的NAT模式 一.实验准备 在VMware Workstation虚拟机环境下,准备三台服务器,一台作为director, 两台作为real server. 二.网络配置 director需要配置两