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