负载均衡常用组件介绍
一 DNS
DNS 是一种实现负载均衡的方式,为了扩展后端的服务能力,我们会在一个域名下配置多个 IP 地址。在 DNS 上可以配置访问策略,按照运营商、地域进行优先选择,然后按照随机的方式分配被访问的节点。
DNS 一般用在 Web 类业务中,用户在请求域名的时候,会先访问 DNS 服务器,从 DNS 服务器中解析到真正的 IP 地址,然后通过 IP 地址访问服务器。
如果服务端要做扩容或缩容,则可以通过修改 DNS 配置文件控制服务器数量、地域接入分布及权重等。
优点
配置简单,不用单独开发和维护负载均衡服务器。
缺点
存在多级缓存的问题。由于 DNS 服务器在全球呈树状结构,每一级 DNS 服务器都缓存上一级服务器的信息,客户端也会有缓存。更新不及时,就不能达到配置更新后立即刷新数据的目的。在实际开发中,甚至出现访问一个月之前老 DNS 缓存的现象。
DNS 作为一级负载均衡的手段,主要用于对不同运营商、地域进行接入和分流,后面还要配合 Nginx 或 LVS 等虚拟 IP 地址的方式作为二级缓存。
二 Nginx
在 HTTP 服务器 Nginx 上也有实现负载均衡的功能,只需要简单地配置,就能够对后端服务进行负载均衡转发。Nginx 支持轮询、最小连接数和 ip-hash 三种方式的负载均衡。
Nginx 还可以开发插件,有很多在 Nginx 插件上建立负载均衡。
1 默认的负载均衡配置——轮询
http{upstream myapp1{server srv1.example.com weight = 3;server srv2.example.com;server srv3.example.com;}server{listen 80;location / {proxy_pass http://myapp1;}}
}
上面配置了三台后端 server(srv1~srv3)。该配置是轮询算法,依次把 80 端口的请求转发给后端的 srv1、srv2、srv3。如果在某个 server 上加上 weight 配置,就转换成按权重轮询,默认的权重是 1。
2 最小连接数:
upstream myapp1{least_conn;server srv1.example.com weight = 3;server srv2.example.com;server srv3.example.com;}
如果按照最小连接数的方案进行转发,那么只需要修改 upstream 的配置即可,在其中加上 least_conn 的配置。
3 源地址 Hash
upstream myapp1{ip_hash;server srv1.example.com weight = 3;server srv2.example.com;server srv3.example.com;}
Nginx 还可以按照客户端源地址进行 Hash 运算后转发,保证相同客户端的请求都能落在同一后端 server 上。只需要修改 upstream 的配置,在其中加上 ip_hash 的配置即可。
三 LVS
对于分布式网络服务,LVS(Linux Virtual server,Linux虚拟服务器)能够基于 IP 层和内容进行请求分发和负载均衡。在 Linux 内核实现调度算法,将服务器集群构成一个可伸缩高可用的网络服务的虚拟服务器。
当只用 LVS 时,对外展示的是一个虚拟 IP 地址。通过 LVS,根据负载均衡算法转到实际的实体 IP 地址上。算法可以是轮询、随机、源地址 Hash 等,提供多种方式供用户选择。而且会对后端实体机器进行健康检查,当发现后端有异常时,会删除有异常的节点,把请求转到健康节点上。后端恢复后再把请求重新接入进来。
LVS的主要实现模式如下:
- NAT 模式——通过修改目标 IP 地址实现
- DR 模式——通过修改目标 MAC 地址实现
- TUN 模式——通过 IP 隧道协议实现
负载均衡常用组件介绍相关推荐
- Nginx负载均衡集群介绍
第1章 集群介绍 1.1 集群简介 1.1.1 什么是集群 简单说,集群就是一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行 ...
- 18.6 负载均衡集群介绍 18.7 LVS介绍 18.8 LVS调度算法 18.9/18.10 LVS NAT模式搭建
2019独角兽企业重金招聘Python工程师标准>>> 18.6 负载均衡集群介绍 实现负载均衡集群的软件有:LVS.Keepalived.Nginx.haproxy等.其中LVS属 ...
- Spring Clould负载均衡重要组件:Ribbon中重要类的用法
Ribbon是Spring Cloud Netflix全家桶中负责负载均衡的组件,它是一组类库的集合.通过Ribbon,程序员能在不涉及到具体实现细节的基础上"透明"地用到负载均衡 ...
- 负载均衡原理剖析与实践:负载均衡第一篇-介绍篇
负载均衡第一篇-介绍篇 系列文章索引: 负载均衡第一篇-介绍篇 负载均衡第二篇-负载均衡基础知识普及 前言:相信朋友们对负载均衡应该不陌生了!特别是对搞运维的朋友!可能很多的技术人员认为,负载 ...
- 负载均衡集群介绍LVS介绍LVS调度算法LVS NAT模式搭建
2019独角兽企业重金招聘Python工程师标准>>> 18.6 负载均衡集群介绍 • 主流开源软件LVS.keepalived.haproxy.nginx等 • 其中LVS属于4层 ...
- 负载均衡集群介绍、LVS介绍、LVS调度算法、 LVS NAT模式搭建
负载均衡集群介绍 LVS介绍 lvs的NAT模式介绍 这种模式借助iptables的nat表来实现,用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的服务器上去,这些服务 ...
- SQL Server 2005实现负载均衡的详细介绍
SQL Server 2005实现负载均衡的详细介绍 SQL Server 2005仍然不直接地支持负载均衡--但是它为以前SQL Server版本中可用的所有负载均衡方法提供了令人激动的改善和支持. ...
- Nginx负载均衡常用配置
搭建实验环境(使用docker部署两台nginx容器) 1)使用搭建第一台nginx服务 [root@linux-node4 ~]# docker container run -d --name we ...
- Nginx源码实现的细枝末节 11个阶段的实现丨Nginx Filter|中间件开发|惊群效应|负载均衡丨组件丨c/c++linux服务器开发
Nginx源码实现的细枝末节 11个阶段的实现 视频讲解如下,点击观看: Nginx源码实现的细枝末节 11个阶段的实现丨Nginx Filter|中间件开发|惊群效应|负载均衡丨组件丨c/c++li ...
最新文章
- python语法教程-Python语言的核心语法(1)(语法教程)(参考资料)
- 【ijkplayer】编译 Android 版本的 ijkplayer ⑤ ( 执行 init-android-libyuv.sh | 执行 init-android-soundtouch.sh )
- RHEL6基础之十八Linux中Kill进程的方法
- 升级android 6.0系统
- 《Python Cookbook 3rd》笔记(5.21):序列化 Python 对象
- 模拟电子技术不挂科学习笔记3(放大电路的分析方法)
- ue4小白人骨骼定义_【Blender】用SkinModifier+骨骼顶点“灵活”快速创建雕刻需要用的基本人物模型...
- React开发中常见问题和 Warning
- Uploadify-中文帮助手册
- 宋宝华《Linux设备驱动开发详解》
- GPS经纬度转84坐标系
- css字体超出显示点点点
- 软件测试,谱尼为网络安全护航
- PostgreSQL数据库学习手册之大对象
- win10安装super-url出现编码错误解决方法
- 阿里云ECS学习资源
- 1134: 字符串转换
- android动态获取地理位置权限,Android6.0获取GPS定位和获取位置权限和位置信息的方法...
- vue3.0 组合式API 加加减减
- 使用钩子函数获取全部的鼠标消息和键盘消息
热门文章
- TryHackMe-Carnage
- MSSQL2005+分组添加序号
- memcached noreply 和tcp Nagle
- PEP 8 E231 missing whitespace after ‘,’
- 排球比赛规则的程序化
- java web getrealpath,[学习笔记]java web ServletContext.getRealPath(String str)方法的使用
- 线程池详解(通俗易懂超级好)
- 什么是Net5? 来自Net5(net core)的开场白
- Spring cloud alibaba(二)nacos服务发现docker相同ip冲突
- 继推出科创板,证监会将统筹推进新三板创业板改革