LVS
流芳不待人 9/14/2022
# 1.代理和反向代理
# 1.1代理(正向代理)
客户端张三想访问 GitHub,但是访问不通。
IT部门帮他在海外服务器搭建了一个代理服务器,通过代理服务器访问 GitHub。
不仅能访问GitHub 还能访问Facebook。
正向代理特征:
- 客户端有感知,发请求前需要自己动手设置;
- 可以代理多个目标;
# 1.2反向代理
客户端张三想访问 GitHub,但是访问不通。
IT部门帮他在海外服务器搭建了一个反向代理服务器;把内网DNS中 GitHub 的域名解析到了反向代理服务器上。
可以访问 GitHub 了,但是Facebook还是不通。
特征:
- 对客户端透明,完全无感知;
- 反向代理只能固定一个目标;
LVS 就是一种反向代理。
# 2.LVS
# 2.1虚拟服务器
日益增长的请求量 和 性能有限的服务器之间的矛盾,一直是互联网界的主要矛盾之一。
请求量大的时候怎么办?升级配置 - scale up
机器升无可升了怎么办?增加机器 - scale out
LVS 就是用于 scale out。
LVS将多台服务器联合在一起,提供的性能就像一台超级服务器一样。
而在客户端看来似乎就只有一台服务器。
由于这个超级服务器,只是一个用一些 Linux 服务器构造的虚拟的假象,所以称之为 Linux 虚拟服务器,即 Linux Virtual Server - LVS.
# 2.2架构
LVS是一个集群,由两个角色组成:
- 一台分发器服务器 DS (Director Server);
- 真正提供功能的服务器 RS (Real Server);一台到多台;
其中涉及多个IP(IP+Port):
- VIP:虚拟IP virtual IP
- DIP:分发器的IP Director IP
- RIP:真实提供业务功能的服务器IP
- CIP:客户端IP client IP
工作原理:
- Client 的请求到达 DS 的IP(VIP),DS负责将请求通过 DIP 转发到 RS 的 IP(RIP)
- RS处理结束后,将数据返回给客户端。
- 不同的 LVS 模式,数据返回给客户端的方式也不同。
一般提到 LVS 时,指的只是那台分发器;提到 VIP 也是指分发器
# 2.3特性
- 对于客户端透明,客户端意识不到LVS的存在(反向代理的特性);
- LVS的 DS 只转发,client 是在与 RS 握手,建链接(DS上netstat看不到);
- 工作中的 DS 只有一台;但是可以有backup,一旦工作的中的DS故障,立刻换备机;
- RS 不一定是 web 服务,也可以是 Redis MySQL(LVS工作在四层);
- RS提供的是镜像服务,即每个RS提供的服务都一样;
- 一个 VIP+Port 能且只能代理一个服务
- 一台服务器可以添加多个VIP+Port
# 2.4实现模式和常用调度算法
模式:
- NAT
- Full-NAT
- DR
- IP Tunnal
静态调度算法:
- RR/RoundRobin 轮询
- WRR 含权重的轮询
- Sh/Source IP Hash
- Dh
动态调度算法:
- LC least-connection 最小链接
- WLC 含权重的最小链接
# 3.参考文档
- LVS 中文站点:http://zh.linuxvirtualserver.org/
- http://www.linuxvirtualserver.org/zh/lvs3.html
- B站视频:https://www.bilibili.com/video/BV1cJ411x7of?p=1