一、负载均衡简介
负载均衡是一种将多台服务器以对称的方式组成一个服务器集合,通过某种负载分担技术,将外部发送来的请求均匀地分配到对称结构中的某一台服务器上,这种技术可以确保每台服务器承担的负载相对平均,避免单台服务器压力过大或过小。
二、常见负载均衡方式
用户手动选择
1.1 优势
实现方式简单,只需展示所有节点即可。
1.2 劣势
负载均衡不均匀,可能出现某些节点压力过大,有些节点毫无压力。
DNS轮询均衡
2.1 优势
实现方式简单,用户无感知。
2.2 劣势
可靠性低,出问题修复慢;负载均衡不均匀,可能出现某些节点压力过大,有些节点毫无压力。
四层/七层负载均衡
3.1 四层负载均衡
在TCP/UDP层面,将外部的IP地址映射到内部的多个IP地址中,每次请求使用其中的一个IP地址,从而实现负载均衡的目的。
优势:可靠性高,更新速度快,提供健康检查。
劣势:硬件实现需要购买专属硬件;软件实现需要自行配置部署。
3.2 七层负载均衡
在HTTP协议层面,将用户请求进行分发。
优势:功能多,控制灵活强大。
劣势:性能可能略低于四层负载均衡。
硬件负载均衡和软件负载均衡
4.1 硬件负载均衡
通过硬件设备实现的负载效果更好、效率高、性能稳定,但是成本比较高。
4.2 软件负载均衡
通过软件实现的负载均衡主要依赖于均衡算法的选择和程序的健壮性,网络处理性能方面不如硬件负载均衡,但是不需要购买专门软件,成本较低。
三、常见算法
轮询算法
1.1 优势
实现简单。
1.2 劣势
无法平衡不同主机之间的性能。
加权轮询算法
2.1 优势
可以在基本的轮询策略上加入不同的权重,指定各个节点被轮询的几率。
2.2 劣势
需要合理配置权重,否则可能导致负载不均。
IP Hash算法
3.1 优势
同一个用户的请求始终在同一台服务器上处理,不存在连接保持的问题。
3.2 劣势
无法保证后端服务器之间的负载均衡,可能有些后端压力会较大,而有些压力较小。
四、拓展算法
Fair算法
1.1 优势
Nginx可以通过第三方模块fair来拓展负载均衡算法,通过Nginx后端的响应时间来判断负载情况,Nginx会将请求分发给负载最轻的节点。
1.2 劣势
需要手动编译第三方模块。
URL Hash算法
2.1 优势
Nginx可以通过第三方模块url hash来拓展负载均衡算法,与ip hash类似,不同的是针对客户端请求的URL进行hash,在后端有缓存的情况下,可以提升缓存的利用率。
2.2 劣势
如果让节点出现异常无法自动排除节点。
五、其他负载平衡
Nginx轮询负载均衡
Nginx最少连接数负载均衡
Nginx随机分配负载均衡
Nginx分路径轮询负载均衡
Nginx加权轮询负载均衡
Nginx ip_hash负载均衡
Nginx TCP负载均衡
六、LVS调度算法实战
LVS介绍
LVS(Linux Virtual Server)是一个由章文嵩博士发起的自由软件项目,现在它已经是 Linux标准内核的一部分,LVS具有高并发连接、稳定性强、成本低、配置简单等优点,但也存在工作在4层,不支持7层规则修改等不足。
LVS核心组件和专业术语
核心组件:LVS的管理工具和内核模块ipvsadm/ipvs。
专业术语:VS(Virtual Server)、Director(负载均衡器、分发器)、RS(Real Server)、CIP(Client IP)、VIP(Director Virtual IP)、DIP(Director IP)。
LVS的四种模式区别
NAT模式:请求报文和响应报文都需经过VS,支持端口映射。
DR模式:数据报文进入到VS服务器后修改目标MAC地址,不能跨路由,故VS服务器与RS之间不能存在路由器。
TUN模式:请求报文要经由 Director,但响应报文由RS直接发往 Client,可以实现跨机房、跨区域调度。
FULLNAT模式:通过同时修改请求报文的源IP地址和目标IP地址进行转发,请求和响应报文都经由 Director。
LVS调度算法
静态方法:仅根据算法本身进行调度,不考虑各RS当前的负载状态,包括RR(轮询)、WRR(加权轮询)、SH(源地址哈希)、DH(目标地址哈希)。
动态方法:主要根据每RS当前的负载状态及调度算法进行调度,包括LC(最小连接数)、WLC(加权最小连接数)、SED(最短期望延迟)、NQ(永不排队)。
以上内容就是解答有关“负载均衡集群学习笔记”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1333293.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复