当前位置:网站首页>负载均衡应用场景
负载均衡应用场景
2022-08-05 10:29:00 【程序员青菜】
一、背景
这两天在盘点IT资产,发现阿里云SLB每天在扣费,这个SLB是以前用来做公众号&小程序服务端负载均衡用的,现在牛奶业务处于维护老客户阶段,ECS只用一台就可以,SLB其实可以释放了。
二、负载均衡概念
负载均衡:对外部请求的流量分发到不同的后端服务器来扩展应用的吞吐能力以及消除单点故障。
DNS轮询负载均衡:DNS服务器将解析请求按照A记录的顺序,随机分配到不同的IP上。
四层负载均衡:四层指OSI的TCP层,四层负载均衡服务器接受客户端请求后,修改数据包的地址信息(IP+端口)将流量转发到应用服务器,一般可以将一个公网的IP映射成多个内部服务器地址。
七层负载均衡:七层指OSI的应用层,七层负载均衡服务器可以根据客户请求的URL或HTTP报头来做分发。
硬件四/七层负载均衡:通过智能交换机实现,处理能力强,但是很贵,最出名的就是F5,咱也没玩过。
三、DNS轮询配置例子
对同一主机名添加多条A记录,下面是我在35互联上做的一个解析。

将lb.vanmilk.com解析到 118.178.255.158和121.40.77.22,使用dig命令检查发现确实被解析到两个IP地址上了。
这是相对来讲成本最低的一种负载均衡做法,但存在两个很明显的缺点
1、可靠性低:当一台服务器挂了,你必须去DNS去下掉该IP,但DNS有缓存,需要一些时间后才会生效。
2、负载分配不均衡:采用简单轮询算法,不能为性能较好的服务器多分配请求。
四、软件四层负载均衡
最出名的就是LVS,是章文嵩开发的,大神级别的人物,阿里云很多基础设施都是他主导搭建的吧,膜拜一下。
阿里云的SLB:支持TCP/UDP四层负载,强大的四层处理能力,也支持HTTP/HTTPS七层负载但对七层的支持能力较弱,仅支持基于域名和URL转发,单实例连接数可以达500万,如果我没猜错的话这个应该是来源于LVS,更强大的面向应用ALB,咱也还没玩过。
SLB配置方法:
1、创建SLB实例,如果流量比较小,直接用按量付费就可以。
2、DNS解析指向SLB的公网IP。
3、配置监听,指定监听端口,如果是443要配置一下SSL证书,然后配置后端服务器,配置健康检查(当后端服务挂了,它就不会再向该台服务器转发请求)。

4、可以设置每台服务器的权重,应用发布的时候,把权重设置为0,等发布完了再调回去,这样就是不停机发布。
5、SLB配置好了基本就不用管了,然后每年SSL证书有变更,这里需要重新把证书推送上去。
五、Nginx反向代理实现软件七层负载均衡
前端部署Nginx服务器,后端部署Tomcat应用,用户访问时静态资源由Nginx直接返回,动态资源分发到Tomcat服务器,处理完成后返回数据组Nginx,Nginx再返回给浏览器。
Nginx配置负载主要有几下几种方式
1、轮询
实验环境
121.40.77.25 搭建Nginx服务器做负载
121.40.77.25 应用1
118.178.255.158 应用2
为了方便实验,在两台机器用nc -l 9999启动端口在监听,nc的具体应用可以参见 瑞士军刀。
upstream polling{
server 121.40.77.25:9999 weight=1;
server 118.178.255.158:9999 weight=2;
}
server {
listen 80;
server_name 121.40.77.25;
location /{
proxy_pass http://polling;
}
}默认就是轮询方式,weight不配置按请求时间均匀分配到对应的服务器,如果服务器down掉会自动剔除,这种配置一个问题是同一个客户端每次请求不一定分发到后端同一台服务器。
2、ip_hash
请求按IP 哈希结果分配,这样每个客户请求会被固定到访问某一台服务器,如果后端服务器down掉,需要手工将其标记为down状态,这种配置就不用解决会话同步的问题。
upstream polling{
ip_hash;
server 121.40.77.25:9999;
server 118.178.255.158:9999;
}3、url_hash
可以将相同的URL映射到后端一台固定服务器,这个是Nginx第三方插件,需要编译时安装该插件。
4、Nginx负载一个案例
我们的Vistablinds网站,当时有一个Php版本和一个Java版本,需要用Java版本替换掉Php版本,但又不能一次性全部切换,当时就用Nginx反向代理来实现,并且做了根据Cookie来保证原来访问Php版本的用户让其继续访问Php版本。

边栏推荐
- 秘乐短视频挖矿系统开发详情
- 牛刀小试基本语法,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本语法和变量的使用EP02
- 教你本地编译运行一个IDEA插件,在IDEA里聊天、下棋、斗地主!
- 2022 Hangzhou Electric Power Multi-School Session 6 1008.Shinobu Loves Segment Tree Regular Questions
- JS逆向入门学习之回收商网,手机号码简易加密解析
- How to choose coins and determine the corresponding strategy research
- SkiaSharp 之 WPF 自绘 投篮小游戏(案例版)
- Development common manual link sharing
- 60行从零开始自己动手写FutureTask是什么体验?
- 百年北欧奢华家电品牌ASKO智能三温区酒柜臻献七夕,共品珍馐爱意
猜你喜欢

Technical dry goods | Hausdorff distance for image segmentation based on MindSpore

【 temperature warning program DE development 】 event driven model instance

three objects are arranged in a spherical shape around the circumference

three.js debugging tool dat.gui use

教你本地编译运行一个IDEA插件,在IDEA里聊天、下棋、斗地主!

气象数据数据处理实例——matlab字符串切割匹配与R语言日期匹配(数据拼接)

产品太多了,如何实现一次登录多产品互通?
![[Strong Net Cup 2022] WP-UM](/img/3d/caeab05ddca278af274dbf6e2f8ba1.png)
[Strong Net Cup 2022] WP-UM

What is SPL?

FPGA:开发环境Vivado的使用
随机推荐
SMB + SMB2: Accessing shares return an error after prolonged idle period
如何测试一下现场的备机失败,转发主机的场景?
JS introduction to reverse the recycling business network of learning, simple encryption mobile phone number
今天告诉你界面控件DevExpress WinForms为何弃用经典视觉样式
2022 Huashu Cup Mathematical Modeling Ideas Analysis and Exchange
力扣(LeetCode)216. 组合总和 III(2022.08.04)
这份阿里强推的并发编程知识点笔记,将是你拿大厂offer的突破口
Is digital transformation a business buy-in?
Opencv图像缩放和平移
The founder of the DFINITY Foundation talks about the ups and downs of the bear market, and where should DeFi projects go?
【翻译】混沌网+SkyWalking:为混沌工程提供更好的可观察性
SQL外连接之交集、并集、差集查询
SkiaSharp 之 WPF 自绘 投篮小游戏(案例版)
Huawei's lightweight neural network architecture GhostNet has been upgraded again, and G-GhostNet (IJCV22) has shown its talents on the GPU
js hijacks the array push method
JS逆向入门学习之回收商网,手机号码简易加密解析
第八章:activiti多用户任务分配
js劫持数组push方法
GCC编译的时候头文件搜索规则
一张图看懂 SQL 的各种 join 用法!