运维面试之负载均衡篇

190 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 10 天,点击查看活动详情 负载均衡通常指的是根据当前网络的流量分布、中心机房服务器的负载和用户请求的特点,将用户的请求分发到不同的数据中心机房或者机房服务器上,目的就是保障用户内容访问的流畅性。通常包括全局负载均衡和本地负载均衡。

全局负载主要指跨机房的负载均衡,通过DNS解析、应用层重定向将用户的请求负载到就近的中心机房上。本地负载主要指机房内部的负载均衡,比如通过缓存服务器,基于LVS、Nginx等实现用户访问的负载。

Web项目中常用的负载均衡有四层与七层,四层就是基于IP和端口号的方式,实现网络负载均衡,对外提供一个虚拟IP地址和端口,用于接受所有用户请求,根据具体的负载均衡策略将请求分发至后端真实服务器。七层负载基于URL资源,真正实现基于内容的负载,通过虚拟URL或者主机名接收所有用户请求,再发给后端真实服务器。

LVS等技术是基于Socket实现的四层负载均衡,Nginx等技术是基于内容分发的七层负载均衡,比如将“/user/”开头的URL请求分发到单点登录服务器,将“/business/”开头的URL请求分发到业务服务器。

下图是LVS的DR模式,在四层负载工作的原理图:
image.png LVS DR模式工作原理是:客户端向负载均衡发出请求,源地址是客户端IP地址,目的地址是整个集群的VIP地址,交换机负责转发客户端请求,LVS负载均衡器进行算法调度,将请求转发到后端某台真实服务器,请求报文的源地址为客户端IP地址,目的地址为集群VIP地址,后端真实服务器作出响应,源地址是集群VIP地址,目的地址是客户端IP地址,不通过LVS负载均衡服务器直接与客户端发生联系,响应客户端发出的HTTP请求。 下图是Ngnix,在七层负载工作的原理图:
image.png Ngnix负载工作原理是:客户端向Nginx发出请求,源地址为客户端ip地址,目的地址为集群VIP地址,交换机负责转发,Ngnix利用自身算法进行调度,建立TCP连接,将客户端请求发送到后端真实web服务器,源地址为客户端ip,目的地址为真实web服务的ip地址,Nginx向后端真实服务器发请求,后端真实服务器作出响应,报文经过Nginx时,源地址被还原为集群VIP地址,目的地址是客户端IP地址。