LVS负载均衡群集

L V S

  • 一、群集概述
    • 1.1 群集的含义
    • 1.2 群集的类型
      • 1.2.1 负载均衡群集 LB
      • 1.2.2 高可用群集 HA
      • 1.2.3 高性能运输群集 HPC
    • 1.3 负载均衡集群的结构
  • 二、LVS概述
    • 2.1 简介
    • 2.2 LVS工作原理
    • 2.3 LVS 的三种工作模式简介
      • 2.3.1 NAT模式
      • 2.3.2 TUN模式
      • 2.3.3 DR 模式
      • 2.3.4 对比
    • 2.3 LVS 调度算法
      • 2.3.1 固定调度算法:rr、wrr、dh、sh
      • 2.3.2 动态调度算法:wlc、lc、lblc
    • 2.4 ipvsadm工具
      • 2.4.1 ipvsadm工具的功能
      • 2.4.2 ipvsadm工具选项
  • 三、LVS-NAT模式详解
    • 3.1 LVS-NAT模式配置思路
    • 3.2 部署实例
      • 1. 配置 NFS 共享存储
      • 2. 配置节点服务器
      • 3. 配置负载调度器
      • 4. 访问测试
  • 四、LVS-DR模式详解
    • 4.1 数据包流向分析
    • 4.2 IP包头及数据帧头信息的变化
    • 4.3 DR模式的特点
    • 4.4 LVS-DR中的ARP问题及解决方法
      • 4.4.1 ARP问题1-相同IP
      • 4.4.2 ARP问题2-响应报文的源IP
      • 4.4.3 预防方法
    • 4.5 LVS-DR模式部署实例
      • 1.配置负载调度器
      • 2.部署NFS共享存储
      • 3.配置节点服务器
      • 4.浏览器访问测试
  • 五、小结
    • 5.1 简述LVS三种工作模式,简述区别?
    • 5.2 列举你知道的LVS调度算法?
    • 5.3 LVS的工作模式及其工作过程

一、群集概述

1.1 群集的含义

LVS负载均衡群集_第1张图片

群集别名集群(Cluster)

由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机。

1.2 群集的类型

1.2.1 负载均衡群集 LB

定义

提高系统响应效率,处理更多的访问请求,减少延迟,实现高并发、高负载的能力。

典型代表

软件类:LVS Nginx HAProxy 等

硬件类:F5 绿盟

1.2.2 高可用群集 HA

定义

提高系统可靠性,减少中断时间,确保服务的连续性(通常使用 N 个 9 来代表高可用的指标)。

典型代表

Keepalived heartbeat

1.2.3 高性能运输群集 HPC

通过云计算或分布式计算获取高性能的CPU、内存等资源,来提高整体运算能力。

1.3 负载均衡集群的结构

LVS负载均衡群集_第2张图片

第一层,负载调度器(Load Balancer或Director)

负载均衡层

访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集IP地址。

通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。

第二层,服务器池(Server Pool)

web应用层

群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求

当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。

第三层,共享存储(Share Storage)

为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。

共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器。

二、LVS概述

2.1 简介

LVS(Linux Virtual Server)是基于Linux系统实现的负载均衡解决方案。

它利用Linux的IP负载均衡(IPVS)内核模块来实现负载均衡功能。

IPVS在内核空间中拦截并分发进入的网络流量,将流量按照一定的负载均衡算法分发给后端多台服务器,实现负载均衡的目的。

这样可以提高系统的性能、可伸缩性和高可用性。

LVS现在已成为Linux内核的一部分,默认编译为ip_vs模块,必要时能够自己调用。

modprobe ip_vs

cat /proc/net/ip_vs

LVS负载均衡群集_第3张图片

2.2 LVS工作原理

LVS负载均衡群集_第4张图片

1)当用户向负载均衡器(Director Server)发起请求,调度器将请求发送至内核空间;

2)PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发送到INPUT链;

3)IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已经定义好的集群服务进行对比,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发送到POSTROUTING链;

4)POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送到后端的服务器;

2.3 LVS 的三种工作模式简介

2.3.1 NAT模式

地址转换
LVS负载均衡群集_第5张图片

调度器会作为所以节点服务器的默认网关,也是客户端的访问入口和节点服务器返回响应消息的出口,也就是说调度器会承载双向数据流量的负载压力,可能会成为整个群集的性能瓶颈。

由于节点服务器都处于内网环境,使用私网IP地址,所以具有一定安全性。

2.3.2 TUN模式

IP隧道

LVS负载均衡群集_第6张图片

调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。

但是由于节点服务器需要部署在不同位置的公网环境中,需要具有独立的公网IP,调度器与节点服务器是通过专用的IP隧道实现相互通信的,因此IP隧道模式的成本较高、安全性较低,且IP隧道需要额外的封装和解封装,性能会受到一定的影响。

2.3.3 DR 模式

直接路由
LVS负载均衡群集_第7张图片

调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。(与NAT模式的区别)
节点服务器与调度器是部署在同一个物理网络内,因此不需要建立专用的IP隧道。(与TUN模式的区别)
DR模式是企业首选的LVS模式。

2.3.4 对比

NAT:通过网络地址转换实现的虚拟服务器,大并发访问时,调度器的性能成为瓶颈;
DR:使用路由技术实现虚拟服务器,节点服务器需要配置VIP,注意MAC地址广播;
TUN:通过隧道方式实现虚拟服务器。

工作模式 特点 区别 应用情况
NAT 通过网络地址转换实现的虚拟服务器,大并发访问时,调度器的性能成为瓶颈 调度器作为网关,是访问请求得到入口,也是响应访问的出口,在高并发场景当中负载压力很高,NAT地址转换可以提高安全性,但使用性能降低一半 因性能使用率问题,实际应用不多
DR 使用路由技术实现虚拟服务器,节点服务器需要配置VIP,注意MAC地址广播 调度器仅是访问请求的入口,响应数据不经过调度器。节点服务器和调度器在同一个物理网络中,数据转发不受额外影响 该模式是生产环境中最常用的
TUN 通过隧道方式实现虚拟路由器 调度器仅是访问请求的入口,响应数据不经过调度器。但是需要大量公网IP,还需要专用的IP隧道,数据转发受IP隧道影响 因公网IP问题,实际应用不多,常用于大型企业的异地灾备

2.3 LVS 调度算法

rr 轮询 wrr 加权轮询 sh 源地址哈希 dh 目的地址哈希 lc 最小连接 wlc 加权最小连接 lblc 基于地址的最小连接0

2.3.1 固定调度算法:rr、wrr、dh、sh

rr:轮询算法,将请求依次分配给不同的rs节点,即RS节点中均摊分配。适合于RS所有节点处理性能接近的情况。
wrr:加权轮询调度,一句不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多,相同权值的RS得到相同数目的连接数。
dh:目的地址哈希调度(destination hashing)以目的地址为关键字查找一个静态hash表来获得所需RS。
sh:源地址哈希调度(source hashing)以源地址为关键字查找一个静态hash表来获得需要的RS。

2.3.2 动态调度算法:wlc、lc、lblc

wlc:加权最小连接数调度,架设各台RS的权值依次为Wi,当前tcp连接数依次为Ti,依次去Ti/Wi为最小的RS作为下一个分配的RS。
lc:最小连接数调度(least-connection),ipvs表存储了所有活动的连接。LB会比较连接请求放到当前连接最少的RS。
lblc:基于地址的最小连接数(locality-based least-connection),将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。

2.4 ipvsadm工具

yum install -y ipvsadm

LVS负载均衡群集_第8张图片

2.4.1 ipvsadm工具的功能

LVS群集创建与管理:

  1. 创建虚拟服务器
  2. 添加、删除服务器节点
  3. 查看群集及节点情况
  4. 保存负载分配策略

2.4.2 ipvsadm工具选项

常用选项 说明
-A 添加虚拟服务器
-D 删除整个虚拟服务器
-s 指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc)
-a 表示添加真实服务器(节点服务器)
-d 删除某一个节点
-t 指定VIP地址及TCP端口
-r 指定RIP地址及TCP端口
-m 表示使用nat群集模式
-g 表示使用DR模式
-i 表示使用TUN模式
-w 设置权重(权重为0时表示暂停节点)
-p 60 表示保持长连接60秒
-l 列表查看LVS虚拟服务器(默认为查看所有)
-n 以数字形式显示地址、端口等信息,常与“-l”选项组合使用

三、LVS-NAT模式详解

3.1 LVS-NAT模式配置思路

1)配置 NFS 共享存储;
2)节点服务器安装 Web 服务,注意:默认网关要指向 调度器的IP地址,测试的时候关闭连接保持;
3)调度服务器要开启 IP路由转发 功能和设置 SNAT 等 iptables 规则,安装 ipvsadm 工具,配置虚拟服务器和真实节点服务器相关配置;
4)客户端测试的时候网关要指向 调度器的IP地址。

3.2 部署实例

调度器:内网关 ens33:192.168.2.10;外网关ens36:12.0.0.10
Web节点服务器1:192.168.2.100(网关设置为192.168.122.10)
Web节点服务器2:192.168.2.101(网关设置为192.168.122.10)
NFS服务器:192.168.2.88
客户端:12.0.0.88

1. 配置 NFS 共享存储

systemctl disable firewalld.service --now
setenforce 0

yum install -y nfs-utils rpcbind
systemctl start rpcbind nfs


mkdir /opt/test1 /opt/test2
chmod 777 /opt/test1 /opt/test2
echo "This is test1 web" > /opt/test1/index.html
echo "This is test2 web" > /opt/test2/index.html

LVS负载均衡群集_第9张图片

#nfs
vim /etc/exports
 
/usr/share *(ro,sync)
/opt/test1 192.168.2.0/24(rw,sync)
/opt/test2 192.168.2.0/24(rw,sync)
 
exportfs -rv
#发布共享
showmount -e

LVS负载均衡群集_第10张图片

2. 配置节点服务器

以节点服务器1为例,节点服务器2的配置类似。

#web-1
systemctl disable firewalld
setenforce 0

yum install -y httpd
systemctl start httpd
yum install -y nfs-utils rpcbind
systemctl start rpcbind

mount.nfs 192.168.122.88:/opt/test1 /var/www/html
[root@web_server1 ~]# vim /etc/fstab
#末行写入,设置自动挂载
192.168.122.88:/opt/test1                 /var/www/html           nfs     defaults,netdev 0 0
#web2 
mount.nfs 192.168.122.88:/opt/test2 /var/www/html
vim /etc/fstab
#末行写入,设置自动挂载
192.168.122.88:/opt/test2                 /var/www/html           nfs     defaults,netdev 0 0

3. 配置负载调度器

systemctl disable firewalld
setenforce 0

(1)配置SNAT转发规则

#开启路由转发
vim /etc/sysctl.conf
#末行写入
net.ipv4.ip_forward = 1
sysctl -p

iptables -t nat -A POSTROUTING -s 192.168.122.0/24 -o ens36 -j SNAT --to-source 12.0.0.10

LVS负载均衡群集_第11张图片

(2)加载LVS内核模块

for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs | grep -o "^[^.]*");do echo $1; /sbin/modinfo -F filename $1 > /dev/null 2>&1 && /sbin/modprobe $1;done 

(3)安装ipvsadm管理工具

yum install -y ipvsadm
#启动服务前需保存负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

(4)配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)

ipvsadm -C #清除原有策略

#添加策略
ipvsadm -A -t 12.0.0.10:80 -s rr
ipvsadm -a -t 12.0.0.10:80 -r 192.168.2.100:80 -m -w 1
ipvsadm -a -t 12.0.0.10:80 -r 192.168.2.101:80 -m -w 1

ipvsadm #启用策略

ipvsadm -ln
#查看节点状态,Masq代表NAT模式

ipvsadm-save > /etc/sysconfig/ipvsadm
#保存策略

LVS负载均衡群集_第12张图片

4. 访问测试

浏览器访问 http://12.0.0.10/ ,多次刷新

LVS负载均衡群集_第13张图片

LVS负载均衡群集_第14张图片

四、LVS-DR模式详解

LVS负载均衡群集_第15张图片

4.1 数据包流向分析

1)客户端发送请求到 Director Server(负载均衡器),请求的数据报文(源 IP 是 CIP,目标 IP 是 VIP)到达内核空间;

2)Director Server 和 Real Server 在同一个网络中,数据通过二层数据链路层来传输;

3)内核空间判断数据包的目标IP是本机VIP,此时IPVS(IP虚拟服务器)比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。修改源 MAC 地址为 Director Server 的 MAC地址,修改目标 MAC 地址为 Real Server 的 MAC 地址,源 IP 地址与目标 IP 地址没有改变,然后将数据包发送给 Real Server;

4)到达 Real Server 的请求报文的 MAC 地址是自身的 MAC 地址,就接收此报文。数据包重新封装报文(源 IP 地址为 VIP,目标 IP 为 CIP),将响应报文通过 lo 接口传送给物理网卡然后向外发出;

5)Real Server 直接将响应报文传送到客户端。

4.2 IP包头及数据帧头信息的变化

LVS负载均衡群集_第16张图片

  1. Client向目标VIP发出请求,Director(负载均衡器)接收
    LVS负载均衡群集_第17张图片

  2. Director根据负载均衡算法选择Real Sever_1,不修改也不封装IP报文,而是将数据帧的MAC地址改为Real Server_1的MAC地址,然后在局域网上发送
    LVS负载均衡群集_第18张图片

  3. Real Server_1收到这个数据帧,解封装后发现目标IP与本机匹配(Real Server事先绑定了VIP),于是处理这个报文。随后重新封装报文,将响应报文通过lo接口传送给物理网卡然后向外发出

  4. Client将收到回复报文。Client认为得到正常的服务,而不会知道是哪一台服务器处理的。
    注意:如果跨网段,则报文通过路由器经由Internet返回给用户。

4.3 DR模式的特点

1)Director Server和Real Server必须在同一个物理网络中;

2)Real Server可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接访问;

3)Director Server作为群集的访问入口,但不作为网关使用;

4)所有的请求报文经由Real Server,但回复响应报文不能经过Director Server;

5)Real Server的网关不允许指向Director Server IP,即Real Server发送的数据包不允许经过Director Server;

6)Real Server上的lo接口配置VIP的IP地址。

4.4 LVS-DR中的ARP问题及解决方法

4.4.1 ARP问题1-相同IP

原因

在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址。
在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱。

解决思路及方法

当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播。
只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播。
对节点服务器进行处理,使其不响应针对VIP的ARP请求。

  1. 使用虚接口lo:0承载VIP地址;
  2. 设置内核参数arp_ignore=1(系统只响应目的IP为本地IP的ARP请求)。

4.4.2 ARP问题2-响应报文的源IP

原因

Real Server返回报文(源IP是VIP)经由路游记转发,重新封装报文时,需要先获取路由器的MAC地址。
发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP接口,如ens33接口。
LVS负载均衡群集_第19张图片

路由器根据ARP表项,会将新来的请求报文转发给Real Server,导致Director的VIP失效。

LVS负载均衡群集_第20张图片

解决方法

对节点服务器进行处理,设置内核参数arp_announce=2(系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址)

4.4.3 预防方法

修改/etc/sysctl.conf文件,末行添加如下内容:

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
#arp_ignore = 1
#防止网关路由器发送ARP广播时,调度器和节点服务器都进行相应,导致ARP缓存表的紊乱,不对非本地物理网卡IP的ARP请求进行响应,因为VIP是承载在lo:0。
#arp_announce = 2
#系统不使用响应数据包的源IP地址(VIP)来作为本机进行ARP请求报文的源IP地址,而使用发送报文的物理网卡IP地址作为ARP请求报文的源IP地址,这样可以防止网关路由器接收到源IP地址为VIP的ARP请求报文后又更新ARP缓存表,导致外网再发送请求时,数据包到不了调度器。

4.5 LVS-DR模式部署实例

DR服务器:192.168.122.10
Web服务器1:192.168.122.100
Web服务器2:192.168.122.101
VIP服务器:192.168.122.188
nfs服务器:192.168.122.88

1.配置负载调度器

#关闭防火墙和selinux
systemctl stop firewalld
setenforce 0

#安装ipvsadm
yum install -y ipvsadm

配置虚拟IP地址

cd /etc/sysconfig/network-scripts

cp ifcfg-ens33 ifcfg-ens33:0
#若是隧道模式,复制为ifcfg-tun10

vim ifcfg-ens33:0
 
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.122.188
NETMASK=255.255.255.255
 
[root@director network-scripts]# ifconfig ens33:0
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.122.188  netmask 255.255.255.255  broadcast 192.168.122.188
        ether 00:0c:29:59:be:be  txqueuelen 1000  (Ethernet)

调整proc响应系统
由于LVS负载调度器和各节点需要共用VIP地址,需要关闭icmp的重定向,不充当路由器。

vim /etc/sysctl.conf
#末行写入以下内容
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
 
sysctl -p

配置负载分配策略

ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -C

#添加策略,若隧道模式,-g替换为-i
ipvsadm -A -t 192.168.2.188:80 -s rr
ipvsadm -a -t 192.168.2.188:80 -r 192.168.122.100:80 -g
ipvsadm -a -t 192.168.2.188:80 -r 192.168.122.101:80 -g

#保存策略并查看
ipvsadm
ipvsadm -ln  

LVS负载均衡群集_第21张图片

2.部署NFS共享存储

#关闭防火墙和selinux
systemctl stop firewalld
setenforce 0

yum install -y nfs-utils rpcbind
mkdir /opt/test1 /opt/test2
chmod 777 /opt/test1 /opt/test2
echo "This is test1 web" > /opt/test1/index.html
echo "This is test2 web" > /opt/test2/index.html

#编辑共享目录
vim /etc/exports
 
/usr/share *(ro,sync)
/opt/test1 192.168.2.0/24(rw,sync)
/opt/test2 192.168.2.0/24(rw,sync)
 
#启动服务 
systemctl start rpcbind
systemctl start nfs
#查看目录
showmount -e

LVS负载均衡群集_第22张图片

3.配置节点服务器

web1(192.168.2.100)

配置虚拟IP地址(VIP:192.168.2.188)
此地址仅用作发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。

因此使用虚接口lo:0来承载VIP地址,并为本机添加一条路由记录,将访问VIP的数据限制在本地,以避免通信紊乱。

cd /etc/sysconfig/network-scripts
#配置lo:0
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
 
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.122.188
NETMASK=255.255.255.255
#注意:子网掩码必须全为1
 
ifup lo:0
ifconfig lo:0
route add -host 192.168.122.188 dev lo:0
#临时添加

vim /etc/rc.local 
#末行添加,加入开机自启动
/sbin/route add -host 192.168.122.188 dev lo:0
 
chmod +x /etc/rc.d/rc.local 

调整内核的ARP响应参数以组织更新VIP的MAC地址,避免发生冲突

vim /etc/sysctl.conf 
 
net.ipv4.conf.lo.arp_ignore = 1
#系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce = 2
#系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
 
sysctl -p
  1. 安装服务,进行nfs挂载
#服务安装
yum install -y nfs-utils rpcbind httpd

#启动服务
systemctl start rpcbind
systemctl start nfs
systemctl start httpd

#将共享目录挂载到本机
mount.nfs 192.168.122.88:/opt/test1 /var/www/html

web2(192.168.2.101)

web2和web1的配置相同,除了最后的nfs挂载

mount.nfs 192.168.2.88:/opt/test2 /var/www/html

4.浏览器访问测试

在客户端使用浏览器访问 [http://192.168.122.188](http://192.168.122.188/)

LVS负载均衡群集_第23张图片
LVS负载均衡群集_第24张图片

五、小结

5.1 简述LVS三种工作模式,简述区别?

NAT:通过网络地址转换实现的虚拟服务器,大并发访问时,调度器的性能成为瓶颈
DR:使用路由技术实现虚拟服务器,节点服务器需要配置VIP,注意MAC地址广播
TUN:通过隧道方式实现虚拟服务器。

5.2 列举你知道的LVS调度算法?

轮询(Round Robin);
加权轮询(Weighted Round Robin);
最少连接(Least Connections);
加权最少连接(Weighted Least Connections);
源地址哈希值(source hash)
基于地址的最小连接(lblc,locality-based least-connection)

5.3 LVS的工作模式及其工作过程

LVS 有三种负载均衡的模式,分别是VS/NAT(nat 模式)、VS/DR(路由模式)、VS/TUN(隧道模式)。

1、NAT模式(VS-NAT)

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP)。真实服务器响应完请求后,查看默认路由,把响应后的数据包发送给负载均衡器,负载均衡器在接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。

优点:集群中的服务器可以使用任何支持TCP/IP的操作系统,只要负载均衡器有一个合法的IP地址。

缺点:扩展性有限,当服务器节点增长过多时,由于所有的请求和应答都需要经过负载均衡器,因此负载均衡器将成为整个系统的瓶颈。

2、直接路由模式(VS-DR)

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。

优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。

缺点:需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。

3、IP隧道模式(VS-TUN)

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求报文封装一层IP隧道(T-IP)转发到真实服务器(RS)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。

优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。

点:集群中的服务器可以使用任何支持TCP/IP的操作系统,只要负载均衡器有一个合法的IP地址。

缺点:扩展性有限,当服务器节点增长过多时,由于所有的请求和应答都需要经过负载均衡器,因此负载均衡器将成为整个系统的瓶颈。

2、直接路由模式(VS-DR)

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。

优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。

缺点:需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。

3、IP隧道模式(VS-TUN)

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求报文封装一层IP隧道(T-IP)转发到真实服务器(RS)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。

优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。

缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持“IP Tunneling”。

你可能感兴趣的:(lvs,负载均衡,运维,架构,linux)