项目背景
随着系统访问量的日益增加,单台主机性能越来越难以承受负载,纵向增加设备难以满足需求,横向拉伸成为当下最优解。如何让负载均衡到每一台服务器上是横向拉伸首要解决的问题。
旧技术:DNS轮询解析
缺点:
apache down,remove生效时间不可控
只支持WRR的调度策略
apache间负载不均衡
攻击防御能力弱
一、项目介绍
LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器。
3种工作模式:
NAT模式、TUN模式、以及DR模式。
10种调度算法:
1.轮询调度 RR
2.加权轮询调度 WRR
3.最小连接调度 LC
4.加权最小连接调度 WLC
5.基于局部的最少连接 LBLC
6.带复制的基于局部性的最少连接 LBLCR
7.目标地址散列调度 DH
8.源地址散列调度 SH
9.最短的期望的延迟 SED
10.最少队列调度 NQ
传输协议
TCP/UDP
基于传输层协议进行调度(4层Load Balance)
二、项目准备
三台Rhel7.6版本虚拟机,配置好网络、防火墙、selinux、地址解析、时间同步等准备工作。
一台测试机。
三、操作步骤
DR模式
# 调度器安装软件
yum install -y ipvsadm
添加VIP地址,确保IP地址没有被占用
ip addr add 192.168.56.200/24 dev ens33
# 编写LVS策略
ip addr add 192.168.213.200/24 dev ens33
ipvsadm -A -t 192.168.213.200:80 -s rr
ipvsadm -a -t 192.168.213.200:80 -r 192.168.213.102:80 -g
ipvsadm -a -t 192.168.213.200:80 -r 192.168.213.103:80 -g
ipvsadm -ln
# realserver上安装httpd服务用于测试
# server2:
yum install -y httpd
systemctl enable --now httpd
echo server2 > /var/www/html/index.html
server3:
yum install -y httpd
systemctl enable --now httpd
echo server3 > /var/www/html/index.html
# realserver上安装arptables软件,屏蔽ARP
# server2:
ip addr add 192.168.213.200/32 dev ens33
yum install -y arptables
arptables -A INPUT -d 192.168.213.200 -j DROP
arptables -A OUTPUT -s 192.168.213.200 -j mangle --mangle-ip-s 192.168.213.102
arptables-save > /etc/sysconfig/arptables
systemctl enable arptables.service
#server3:
ip addr add 192.168.213.200/32 dev ens33
yum install -y arptables
arptables -A INPUT -d 192.168.213.200 -j DROP
arptables -A OUTPUT -s 192.168.213.200 -j mangle --mangle-ip-s 192.168.213.103
arptables-save > /etc/sysconfig/arptables
systemctl enable arptables.service
#测试:
for i in {1..10}; do curl 192.168.56.200;done
# 查看调度器:
ipvsadm -ln
# 保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
总结
以上就是LVS的基本介绍和DR模式下LVS的实现方式,但是依旧存在以下问题:
当某台real server down了,怎么办?
当LVS本身down了,怎么办?