标签:服务器 linux server 客户端 lvs 集群
LVS
LVS(linux virtual server),即linux虚拟服务器,是一个虚拟的服务器集群系统。个人认为它就是把客户端请求来的大量请求通过调度器转发给后端,可以在调度器上定义方法,来实现负载均衡的。
LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
Lvs术语:
VIP:virtual IP nat 模型中内网需要向外网转换的ip
DIP:direttor IP 负载均衡调度器的ip
RIP:real server IP 实现负载均衡服务器的ip
CIP:client IP 客户端ip
LVS的类型:
Lvs-nat 地址转换
Lvs-dr 直接路由
Lvs-tun 隧道
类型图解
Lvs-nat:
详解:对于lvs-nat模型来说,客户端向服务器发送一个请求,这时请求的是VIP(客户是不知道后面有集群的),目标地址是VIP,源地址是CIP;当这个包经过PREROUTING链传到INPUT链上(ipvs工作在INPUT链上),ipvs发现这个包是请求的是集群上的服务器,它会把包的目标地址强行转换为RIP,经过POSTROUTING链,这个请求到达目标。服务器响应时,这时发的响应包的目标地址是CIP,源地址是RIP,到达DIP时,DIP发现这是个经过nat转换的地址,就检查自己的nat表,把源地址改成VIP,然后这个包经过FORWARD、POSTROUTING出去就响应给用户了。
nat类型的特性:
1.RS应用使用私有地址;RS的网关必须指向DIP;
2.请求和响应都要经过Director;高负载场景中,Director易成为性能瓶颈;
3.支持端口映射;
4.RS可以使用任意OS;
LVS-DR:
详解:dr模型跟nat模型最大的差距就是dr模型减少了对director的压力,客户端发出一个请求,目标地址是VIP,源地址是CIP。路由器去找VIP,但是所有的RS上也有VIP,这就出现了3个VIP相同的情况,是会发生冲突的,这时就需要在RS上做arptables了,禁止VIP的mac响应,这时路由器会说,谁是VIP,然后director就把自己的VIP告诉给路由器了,RS上的VIP能收到请求,但是得不到响应。当包进到ipvs中,这时ipvs不会吧目标地址转换了,而是不改变源和目标地址的情况下,在包的首部再加入源mac是DIP的mac,目标mac是RIP的mac。然后返还给交换机,交换机看到目标mac是RS,RS拿到包之后拆开mac,看到ip,因为自己也有VIP,所以解开包,送到进程,进行响应,响应包封装,目标地址是CIP,源地址是VIP,所以就直接到达客户端,不经过director。
dr类型的特性:
1.保证前端路由将目标地址为VIP的报文统统发往Directory,而不能是RS;
解决方案:
(1)静态地址绑定:在前端路由器上操作
(2)aprtables
(3)修改RS上内核参数,将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地
址解析请求;
2.RS可以使用私有地址;但也可以使用公网地址,此时可通过互联网通过RIP对其直接访问;
3.RS跟Directory必须在同一物理网络中;
4.请求报文经由Director,但响应报文必须不能经过Director;
5.不支持端口映射;
6.RS可以是大多数常见的OS;
7.RS的网关绝不允许指向DIP;
tun类型的特性:
1.RIP、VIP、DIP全部是公网地址;
2.RS的网关不会也不可能指向DIP;
3.请求报文经由Director,但响应报文必须不能经过Director;
4.不支持端口映射;
5.RS的OS必须支持隧道功能;
静态方法:仅根据调度算法本身进行调度
rr:round robin,轮流,轮询,轮叫
wrr:weighted round robin,加权轮询
sh:source hashing,源地址hash,表示来源于同一个CIP的请求将始终被始终被定向至同
一个RS,SESSION保持
dh:destination hashing,目标地址hash
动态方法:根据算法及各RS当前的负载状况进行调整
lc:least connection,最少连接
Overhead(负载状况)=Active(活动状态)*256+Inactive(非活动状态连接数)
wlc:weighted lc
Overhead=(Active*256+Inactive)/weight
sed:最短期望延迟shortest expection delay
Overhead=(Active+1)*256/weight
Lvs-nat配置实现
实验目的:实现lvs-nat模型的集群
实验环境:1.vmware虚拟机
2.3台linux子机
3.测试机
说明:Director是有两块网卡的,此实验用虚拟机实现,内网卡都在网络3中。在Real Server上网页都应该是一样的,但是这里为了看出效果,故意弄得不一样,内容是相对应的本机IP
Real Server配置
192.168.1.2:
# vim /var/www/html/index.html
# service httpd restart
192.168.1.3:
# vim /var/www/html/index.html
# service httpd restart
Directory配置:
检测Real Server
# mount /dev/cdrom /media/cdrom # yum install ipvsadm
定义集群,指明自己的IP和端口,使用轮转机制
给Director指定Real Server192.168.1.2和192.168.1.3,-m代表使用nat模型
开启转发功能
检验
这样就是实现了lvs-nat模型的集群功能
本文出自 “鱼儿” 博客,请务必保留此出处http://kyfish.blog.51cto.com/1570421/1562378
标签:服务器 linux server 客户端 lvs 集群
原文地址:http://kyfish.blog.51cto.com/1570421/1562378