lvs负载均衡—DR模式
lvs介绍:
1 . LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。
LVS的优点是:
1)、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
2)、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
3)、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。
4)、无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会受到大流量的影响。
5)、应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。
DR模式:
DR模式,即(Direct Routing)直接路由模式:
当一个client发送一个WEB请求到VIP,LVS服务器根据VIP选择对应的real-server的Pool,根据算法,在Pool中选择一台Real-server,LVS在hash表中记录该次连接,然后将client的请求包发给选择的Real-server,最后选择的Real-server把应答包直接传给client;当client继续发包过来时,LVS根据更才记录的hash表的信息,将属于此次连接的请求直接发到刚才选择的Real-server上;当连接中止或者超时,hash表中的记录将被删除。
lvs(DR模式)搭建:
CIP(客户端IP):192.168.13.250
VIP(负载均衡虚拟IP):192.168.13.100
DIP(负载均衡器IP):192.168.13.111
RIP1(后端请求处理服务器1):192.168.13.112
RIP2(后端请求处理服务器2):192.168.13.113
实验前:关火墙
1 . 由于要用到ipvsadm软件,所以先配好高可用yum源,他是linux系统自带的只是没有在内核中,但在镜像中可以找到,将他写进yum仓库中直接下载即可。
找到高可用源后添加进去
添加之后再次查看yum源
2 . 安装lvs管理工具ipvsadm,设置负载均衡调度策略
yum install ipvsadm -y # 安装管理工具ipvsadm
ipvsadm -l # 查看策略,加不加-l都可以
lsmod # 查看内核模块
ipvsadm -A -t 192.168.13.100:80 -s rr # 添加VIP,调度策略,rr轮询,ipvsadm --help看到,共10种调度算法
ipvsadm -a -t 192.168.13.100:80 -r 192.168.13.112:80 -g
ipvsadm -a -t 192.168.13.100:80 -r 192.168.13.113:80 -g # 添加后端的两个rs
ip addr add 192.168.13.100/24 dev ens33 # 给调度器添加vip
然后在物理机上测试访问,发现不能返回结果,但是ipvsadm -l可以看到调度是成功的所以需要给rs上也添加vip
因为数据的走向是 client -> vs -> rs -> client
3 . rs配置(所有的服务器设置一致)
注意:该处为了验证负载均衡的效果,后端真实服务器设置不同的访问内容,明显标示内容来自不同的后端服务器。
ip addr add 192.168.13.100/24 dev ens33 ## 添加VIP
yum install httpd -y
vim /var/www/html/index.html 安装httpd 启动设置访问页面
systemctl start httpd 启动服务
再次测试,成功调度
在物理机上,arp -an | grep 100 , 可以看到默认缓存的是server1的mac地址
用arp -d 192.168.13.100清除缓存
再次访问时,可能就不轮询,因为可能缓存了某台rs的mac地址
这样对rs来说不安全,因为直接访问到了后端rs
访问量过大可能会宕机.
解决方法:
添加arptable策略解决
在两台rs上安装arptables
yum install arptables -y
arptables -L ##查看策略
arptables -A INPUT -d 192.168.13.100 -j DROP # 设置不回应对自己VIP的请求
arptables -A OUTPUT -s 192.168.13.100 -j mangle --mangle-ip-s 192.168.13.112 ##让返回的数据来自server1
另一台rs上设置返回数据来server2
然后在物理主机上测试:
目的达到,收工!