LVS负载均衡
一、lvs简介
可以通过http://www.linuxvirtualserver.org/zh/index.html来查看lvs相关简介。
LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式、TUN模式、以及DR模式。
server1做负载均衡节点,server2和server3做real server,我们想通过server1来负载均衡后面的两个server。
做实验时保证:50主机的火墙是开着的,并且开启地址伪装功能,其余虚拟机的火枪都关闭。
1.lvs的DR模式
DR模式的数据链路如下:
client -> lvs -> real server -> client
DR模式是性能最高的一种模式。
从2.4版本开始,linux内核默认支持LVS。要使用LVS的能力,只需安装一个LVS的管理工具:ipvsadm。
LVS的结构主要分为两部分:
工作在内核空间的IPVS模块。LVS的能力实际上都是由IVPS模块实现。
工作在用户空间的ipvsadm管理工具。其作用是向用户提供一个命令接口,用于将配置的虚拟服务、真实服务等传给IPVS模块。
step1: yum install ipvsadm -y 先下载一个用户层面的工具。
step2:如图
step3:
(1)添加一个虚拟服务172.25.254.100:80,使用轮询算法。(-s是指定算法,一共有十种调度算法)
ipvsadm -A -t 172.25.254.100:80 -s rr
(2)添加一个真实服务器172.25.254.2和172.25.254.3,使用DR模式。
ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2:80 -g
ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3:80 -g
step4:在server2 、3上下载httpd服务 并启动,
然后 echo server2 > /var/www/html/index.html ,server 3同样。
测试:在
针对此类问题,一定要先去看调度策略,调度策略是没有问题的,那么问题一定在后端。
在server2中看到的问题如下:
所以,在server2、3中操作如下:
再次测试:
发现恢复正常了。
1.改善
arp指令用来管理系统的arp缓冲区,可以显示、删除、添加静态mac地址。
现在的问题就是,三台机器都有vip,lvs调度器失去了它的作用。(既然三台主机都有viIP,那凭什么要找你调度器呢?)
解决方案:arptables
在server2和server3上 安装arptables,arptables是针对arp协议的工具。
安装好以后,需要注意的是,需要安装两条策略:
1:如果有人直接访问我这里的vip的话,是不行的,直接丢弃掉他。该条策略要加到INPUT中。
2.从我这里出去的 要转换一下去向,指向real server
记得将刚刚的两条策略保存在/etc/sysconfig/arptables 中,因为这些策略是保存在内存中的。一重启,就啥也没了,所以需要保存在文件中,。
如此一来,arptables -F 刷掉策略以后,重启arptables.service(systemctl start arptables.service)服务以后就会出现该策略了。
去主机测试:恢复正常
再对DR模式做一个解析:
client -> vs -> rs -> client。
2.关于lvs遇到的问题以及解决方法
Q1:– 某台RealServer down了,怎么办?
A1:健康检测
Q2:– LVS本身down了,怎么办?
A2:LVS冗余
这样一来就会导致一半的用户访问是错的。
以下是解决措施:
一个keepalive解决。
在server1上安装keepalived,vim /etc/keepalived/keepalived.conf,修改如下:
server4上的该文件,也要做对应修改。
测试:
(1)关于某一台real server down掉了解决之后的测试:
这样一来,我们的客户端是没有任何问题的。
正常来说,DR模式的性能非常好,real server 弄个几十上百个没哈问题。
(2)关于lvs节点down掉了解决之后的测试