很好的可管理性(Manageability)
可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP是在负载调度器的实现技术中效率最高的。在已有的IP中,主要有通过(Network Address Translation)将一组服务器构成一个高性能的、高可用的,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现的 方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/是LVS集群中实现的三种IP。
LVS集群采用IP和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的。整个的结构对客户是透明的,而且无需修改和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。
http://zh.linuxvirtualserver.org/node/35 可以查询到内核中的链接调度算法
在内核中的连接调度算法上,IPVS已实现了以下十种调度算法:
- 轮叫调度(Round-Robin Scheduling)
- 加权轮叫调度(Weighted Round-Robin Scheduling)
- 最小连接调度(Least-Connection Scheduling)
- 加权最小连接调度(Weighted Least-Connection Scheduling)
- 基于局部性的最少链接(Locality-Based Least Connections Scheduling)
- 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
- 目标地址散列调度(Destination Hashing Scheduling)
- 源地址散列调度(Source Hashing Scheduling)
- 最短预期延时调度(Shortest Expected Delay Scheduling)
- 不排队调度(Never Queue Scheduling)
在调度服务器上配置
yum install ipvsadm (大概是用来书写调度策略的)
ipvsadm --help
ipvsadm -A -t 192.168.2.252:80 -s rr 添加一个虚拟服务 ipvsadm -a -t 192.168.2.252:80 -r 192.168.2.233:80 -g 添加被调度节点 ipvsadm -a -t 192.168.2.252:80 -r 192.168.2.253:80 -g ipvsadm -l 查看调度信息
在被调度节点上配置
yum install httpd -y 安装http服务 /etc/init.d/httpd start
yum install -y arptables_jf (用来写arp策略的) ifconfig eth0:0 192.168.2.252 netmask 255.255.255.255 (添加一个虚拟ip)
arptables -A IN -d 192.168.2.252 -j DROP 访问这个虚拟ip时丢掉,在同一局域网里,访问这个虚拟ip 时只能访问调度器
arptables -A OUT -s 192.168.2.252 -j mangle --mangle-ip-s 192.168.2.253
在回应客户端时,用被调度节点的真实ip
/etc/init.d/arptables_jf save 必须保存策略
/etc/init.d/arptables_jf start 开启
测试
在每个被调度节点上的服务(http)默认发布目录上写不同的页面内容
echo `hostname` > /var/www/html/index.html
在web上访问虚拟ip时就可以出现轮询。
在浏览器所在客户端上查看访问这个虚拟ip时是否访问的是调度服务器
arp -a
(192.168.2.252) at 52:54:00:01:f0:8a [ether] on br100 看mac地址是否是调度服务器的。