LVS 简介
LVS 是 Linux Virtual Server ,Linux 虚拟服务器;是一个虚拟的服务器集群【多台机器 LB IP】。LVS 集群分为三层结构:
a. 负载调度器(load balancer):它是整个LVS 集群对外的前端机器,负责将client请求发送到一组服务器[多台LB IP]上 执行,而client端认为是返回来一个同一个IP【通常把这个IP 称为虚拟IP/VIP】
b. 服务器池(server pool):一组真正执行client 请求的服务器,一般是我们的web服务器;除了web,还有FTP,MAIL,DNS
c. 共享存储(shared stored):它为 server pool 提供了一个共享的存储区,很容易让服务器池拥有相同的内容,提供相 同的服务
共有4中模式:LVS-DR,LVS-NAT,LVS-FULLNAT,LVS-TUN
1.LVS-DR
1.1 工作原理
client发送一个请求到VIP,LVS服务器根据VIP选择对应的realServer的pool,根据算法,在pool中选择一台realServer,将包广播到vip的局域网,同时LVS在hash表中记录该次连接,realServer收到包之后,处理完请求,把应答包直接传给client;当client继续发包过来时,LVS根据更才记录的hash表的信息,将属于此次连接的请求直接发到刚才选择的realServer上;当连接中止或者超时,hash表中的记录将被删除。
1.2 实例讲解
假设client,director,vip,realServer的ip及mac地址如下
client | director | vip | realServer | |
IP | 192.168.138.20 | 192.168.143.231 | 192.168.143.122 | 192.168.143.82 |
MAC | X:X:X:X:X:5d | X:X:X:X:X:96 | X:X:X:X:X:96 | X:X:X:X:X:82 |
第一步:client向vip发起请求,director接收到请求,ip包头的信息如下
source mac | dst mac | ... | source ip | dst ip | ... |
X:X:X:X:X:5d | X:X:X:X:X:96 | ... | 192.168.138.20 | 192.168.143.122 | ... |
第二步:LVS根据负载均衡算法,选择一台realServer,修改dst mac地址为realServer的mac地址,将数据包转发到局域网,此时ip包头信息如下
source mac | dst mac | ... | source ip | dst ip | ... |
X:X:X:X:X:96 | X:X:X:X:X:82 | ... | 192.168.138.20 | 192.168.143.122 | ... |
第三步:realServer接收到包,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网,IP包头及数据帧头信息如下
source mac | dst mac | ... | source ip | dst ip | ... |
X:X:X:X:X:82 | X:X:X:X:X:5d | ... | 192.168.143.122 | 192.168.138.20 | ... |
第四步:如果,通过路由将包路由到client
1.3 注意事项
a. LVS必须与realServer在同一个局域网,因为LVS收到数据包后,只修改了dst mac地址,然后广播出去,如果LVS与realServer不在统一网段,realServer永远收不到数据包
b. LVS-DR不需要路由转发,同一局域网内,不经过路由
c. realServer需呀配置 vip
2. LVS-NAT
2.1 工作原理
假设client,vip,realServer的ip地址如下
client | vip | realServer | |
IP | 192.168.138.20 | 192.168.143.122 | 192.168.143.82 |
第一步:client 发送包到LVS服务器的VIP上
... | source ip | dst ip | ... |
... | 192.168.138.20 | 192.168.143.122 | ... |
第二步:VIP选择一个realServer,并记录连接信息到hash表中,然后修改client的request的目的IP地址为realServer的地址,将请求发给realServer
... | source ip | dst ip | ... |
... | 192.168.138.20 | 192.168.143.82 | ... |
第三步:realServer收到请求包后,发现目的IP是自己的IP,于是处理请求,然后发送reply给LVS,回复包如下
... | source ip | dst ip | ... |
... | 192.168.143.82 | 192.168.138.20 | ... |
第四步:LVS收到reply包后,修改reply包的的源地址为VIP,发送给client;以后从client来的属于本次连接的包,查hash表,然后发给对应的realServer
... | source ip | dst ip | ... |
... | 192.168.143.122 | 192.168.138.20 | ... |
2.1 注意事项
a. NAT修改的是dst ip,不需要vip与realserver在同一个网段内
b. NAT模式包的进出都需要经过LVS ;因此LVS 的可能会成为一个系统瓶颈问题
3. LVS-FULLNAT
LVS-FULLNAT在client请求VIP 时,不仅替换了数据包的dst ip,还替换了数据包的 source ip;但VIP 返回给client时也替换了source ip
3.1 工作原理
假设client,vip,realServer的ip地址如下
client vip realServer
IP 192.168.138.20 192.168.143.122 192.168.143.82
第一步:client 发送包到LVS服务器的VIP上
... source ip dst ip ...
... 192.168.138.20192.168.143.122 ...
第二步:VIP 收到数据包后,会根据LVS设置的LB算法选择一个合适的realserver,然后把数据包的dst ip修改为realserver的ip;把sorce ip 改成 LVS的vip
... source ip dst ip ...
... 192.168.143.122 192.168.143.82 ...
第三步: realserver 收到这个数据包后判断dst ip 是自己,处理完后把这个包发送给LVS VIP
... source ip dst ip ...
... 192.168.143.82 192.168.143.122 ...
第四步: LVS 收到这个数据包后把sorce ip改成VIP的IP,dst ip改成 client ip然后发送给client
... source ip dst ip ...
... 192.168.143.122 192.168.138.20 ...
3.2 注意事项
a. FULLNAT修改的是dst ip,不需要vip与realserver在同一个网段内
b. FULLNAT能保证回包一定能回到LVS
c. 因为FULLNAT要更新sorce ip 所以性能NAT模式低
4. LVS-TUN
4.1 工作原理
假设client,vip,realServer的ip地址如下
client vip realServer
IP 192.168.138.20 192.168.143.122 192.168.143.82
第一步:client 发送包到LVS服务器的VIP上
... source ip dst ip ...
... 192.168.138.20 192.168.143.122 ...
第二步:VIP 收到数据包后,会根据LVS设置的LB算法选择一个合适的realserver;并把client发送的数据包包装到一个新的IP包里面;新的IP包的dst是realserver的IP
... source ip dst ip ...
... 192.168.143.122 192.168.143.82 ...
第三步: realserver 收到这个数据包后判断dst ip 是自己,然后解析出来的数据包的dst是VIP;会检测网卡上是否帮了VIP的ip地址;如果帮了就会处理这个包,如果没有直接丢掉。 一般在realserver上面 lo:0 绑定了VIP的ip地址,就可以处理。处理完成后,直回给client
... source ip dst ip ...
... 192.168.143.82 192.168.138.20 ...
4.2 注意事项
a. TUN模式必须在所有的realserver机器上面绑定VIP的IP地址
b. TUN模式的包通信通过TUN模式,不管是内网和外网都能通信,所以不需要lvsvip跟realserver 在同一个网段内
c. TUN模式 realserver会把数据包直接发给client 不会给lvs了
d. TUN模式走的隧道模式,所以运维起来比较难,所以一般不用
来源:oschina
链接:https://my.oschina.net/u/172871/blog/552957