当前位置:网站首页>负载均衡应用场景
负载均衡应用场景
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版本。
边栏推荐
- 2022 Huashu Cup Mathematical Modeling Ideas Analysis and Exchange
- Opencv算术操作
- 登录功能和退出功能(瑞吉外卖)
- poj2287 Tian Ji -- The Horse Racing(2016xynu暑期集训检测 -----C题)
- 第九章:activit内置用户组设计与组任务分配和IdentityService接口的使用
- 一个栈的输入序列为1 2 3 4 5 的出站顺序的理解
- 19.3 restart the Oracle environment
- PCB布局必知必会:教你正确地布设运算放大器的电路板
- SMB + SMB2: Accessing shares return an error after prolonged idle period
- MySQL transactions
猜你喜欢
阿里顶级架构师多年总结的JVM宝典,哪里不会查哪里!
还在找网盘资源吗?快点收藏如下几个值得收藏的网盘资源搜索神器吧!
Technical dry goods | Hausdorff distance for image segmentation based on MindSpore
How can project cost control help project success?
数据可视化(一)
百年北欧奢华家电品牌ASKO智能三温区酒柜臻献七夕,共品珍馐爱意
【MindSpore易点通机器人-01】你也许见过很多知识问答机器人,但这个有点不一样
高质量 DeFi 应用构建指南,助力开发者玩转 DeFi Summer
智能算力的枢纽如何构建?中国云都的淮海智算中心打了个样
What is SPL?
随机推荐
Header file search rules when compiling with GCC
Getting started with Polkadot parachain development, this article is enough
七夕来袭!还要做CDH数据迁移怎么办?来看看DistCp
A small test of basic grammar, Go lang1.18 introductory refining tutorial, from Bai Ding to Hongru, basic grammar of go lang and the use of variables EP02
一个栈的输入序列为1 2 3 4 5 的出站顺序的理解
PCB layout must know: teach you to correctly lay out the circuit board of the op amp
Chapter 4: In the activiti process, variable transmission and acquisition process variables, setting and acquiring multiple process variables, setting and acquiring local process variables "recommende
【 temperature warning program DE development 】 event driven model instance
第四章:redis 数组结构的set和一些通用命令「建议收藏」
【综合类型第 35 篇】程序员的七夕浪漫时刻
DFINITY 基金会创始人谈熊市沉浮,DeFi 项目该何去何从
项目成本控制如何帮助项目成功?
【MindSpore易点通机器人-01】你也许见过很多知识问答机器人,但这个有点不一样
[Android]如何使用RecycleView in Kotlin project
[强网杯2022]WP-UM
PHP operation mangoDb
用户考试分数大于单科科目平均分的查询
化繁为简!阿里新产亿级流量系统设计核心原理高级笔记(终极版)
FPGA: Basic Getting Started LED Lights Blinking
linux下oracle常见操作以及日常积累知识点(函数、定时任务)