LVS 简介
LVS 是由 章文嵩 博士开发的 四层(传输层)负载均衡 解决方案,集成在 Linux 内核中。它通过 IP 负载均衡技术 将客户端请求分发到多台后端服务器(Real Server),提高系统的 可扩展性 和 高可用性。
LVS一共有三种模式: NAT、DR、TUN
NAT
原理
用户请求到达lvs,lvs将请求的报文的目的IP改为RIP,同时将报文的目标端口也改为realserver的相应端口,最后将报文发送到realserver上,realserver将数据返回给lvs,lvs再把数据发送给用户
优点
- 端口映射灵活。
- NAT模式支持对IP地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。
缺点
- 数据进出都需要经过负载均衡服务器,流量压力大,服务器瓶颈较大
配置
- lvs
1. 1 配置与网关通信的VIP(Virtual IP)
1. 2 配置与real-server通信的DIP(Director server IP)地址
1. 3 两个ip处于不同网段 - real-server
1. 1 配置与lvs通信的RIP(Real-server IP)地址
网络传输
- 客户机访问lvs VIP
- lvs 进行DNAT操作 修改目的IP地址
VIP —》 RIP (DNAT) - lvs 根据调度算法 将请求转发到后台real-server
- real-server 将数据返回给lvs
- lvs 进行SNAT操作 将数据发送给客户机
RIP —》 VIP (SNAT)
SNAT DNAT iptables实现
#SNAT
iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o ens33 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o ens33 -j SNAT --to-source 192.168.217.11
#DNAT
iptables -t nat -A PREROUTING -d 192.168.217.0 -p -tcp -dport 80 -i ens36 -j DNAT --to-destination 192.168.217.13
DR
原理
用户请求到达lvs,lvs将请求的报文的目的MAC地址改为后端的realserver的MAC地址,目的IP为VIP(不变),源IP为Client IP地址(不变),然后lvs将报文发送到realserver,realserver检测到目的地址为自己本地的VIP,如果在同一网段,将请求直接返回给用户,如果用户跟realserver不在同一个网段,则需要通过网关返回给用户。
优点
- 数据直接从RS的默认网关转发,不经过LB服务器,流量压力小,负载能力高
缺点
- 因为DR模式是通过MAC地址改写机制实现转发,因此所有RS节点和调度器LB只能在一个局域网里
配置
- lvs
1.1 配置与real-server一致的VIP
1.2 VIP用于在网关添加路由,接收数据,进行arp广播
1.3 配置用于与real-server通信的DIP
从该接口发送数据,避免识别自身为接收方 - real-server
2.1 在本地lo接口配置与lvs一致的VIP
VIP仅用于识别自身为接收方,禁用arp协议广播
2.2 配置用于路由传输的RIP
从该接口发送数据,避免识别自身为接收方
网络传输
- 客户机访问lvs VIP
- lvs 根据调度算法 将请求从DIP发送转发到后台real-server RIP
- real-server 将数据从RIP直接返回给客户机
TUN
原理
用户请求到达lvs,lvs通过IP-TUN加密技术将请求报文的包封装到一个新的IP包里面,目的IP为VIP(不变),然后lvs将报文发送到realserver,realserver基于IP-TUN解密,然后解析出来包的目的为VIP,检测网卡是否绑定了VIP,绑定了就处理这个包,如果在同一个网段,将请求直接返回给用户,否则通过网关返回给用户;如果没有绑定VIP就直接丢掉这个包
优点
- 数据响应不经过lvs
- IP再次封装,可以突破局域网限制
缺点
- 必须依赖公网IP
- 需要配置隧道接口,成本较高
配置
- lvs
1.1 配置与real-server一致的VIP
VIP为公网IP,直接在公网接收数据
1.2 配置用于与real-server通信的DIP
DIP为公网IP,直接在公网发送数据 - real-server
2.1 在本地lo接口配置与lvs一致的VIP
VIP仅用于识别自身为接收方,禁用arp协议广播
2.2 配置用于公网传输的RIP
RIP为公网IP,直接在公网接收传递数据
网络传输
- 客户机访问lvs
原始报文 CIP(Client IP) —》 VIP - lvs在外部再封装一层IP报文
封装报文 DIP —》 RIP - lvs通过隧道将报文转发到RIP
- real-server 接收报文 解封装
DIP —》 RIP
解封为
CIP —》VIP - real-server 检测到目的IP为本地lo接口VIP,接收数据
- real-server将数据返回给客户机
VIP —》 CIP
fullnat模式
概念
相当与nat模式的补充扩展
相比nat模式,fullnat多了一个local ip,IP地址转换时,源和目的ip都改了,即SNAT+DNAT
网络传输
- 客户机访问lvs VIP
- lvs 进行SNAT DNAT操作 修改IP地址
报文 CIP —》 VIP
CIP —》 VIP (SNAT)
VIP —》 RIP (DNAT) - lvs 根据调度算法 将请求转发到后台real-server
- real-server 将数据返回给lvs
- lvs 进行SNAT操作 将数据发送给客户机
报文 RIP —》 VIP
RIP —》 VIP (SNAT)
VIP —》 CIP (DNAT)