下面是看马哥linux视频学习时做的笔记,偏理论,重点是介绍LVS负载均衡的各种实现方法,再次为马哥深厚的理论知识功底叹服。
Linux Cluster
集群:将多台主机组织起来满足同一个需求
集群的类型:
- LB: Load Balancing,负载均衡集群;
- 负载均衡器,调试器,分发器
- 后端主机,‘真’服务器
- HA:Hiah Avallibilty,高可用集群;
- Active:活动服务器;
- Passlve:备用服务器;
LB集群的实现
硬件:如F5的BIG—IP,Citrix的Netscaler等,缺点是贵 软件:如lvs,haproxy,nginx,ats等
其中LVS是真正在内核中实现的,基于TCP传输层,突破套接字的限制,所以支持更大的并发量。
HA集群的实现
keepalived: vrrp协议 als: heartbeat,cman+rgmanager(RHCS)
LVS :Linux Virtual Server
四层路由,四层交换:根据请求报文的目标IP和目标PORT将其调度转发至后端的某主机;
LVS的组成
- ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的RS;
- ipvs:工作于内核上的netfilter的INPUT钩子之上的程序,可根据用户定义的集群实现请求转发;
支持基于TCP,UDP,SCTP,AH,EST,AH_EST等协议进行调度;
LVS集群的专用术语
简写 | 含义 |
---|---|
VS | Virtual server |
RS | Real server |
CIP | Client IP |
VIP | virtual server IP |
DIP | Director IP |
RIP | Real Server IP |
lvs-nat
多目标的DNAT,通过将请求报文中的目标地址和目标端口修改为挑选出的某RS的RIP和PORT实现转发
- RIP和DIP必须在同一IP网络,且应该使用私有地址;RS的网络要指向DIP(保证响应报文必须经由VS)
- 请求报文和响应报文都经由Director转发,较高负载下,Director易于成为系统性能瓶颈
- 支持端口映射
- VS必须是Linux,RS可以是任意OS
lvs-dr:Direct Routing
通过为请求报文重新封装一个MAC首部进行转发;源MAC是DIP所在接口的MAC,目标MAC是挑选出某RS的RIP所在接口的MAC地址;IP首部不会发生变化(CIP<–>VIP);
-
确保前端路由器目标IP为VIP的请求报文发往Director
- 在路由器上静态绑定VIP和Director的MAC地址;
- 禁止RS响应VIP的ARP请求,禁止RS的VIP进行通告。方法为修改RS的内核参数,并把VIP绑定lo的别名上(arp_igonre,arp_announce)
-
RS的RIP可以使用私有地址,也可以使用公网地址
-
RS跟Director必须在同一物理网络,RS的网关必须不能指向DIP
-
请求报文必须由Director调度,但响应报文必须不能经由Director
-
不支持端口映射
-
RS可以使用大多数的OS
lvs-tun:tunnel
转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而是源IP首部之外再封装一个IP首部(源IP为DIP,目标IP为挑选出的RS的RIP)
- RIP,DIP,VIP全得是公网地址
- RS网关不能指向,也不可能指向DIP
- 请求报文经由Dirctor转发,但响应报文将直接发往CIP
- 不支持端口映射
- RS的OS必须支持隧道功能
lvs-fullnat:
通过同时修改请求报文的源IP地址(CIP–>DIP)和目标IP地址(VIP–>RIP)进行转发;
- VIP是公网地址,RIP和DIP是私网地址,且通常不在同一网络中,但需要经由路由器互通
- RS收到的请求报文源IP为DIP,因此响应报文将直接响应为DIP
- 请求和响应报文都经由Director
- 支持端口映射