负载均衡技术 Load Balance 简称 LB 是构建大型网站必不可少的架构策略之一。它的目的是把用户的请求分发到多台后端的设备上,用以均衡服务器的负载。我们可以把负载均衡器划分为两大类:硬件负载均衡器和软件负载均衡器。这里重点介绍软件实现方法中的 LVS 和 Keepalived。
LVS 和 Keepalived 的原理介绍和配置实践
2019 年 09 月 03 日 - 拆分 LVS-Keepalived
2019 年 08 月 23 日 - 更新 LVS/NAT、LVS/DR、LVS/TUN 三种模式的原理和配置实践
2018 年 12 月 03 日 - 精简和更新配置步骤
2018 年 07 月 31 日 - 初稿
阅读原文 - https://wsgzao.github.io/post/lvs-keepalived/
扩展阅读
LVS - http://www.linuxvirtualserver.org/zh/index.html
Keepalived - http://www.keepalived.org/
How virtual server works? - http://www.linuxvirtualserver.org/how.html
LVS 和 Keepalived 官方中文手册 PDF - https://pan.baidu.com/s/1s0P6nUt8WF6o_N3wdE3uKg
以下术语涉及 LVS 三种工作模式的原理
负载均衡实现方法有两种:硬件实现和软件实现
硬件比较常见的有:
软件比较常见的有:
LVS 特点是:
Nginx 负载均衡器的特点是:
HAProxy 的特点是:
在 lvs+keepalived 环境里面,lvs 主要的工作是提供调度算法,把客户端请求按照需求调度在 real 服务器,keepalived 主要的工作是提供 lvs 控制器的一个冗余,并且对 real 服务器做健康检查,发现不健康的 real 服务器,就把它从 lvs 集群中剔除,real 服务器只负责提供服务。
LVS 是一个开源的软件,可以实现 LINUX 平台下的简单负载均衡。LVS 是 Linux Virtual Server 的缩写,意思是 Linux 虚拟服务器。
LB 集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到 Director Server 上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器 (real server) 上。为了避免不同机器上用户请求得到的数据不一样,需要用到了共享存储,这样保证所有用户请求的数据是一样的。
LVS 是 Linux Virtual Server 的简称,也就是 Linux 虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvirtualserver.org 现在 LVS 已经是 Linux 内核标准的一部分。使用 LVS 可以达到的技术目标是:通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS 架构从逻辑上可分为调度层、Server 集群层和共享存储。
目前有三种 IP 负载均衡技术( VS/NAT,VS/TUN,VS/DR )
Virtual Server via Network Address Translation ( VS/NAT ) 通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
Virtual Server via IP Tunneling ( VS/TUN ) 采用 NAT 技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报 文通过 IP 隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用 VS/TUN 技术后,集群系统的最大吞吐量可以提高 10 倍。
Virtual Server via Direct Routing ( VS/DR ) VS/DR 通过改写请求报文的 MAC 地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同 VS/TUN 技术一样,VS/DR 技术可极大地 提高集群系统的伸缩性。这种方法没有 IP 隧道的开销,对集群中的真实服务器也没有必须支持 IP 隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连 在同一物理网段上。
三种模式的主要区别
| | VS/NAT | VS/TUN | VS/DR | ---|---|---|--- | server | any | tunneling | non-arp device | | server network | private | LAN/WAN | LAN | | server number | low (10~20) | high | high | | server gateway | load balancer | own router | own router |
|模式与特点|NAT 模式 |IPIP 模式 |DR 模式 | ---|---|---|--- |对服务器的要求 |服务节点可以使任何操作系统|必须支持 IP 隧道,目前只有 Linux 系统支持 |服务器节点支持虚拟网卡设备,能够禁用设备的 ARP 响应 | |网络要求 |拥有私有 IP 地址的局域网络 |拥有合法 IP 地址的局域,网或广域网 |拥有合法 IP 地址的局域,服务器节点与负载均衡器必须在同一个网段 | |通常支持节点数量 |10 到 20 个,根据负载均衡器的处理能力而定|较高,可以支持 100 个服务节点 |较高,可以支持 100 个服务节点 | |网关 |负载均衡器为服务器节点网关 |服务器的节点同自己的网关或者路由器连接,不经过负载均衡器 |服务节点同自己的网关或者路由器连接,不经过负载均衡器| |服务节点安全性 |较好,采用内部 IP,服务节点隐蔽 |较差,采用公用 IP 地址,节点安全暴露 |较差,采用公用 IP 地址,节点安全暴露 | |IP 要求 |仅需要一个合法的 IP 地址作为 VIP 地址 |除了 VIPO 地址外,每个服务器界定啊需要拥有合法的 IP 地址,可以直接从路由到客户端|除了 VIP 外,每个服务节点需拥有合法的 IP 地址,可以直接从路由到客户端 | |特点 |地址转换 |封装 IP |修改 MAC 地址 | |配置复杂度 |简单 |复杂 |复杂|
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.