一、LVS简介
LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。
轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,整个集群对用户而言都是透明的。
lvs附着于netfiler
五个内置的钩子函数
PREROUTING —> INPUT(流向内部)
PREROUTING----> FORWARD —> POSTROUTING(转发)
OUTPUT—> POSTROUTING(流向外部)
- 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
- PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
- IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链
- POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器
lvs是由两部份组成的:
ipvs(ip virrual server):一段代码(工作在内核)是真正生效实现调度的代码
ipvs(工作在内核中的netfilter input钩子函数上)
ipvsadm(工作在用户空间,负责为ipvs内核框架编写规则)
ipvsadm(工作在用户空间的命令行工具 写具体的规则 用于管理集群服务)
二、根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为----NAT模式、TUN模式、以及DR模式。
1.基于NAT的LVS模式负载均衡(地址转换,翻墙,三层IP)
NAT(Network Address Translation)即网络地址转换,其作用是通过数据