VS/NAT
在一组服务器前有一个调度器,它们是通过 Switch/HUB 相连接的。这些服务器提供相同的网络服
务、相同的内容,即不管请求被发送到哪一台服务器,执 行结果是一样的。服务的内容可以复制到
每台服务器的本地硬盘上,可以通过网络文件系统(如 NFS)共享,也可以通过一个分布式文件系统
来提供。
VS/NAT 的优点是服务器可以运行任何支持 TCP/IP 的操作系统,它只需要一个 IP 地址配置在调度器
上,服务器组可以用私有的 IP 地址。缺点是它的伸缩能力有限, 当服务器结点数目升到 20 时,调度
器本身有可能成为系统的新瓶颈,因为在 VS/NAT 中请求和响应报文都需要通过负载调度器。
VS/NAT 的优点是服务器可以运行任何支持 TCP/IP 的操作系统,它只需要一个 IP 地址配置在调度器上,
服务器组可以用私有的 IP 地址。缺点是它的伸缩能力有限, 当服务器结点数目升到 20 时,调度器本身
有可能成为系统的新瓶颈,因为在 VS/NAT 中请求和响应报文都需要通过负载调度器。
Load Balance 双网卡 eth0: 172.25.28.1 (对内) eth1: 192.168.28.128(对外)
1,给vm1添加双网卡
eth0 vip
eth1 rip
eth1的ip是192.168.28.128(和客户端ip192.168.28.28在同一个网段)
如果是临时添加ip addr add 172.25.254.128/24 dev eth1
那么还需要启用网卡ip link set up eth1
eth0的ip172.25.28.1
eth0和eth1不在同一个网段
2,设置RS服务器ip
Realserver1:172.25.28.2
Realserver1: 172.25.28.3
注意开启httpd
临时网关都设置为 route add default gw 172.25.28.1
default 用于设置默认路由
RS服务器的网关都修改为vip
3,vm1开启路由机制
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
临时添加 sysctl -w net.ipv4.ip_forward=1
sysctl -a | grep ip_forward #查看
4,写入策略
清空之前的
这里安装ipvsadm时,注意yum源的配置不一样
ipvsadm -A -t 192.168.28.128:80 -s rr
ipvsadm -a -t 192.168.28.128:80 -r 172.25.28.2:80 -m #-m表示nat模型
ipvsadm -a -t 192.168.28.128:80 -r 172.25.28.3:80 -m
保存策略
/etc/init.d/ipvsadm save
5,客户端访问测试
客户端添加ip和192.168.28.128同一个网段
curl 192.168.28.128
并且调度器有反应
调度算法
LVS 的负载调度算法 在内核中的连接调度算法上,IPVS 已实现了以下八种调度算法:
一
轮叫调度(RoundRobin Scheduling )
轮叫调度(Round Robin Scheduling)算法就是以轮叫的方式依次将请求调度不同的服务器,
即每次调度执行 i = (i + 1) mod n,并选出第 i 台服务器。算法的优点是其简洁性,它无需记录
当前所有连接的状态,所以它是一种无状态调度。
二
加权轮叫调度(Weighted RoundRobin Scheduling )
加权轮叫调度 (Weighted RoundRobin Scheduling)算法可以解决服务器间性能不一的情况,
它用相应的权值表示服务器的处理性能,服务器的缺省权值为 1。假设服务器 A 的权值为
1,B 的 权值为 2,则表示服务器 B 的处理性能是 A 的两倍。加权轮叫调度算法是按权值的高
低和轮叫方式分配请求到各服务器。权值高的服务器先收到的连接,权值高的服 务器比权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数。
三
最小连接调度(LeastConnection Scheduling )
最小连接调度(Least Connection Scheduling)算法是把新的连接请求分配到当前连接数最小
的服务器。最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服
务 器的负载情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台
服务器,其连接数加 1;当连接中止或超时,其连接数减一。
四
加权最小连接调度(Weighted LeastConnection Scheduling)
加权最小连接调 度(Weighted LeastConnection Scheduling)算法是最小连接调度的超集,各
个服务器用相应的权值表示其处理性能。服务器的缺省权值为 1,系统管理员可以动态地设
置服务器的权 值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权
值成比例。
五
基于局部性的最少链接(LocalityBased Least Connections Scheduling )
基 于局部性的最少链接调度(LocalityBased Least Connections Scheduling,以下简称为
LBLC)算法是针对请求报文的目标 IP 地址的负载均衡调度,目前主要用于 Cache 集群系统,
因为在 Cache 集群中 客户请求报文的目标 IP 地址是变化的。这里假设任何后端服务器都可以
处理任一请求,算法的设计目标是在服务器的负载基本平衡情况下,将相同目标 IP 地址的 请
求调度到同一台服务器,来提高各台服务器的访问局部性和主存 Cache 命中率,从而整个集
群系统的处理能力。LBLC 调度算法先根据请求的目标 IP 地址 找出该目标 IP 地址最近使用的
服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者
该服务器超载且有服务器处于其一半的工 作负载,则用 “ 最少链接 ” 的原则选出一个可用的服
务器,将请求发送到该服务器。
六
带复制的基于局部性最少链接(LocalityBased Least Connections with Replication
Scheduling)
带 复制的基于局部性最少链接调度(LocalityBased Least Connections with Replication
Scheduling,以下简称为 LBLCR)算法也是针对目标 IP 地址的负载均衡,目前主要用于 Cache
集群系统。它与 LBLC 算法的不同之处是它要 维护从一个目标 IP 地址到一组服务器的映射,
而 LBLC 算法维护从一个目标 IP 地址到一台服务器的映射。对于一个 “ 热门 ” 站点的服务请
求,一台 Cache 服务器可能会忙不过来处理这些请求。这时,LBLC 调度算法会从所有的
Cache 服务器中按 “ 最小连接 ” 原则选出一台 Cache 服务器,映射该 “ 热门 ” 站 点到这台 Cache 服
务器,很快这台 Cache 服务器也会超载,就会重复上述过程选出新的 Cache 服务器。这样,可
能会导致该 “ 热门 ” 站点的映像会出现 在所有的 Cache 服务器上,降低了 Cache 服务器的使用
效率。LBLCR 调度算法将 “ 热门 ” 站点映射到一组 Cache 服务器(服务器集合),当该 “ 热
门 ” 站点的请求负载增加时,会增加集合里的 Cache 服务器,来处理不断增长的负载;当
该 “ 热门 ” 站点的请求负载降低时,会减少集合里的 Cache 服务器 数目。这样,该 “ 热门 ” 站点
的映像不太可能出现在所有的 Cache 服务器上,从而提供 Cache 集群系统的使用效率。
LBLCR 算法先根据请求的目标 IP 地址找出该目标 IP 地址对应的服务器组;按 “ 最小连接 ” 原
则从该服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器
超载;则按 “ 最小连接 ” 原则从整个集群中选出一台服务器,将该服务器加入到服务器组中,
将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服 务器从服
务器组中删除,以降低复制的程度。
七
目标地址散列调度(Destination Hashing Scheduling )
目标地址散列调度 (Destination Hashing Scheduling)算法也是针对目标 IP 地址的负载均衡,但它是一种静态映射算法,通过一个散列(Hash)函数将一个目标 IP 地址映射到一台服务
器。目标地址散列调度算法先根据请求的目标 IP 地址,作为散列键(Hash Key)从静态分配
的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则
返回空。
八
源地址散列调度(Source Hashing Scheduling)
源地址散列调度(Source Hashing Scheduling)算法正好与目标地址散列调度算法相反,它根
据请求的源 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该
服务器是可用的且未超载,将请求发送到该服务器,否则返回空。它采用的散列函数与目标
地址散列调度算法 的相同。它的算法流程与目标地址散列调度算法的基本相似,除了将请求
的目标 IP 地址换成请求的源 IP 地址,所以这里不一一叙述。在实际应用中,源地址散列 调
度和目标地址散列调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入
口。