Loading...
墨滴

公众号:offer多多

2021/08/26  阅读:42  主题:橙心

60秒问答第10题:负载均衡

60秒问答第10题:负载均衡

一、青铜(下白):发现海量知识碎片。

说说明客户端是怎么连接的,是怎么分发的
说说明客户端是怎么连接的,是怎么分发的

1.1 思考60秒:负载均衡器可以处理什么样的请求?

载均衡器的管理员能主要为下面四种主要类型的请求设置转发规则:

HTTP
HTTPS

TCP
UD

1.2 思考60秒:策略

  • 一致性哈希(Consistent Hash)

算法的目标是:相同的请求尽可能落到同一个服务器上。

1.3 我写代理 模块,别人为什么问负载均衡的设计? 别人不转移话题吗?

负载均衡分类
现在我们知道,负载均衡就是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁碟驱动器或其它资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。那么,这种计算机技术的实现方式有多种。大致可以分为以下几种,其中最常用的是四层和七层负载均衡:

二层负载均衡

负载均衡服务器对外依然提供一个VIP(虚IP),集群中不同的机器采用相同IP地址,但机器的MAC地址不一样。当负载均衡服务器接受到请求之后,通过改写报文的目标MAC地址的方式将请求转发到目标机器实现负载均衡。

三层负载均衡

和二层负载均衡类似,负载均衡服务器对外依然提供一个VIP(虚IP),但集群中不同的机器采用不同的IP地址。当负载均衡服务器接受到请求之后,根据不同的负载均衡算法,通过IP将请求转发至不同的真实服务器。

四层负载均衡

四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还包含源端口号及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。**七层负载均衡

七层负载均衡

工作在OSI模型的应用层,应用层协议较多,常用http、radius、DNS等。七层负载就可以基于这些协议来负载。这些应用层协议中会包含很多有意义的内容。比如同一个Web服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡

二、白银:你不知道,别人知道的

2.1 思考60秒 Nginx七层负载均衡是啥意思?

  • 七层负载均衡它是在应用层,那么它可以完成很多应用方面的协议请求,

比如我们说的http应用的负载均衡,它可以实现http信息的改写、头信息的改写、安全应用规则控制、U RL匹配规则控制、以及转发、rewrite等等的规则,

所以在应用层的服务里面,我们可以做的内容就更多,那么Nginx则是一个典型的七层负载均衡SLB

Nginx :在1.9版本之前只能做7层负载,在1.9版本之后,出来一个叫做stream模块,4层7层都能做 (软件)

Haproxy :4层,7层 (软件)

LVS : 4层 。ipvsadm,修改路由,把一台服务器相当于变成了一台物理“硬件负载均衡” (专业做4层,速度最快)


LVS通过工作于内核的ipvs模块来实现功能,其主要工作于netfilter 的INPUT链上。
而用户需要对ipvs进行操作配置则需要使用ipvsadm这个工具。
ipvsadm主要用于设置lvs模型、调度方式以及指定后端主机。


2.2 思考60秒 四层负载均衡与七层负载均衡区别?

1 注意:四层负载均衡不识别域名,七层负载均衡识别域名

L4-根据来自网络和传输层协议(如IP地址和TCP端口)的数据指导通信。

L7-将内容切换添加到负载平衡。这允许基于诸如HTTP头、统一资源标识符、SSL会话ID和HTML表单数据等属性的路由决策。

  1. 所谓四层负载均衡,【不理解】

也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

  • 以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。

TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。

在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。

  1. 七层负载均衡设备 也称内容交换,也就是主要通过报文中的真正有意义的应用层内容

其实七层负载均衡服务器起了一个代理服务器的作用,

  • 我们知道建立一次TCP连接要三次握手; 而client要访问webserver要先与七层负载设备进行三次握手后建立TCP连接,把要访问的报文信息发送给七层负载均衡;

  • 然后七层负载均衡再根据设置的均衡规则选择特定的webserver,然后通过三次握手与此台webserver建立TCP连接, 然后webserver把需要的数据发送给七层负载均衡设备,负载均衡设备再把数据发送给client;

2.3 自己抓包验证 一文详解负载均衡和反向代理的真实区别

https://zhuanlan.zhihu.com/p/345647607

Client:10.8.21.40

负载均衡设备:172.16.75.83

VIP:172.16.75.84

RS1IP:172.16.75.82
RS2IP:172.16.75.85

透传模式

三、黄金(中级玩家):

3.1、 LVS

LVS(Linux Virtual Server),也就是Linux虚拟服务器,是一个由章文嵩博士发起的自由软件项目。

  • 使用LVS技术要达到的目标是:

通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。 从而以低廉的成本实现最优的服务性能。

  • LVS主要用来做四层负载均衡。

  • LVS和H5解决网络四层负载均衡,性能高于七层的Nginx,单机LVS可支持几十万并发请求转发

3.2 HAProxy

  • Haproxy主要用来做七层负载均衡
  • HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,是免费、快速并且可靠的一种解决方案。特别适用于那些负载特大的web站点

3.3 nginx主要用来做七层负载均衡。

总结:电信行业 查询账单。和计费2个场景。

大型系统演进之路-负载均衡演进
大型系统演进之路-负载均衡演进
Tomcat和数据库都可以水平扩展之后,单机的Nginx会成为瓶颈。
Tomcat和数据库都可以水平扩展之后,单机的Nginx会成为瓶颈。
  • Tomcat和数据库都可以水平扩展之后,单机的Nginx会成为瓶颈

  • 为解决LVS服务高可用,可以采用主备方式解决可用性,使用keepalived模拟虚拟IP,然后把虚拟IO绑定到多个LVS机器上,访问虚拟IP时,请求会被路由到真实到LVS服务器上,当主LVS宕机时,keepalived会自动更新路由策略,把虚拟IP重定向到另一台正常到LVS服务器上,达到LVS服务高可用。

DNS轮询实现多机房负载均衡
DNS轮询实现多机房负载均衡

微服务

公众号:offer多多

2021/08/26  阅读:42  主题:橙心

作者介绍

公众号:offer多多