Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1567827
  • 博文数量: 157
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4116
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-14 18:26
文章分类

全部博文(157)

文章存档

2014年(67)

2013年(90)

分类: 网络与安全

2013-12-14 11:04:24

LVS是Linux Virtual Server的缩写,即linux虚拟服务器。是一款强大的基于四层的负载均衡器。它具有良好的可靠性,可拓展性和可操作性。从而以低廉的成本实现最优的性能。


1.工作模式:
1) NAT模型:

012111503.png

特点:
1.director必须与realserver位于同一个网络。
2.realserver通常使用私有地址,用于各节点间的通信。
3.director位于客户端与realserver之间,所有的请求和响应都必须经由director转发。
4.director作为realserver的网关。
5.支持端口映射。
6.director必须有两块网卡
7.不适用于较大规模的应用。


2)DR模型:直接路由
spacer.gif012143204.png
DR模型的特点:
1.director必须与realserver位于同一个网络。
2.realserver可以使用公网ip地址,便于远程管理与配置。
3.director只负责处理入站请求。而响应报文则由realserver直接返回给client端。大大节省director的资源
4.不能做端口映射

3)TUN:IP隧道

spacer.gif012200140.png
特点:

1.集群节点可以跨越Internet。
2.RIP必须是公网地址。
3.Director仅负责处理入站请求,响应报文则由Real Server直接发往客户端。
4.realserver的OS必须支持隧道功能。
5.不支持端口映射。

2.LVS的IP地址类型:

1)VIP:虚拟IP地址,并不提供服务,而是将用户的请求转发到后方。
2)RIP:真正IP地址,客户端真正提供服务的IP地址。
3)DIP:调试IP地址,通常是和RIP相连的LVS的IP地址。
4)CIP:客户端IP地址,用户请求时,用户的IP。

3.调度算法:

1)rr:轮循。调度器通过“轮循”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等的对待每一台服务器,而不管服务器上扑鼻的连接数和系统负载。
2)wrr:加权轮循。根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的动态访问流量。调度器可以自动问询真实服务器的负载情况,并动态的调整其权值。
3)DH:目标hash。当某客户IP第一次访问到集群中的A服务器,在一段时间内,该客户再来访问集群的时候,如果A服务器是可用的且未超载,则依然将客户的请求转发到A服务器上。可用于解决动态网站的session共享问题。
4)SH:源hash。与目标hash相反,用于双线或多线接入的网络。
5)lc:最少链接。根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。
6)wlc:加权最少链接。在服务器节点性能差异较大的情况下,可以为真实服务器自动调整其权重,权重较高的节点将承担更大比例的活动连接。
7)sed:最短的期望的延迟
8)nq:最少队列调度。无需队列。如果真实服务器的连接数为零中,就直接分配一个连接,不需要再进行sed运算。
9)lblc:基于局部性的最少链接。针对目标IP地址的负载均衡,目前主要用于cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,比如说A服务器,若A服务器是可用的且没有超载,将请求发送到该服务器;若A服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,比如说B服务器,将请求发送到该服务器。
10)lblcr:带复制的基于局部性的最少链接。也是针对目标IP地址的负载均衡,目前主要用于cache集群系统。与lblc算法的不同之处在于它要维护一个目标IP地址到一组服务器的映射,而lblc维护从一个目标到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小链接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,刚按“最小链接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间被修改,将最忙的服务器从服务组中删除,以降低复制的程度。

4.LVS管理工具

ipvsadm
rpm -vih ipvsadm-1.25-9.el6.i686.rpm

ipvsadm -v
#查看版本信息

创建虚拟服务器:
-A:添加虚拟服务器
-t:指定VIP地址及tcp端口
-s:指定负载调度算法
示例:
ipvsadm -A -t 172.16.16.172:80 -s rr

添加服务器节点:
-a:添加真实服务器
-t:指定VIP地址及TCP端口
-r:指定RIP地址及TCP端口
-m:使用NAT集群模式(-g DR模式、-i TUN模式)
-w:用来设置权重(权重为0时表示暂停节点)
示例:
ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m -w 1
ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.22:80 -m -w 1
ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.23:80 -m -w 1

查看集群节点状态
ipvsadm -L -n      #查看节点状态
ipvsadm -Lnc      #查看负载连接情况

删除服务器节点
ipvsadm -d -r 192.168.7.23:80 -t 172.16.16.172:80     #删除某一个节点
ipvsadm -D -t 172.16.16.172:80                   #删除整虚拟服务器

保存负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm      #保存策略
service ipvsadm stop               #清除策略
service ipvsadm start              #重建规则

5.配置示例

地址转换模式(LVS-NAT)

1)实验环境:
lvs负载调度器:eth0:172.16.16.172/24(接外网) eth1:192.168.7.254/24(接节点)
web服务器池:节点1-节点2:192.168.7.21-22/24

2)配置负载调度器
a.配置SNAT转发规则
vim /etc/sysctl.conf
——————————————–
net.ipv4.ip_forward = 1
——————————————–
sysctl -p
iptables -t nat -A POSTROUTING -s 192.168.7.0/24 -o eth0 -j SNAT –to-source 172.16.16.172         #做SNAT

b.配置负载分配策略
service ipvsadm stop
ipvsadm -A -t 172.16.16.172:80 -s rr
ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m -w 1
ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.22:80 -m -w 1
service ipvsadm save
chkconfig ipvsadm on

3)配置节点服务器
安装httpd,创建测试网页,进行测试。
阅读(2407) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~