【云计算】云数据中心网络(七):负载均衡

news/2024/5/19 14:53:35

云网络》系列,共包含以下文章:

  • 云网络是未来的网络基础设施
  • 云网络产品体系概述
  • 云数据中心网络(一):VPC
  • 云数据中心网络(二):弹性公网 IP
  • 云数据中心网络(三):NAT 网关
  • 云数据中心网络(四):IPv6 网关
  • 云数据中心网络(五):对等连接
  • 云数据中心网络(六):私网连接
  • 云数据中心网络(七):负载均衡

😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!

云数据中心网络(七):负载均衡

  • 1.什么是负载均衡
  • 2.负载均衡的分类
    • 2.1 传统型负载均衡 CLB
    • 2.2 应用型负载均衡 ALB
  • 3.负载均衡的优势
  • 4.负载均衡的主要应用场景
    • 4.1 大流量的处理和调度
    • 4.2 基于应用层的流量调度
    • 4.3 云原生、微服务场景
    • 4.4 业务高可用
  • 5.面向云原生的负载均衡
    • 5.1 容器网络 Ingress 网关
    • 5.2 微服务发现与高可用
    • 5.3 零信任安全模型

随着移动互联网应用的蓬勃发展,对企业级应用系统的要求越来越高,应用系统常常会在以下几个方面遇到挑战,如下图所示。

在这里插入图片描述

  • 高可用Always Online):移动互联网对业务高可用有更高的要求,用户应用型系统必须具备强大的高可用和容灾能力,能发现并排除不健康的服务,在可用区及地域间进行容灾,以实现业务运行永不停止。
  • 超高弹性Super Elastic):5G 让接入网络变得更快,带宽变得更高,IoT 技术将使得互联网上的客户端数量呈爆炸式增长,因此在 5G / IoT 时代,应用系统必须能够承接更大的并发连接,以及更大的带宽。类似直播带货、在线电商秒杀等业务场景的成熟应用,会导致在线用户数在短时间内出现指数级的暴增,应用系统需要有非常好的弹性,以应对这些突如其来的流量洪峰,在流量高峰期能够自动扩容,在流量低谷期能够自动缩容。
  • 面向应用Application-Oriented):随着各类业务越来越复杂,业务的快速交付成了用户越来越关注的点。由于微服务、云原生等技术的广泛应用,负载均衡将不仅面向网络层提供服务,还需要深入应用层;不仅做网络入口,还需要面向应用交付,实现业务转发。在云原生 Ingress 场景下,更需要大量基于内容的高级路由特性以实现金丝雀发布、故障注入、流量仿真等重要的云原生开发模式。
  • 安全可靠Security & Trust):网络环境越来越复杂,网络中应用系统的复杂度也不断攀升,从而导致安全漏洞也在逐年增加,网络安全事关企业的生死存亡。网络安全防线被突破不仅意味着业务受损,更可能导致关键数据、信息的丢失,是企业无法承受之痛,安全始终是企业用户最关注的特性之一。

负载均衡可以帮助企业有效地解决上述痛点。

1.什么是负载均衡

负载均衡Server Load BalancerSLB)是一种对流量进行按需分发的服务,通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,可以消除系统中的单点故障,提升应用系统的可用性。

阿里云提供全托管式在线负载均衡服务,具有即开即用、超大容量、稳定可靠、弹性伸缩、按需付费等特点,适合超大规模互联网应用,如春节红包、双11秒杀抢购、大规模在线物联网应用等高并发场景。

阿里云负载均衡提供 4 层、7 层负载均衡服务,其中 4 层负载均衡工作在 传输层(OSI 参考模型中第 4 层),基于 TCP / UDP 协议工作,4 层负载均衡单实例可以支持高达千万级别的并发连接与百万级别的每秒新建连接。

区别于 4 层负载均衡,7 层负载均衡工作在 应用层(OSI 参考模型中第 7 层),支持 HTTP、HTTPS、HTTP2、WSS、QUIC、GRPC 等众多应用协议,单实例可支持高达 100 万 QPS,7 层负载均衡支持 SSL 卸载(或 HTTPS / TLS 卸载),负载均衡负责 HTTPS 流量的加密与解密,后端服务器仅需处理普通 HTTP 流量,可以极大地节省后端服务在数据加解密上的算力,有效控制后端服务器的规模与成本。

2.负载均衡的分类

2.1 传统型负载均衡 CLB

传统型负载均衡 CLB(Classic Load Balancer)支持 TCP、UDP、HTTP、HTTPS,具备海量业务的 4 层处理能力,以及基于内容的 7 层处理能力,如下图所示。
在这里插入图片描述
传统型负载均衡 CLB 采用 4 层加 7 层的部署方式,提供 HTTPS 和简单的 7 层路由处理功能,提供 IP 形态(固定不变)售卖,采用主备方式工作(可用区的主备关系由阿里云指定),同一时刻只有一个可用区中的实例处于工作状态,另外一个可用区中的实例待命,当工作中的实例发生故障时,触发主备切换。用户域名直接通过 A 解析(或 AAAA 解析)指向负载均衡提供的 VIP(虚拟 IP),如下图所示。

在这里插入图片描述

2.2 应用型负载均衡 ALB

应用型负载均衡 ALB 专门面向 7 层负载均衡,提供超强 7 层性能和 HTTPS 卸载功能,单实例可达 100 万 QPS,同时还提供基于内容的高级路由特性,诸如基于 HTTP 标头、Cookie、查询字符串进行转发、重定向、重写等。

应用型负载均衡 ALB 提供域名与 VIP,域名与 VIP 的多级分发,承载海量请求,并且在多可用区部署(至少两个,可以更多),如下图所示。
在这里插入图片描述
区别于传统型负载均衡的主备工作模式,ALB 在所有可用区同时工作(并支持用户自定义的可用区组合),极大提升了负载均衡的弹性能力,同时避免了单可用区资源瓶颈,ALB 通过 EIP+ 共享带宽提供公网,如下图所示,由于使用了 EIP,ALB 可以灵活公网计费,如按流量、按固定带宽、按 95 去峰带宽计费等。
在这里插入图片描述

3.负载均衡的优势

  • 超强性能与弹性。由于使用专门优化的 DPDK LVS、Intel QuickAssist 硬件加解密卡大幅提升处理性能,负载均衡具备超强性能与超强弹性,单实例支持 1000 万并发连接、100 万 QPS。
  • 多级容灾保证业务安全可用。负载均衡采用 4 级容灾架构,包括应用级高可用、集群级高可用、可用区高可用、地域级高可用,同时提供 DDoS 和 WAF 扩展防护,全链路 HTTPS 满足 Zero-Trust 安全模型的要求,提供高达 99.99% 的可用性保障承诺(SLA)。
  • 深度集成云原生。与 ACK(容器服务 Kubernetes 版)、SAE(Serverless 应用引擎)深度集成;面向应用层交付,支持先进的 GRPC 协议,实现微服务间高效的 API 通信,基于 Header / Cookie 的路由能力,支持流量拆分以实现云原生场景中的金丝雀发布;流量镜像可以复制在线业务流量用于仿真业务测试 , 用基于内容的 QPS 限速可模拟业务熔断等场景。
  • 开箱即用、简单便利。负载均衡可秒级开通, 7 × 24 7×24 7×24 小时免运维,有着完善的监控日志,支持事件告警。

4.负载均衡的主要应用场景

4.1 大流量的处理和调度

视频、电商、社交、游戏、在线教育等行业的网站和系统访问量很大,对大流量的处理和调度能力要求很高。SLB 的超强性能和丰富的调度算法可以轻松面对大流量的处理和调度。如下图所示。
在这里插入图片描述

4.2 基于应用层的流量调度

应用负载均衡支持 HTTP 和 HTTPS,提供高级的 7 层功能,如基于内容的路由、支持 QUIC 协议等,能满足越来越多元化的应用层负载需求,大大提升交付效率,同时具备超强性能(100 万 QPS/ 实例)、安全可靠、简单易用等优势。而用户在云上自建 Nginx 做应用层流量调度,不仅稳定性难以保证,还存在额外的虚机建设与维护成本。使用应用负载均衡产品可以完美替代自建 Nginx。

4.3 云原生、微服务场景

作为阿里云官方推进的云原生 Ingress 网关,应用型负载均衡 ALB 支持高性能 API、GRPC 协议、金丝雀发布、在线流量镜像、基于 Header / Cookie 的转发、重定向、内容重写等,且无缝支持云原生场景。

4.4 业务高可用

企业用户都很关注业务的连续性,特别是金融、政务等关键领域的行业用户。负载均衡是用户业务稳定性和可靠性的有力保障。首先,负载均衡支持健康检查,可以及时发现和屏蔽异常后端服务器。其次,负载均衡支持多可用区,结合后端服务器的多可用区部署实现跨可用区容灾。再次,通过多地域部署,结合智能 DNS,负载均衡可以支持跨地域容灾。最后,负载均衡和 DDoS 防护、WAF 防护等安全产品无缝集成,为业务提供安全防护能力,提升业务连续性。

5.面向云原生的负载均衡

5.1 容器网络 Ingress 网关

不论是在阿里云 ACK 容器服务中,还是在用户自建的 K8s 集群中,容器网络的南北向入口都必须有一个 Ingress 网关来做业务流量的分发。由于是整个容器网络的流量入口,Ingress 网关的性能有可能成为整个系统的瓶颈。阿里云负载均衡的高性能、高弹性可以很好地消除这个瓶颈。同时,容器网络入口的高可用至关重要,一旦 Ingress 网关出现故障,整个容器集群将无法对外提供服务,而负载均衡具备 4 个层级的高可用,将保障容器网络的入口永远通畅。

5.2 微服务发现与高可用

在云原生的技术体系中,微服务是应用系统的最小组成单元,在大型复杂应用中,数个微服务互相调用、依赖,每一个微服务都存在多个运行副本,组成一个微服务集群对外提供服务,因此每一个微服务都需要配一个负载均衡。这些均衡负载不但用来解决高可靠问题,还承担着发现微服务的角色,因为容器本身会被快速生产、销毁、替换,其 IP 地址会频繁变化。如果没有负载均衡对外提供一个稳定的 IP 地址,服务的使用方将无法稳定地访问服务。

5.3 零信任安全模型

云原生技术起源于数据中心内的应用和服务,并在过去几年逐渐扩展到边缘甚至端上的计算。随着 5G 和 IoT 的快速发展,云边端一体化的云原生技术将深入更多的企业和更丰富的场景,无处不在,未来云原生的网络环境将变得更加复杂。这意味着可能存在更多的安全风险。因此在很多云原生的场景中,零信任Zero-Trust)安全模型至关重要。

零信任安全模型要求整个传输链路上的流量都是经过加密的,不对基础设施的网络做任何可信的假设。这意味着负载均衡需要对从客户端发出的加密流量进行解密,以处理 7 层业务路由,并且在发给后端微服务时要再次加密,以满足零信住安全模型的规范要求。

阿里云应用型负载均衡支持全链路的 HTTPS 加密,完全符合上述安全规范,同时,由于采用了专用的加解密硬件卡,相比于开源方案自建的负载均衡,能够节省 40%~50% 的 SSL 加解密算力。


http://www.mrgr.cn/p/35468681

相关文章

Linux网络设置

一、网络相关设置内容 将Linux主机接入到网络,需要配置网络相关设置,包括以下内容 1.主机名 2.IP/netmask 3.路由:默认网关 4.DNS服务器,主DNS服务器,次DNS服务器,第三个DNS服务器 centos的网卡配置位…

ROS2学习--OOP方法编写python节点

1.创建工作空间 mkdir -p town_ws/src cd town_ws/src 2.创建功能包 ros2 pkg create village_li --build-type ament_python --dependencies rclpypkg create 是创建包的意思 --build-type 用来指定该包的编译类型,一共有三个可选项ament_python、ament_cmake、cmake --depen…

[python省时间]处理文档,包括批量查找,替换,

1、批量查找替换 # -*- coding: utf-8 -*- import os import re # path=os.getcwd()str_old = insert str_new = frs.event.queue file_formate = init.sql file_sql=open(rF:\bak\init_all.sql, r+, encoding=utf-8) def replace_txt(path):if path.find(file_formate) == len…

【python省时间】时间转换、日期格式化、时间戳转字符、

1、日期格式化 def paserTime(timestamp): t = time.time() f=time.localtime(timestamp/1000) print (t) #原始时间数据 # print (int(t)) #秒级时间戳 print (int(round(t * 1000))) #毫秒级时间戳 #nowTime = lambda: int(round(…

【Qt QML】TabBar的用法

Qt Quick中的TabBar提供了一个基于选项卡的导航模型。TabBar由TabButton控件填充,并且可以与任何提供currentIndex属性的布局或容器控件一起使用,例如StackLayout或SwipeView。 import QtQuick import QtQuick.Controls import QtQuick.LayoutsWindow …

CentOS 7虚拟机配置过程中所需组件的安装(二)

1.安装net-tools组件(解决无 ifconfig) # yum install net-tools 2.安装gcc、c编译器以及内核文件 # yum -y install gcc gcc-c kernel-devel 验证安装成功 3.安装nano(文本编辑器) # yum install nano

【Pytorch】(十四)C++ 加载TorchScript 模型

文章目录 (十四)C 加载TorchScript 模型Step 1: 将PyTorch模型转换为TorchScriptStep 2: 将TorchScript序列化为文件Step 3: C程序中加载TorchScript模型Step 4: C程序中运行TorchScript模型 【Pytorch】(十三)PyTorch模型部署: T…

javaWeb项目-校园志愿者管理系统功能介绍

项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、SpringBoot框架 …

马斯克的 xAI 融资 60 亿美元;英伟达收购两家 AI 创企丨 RTE 开发者日报 Vol.193

红杉资本、昆仑万维、字节跳动 开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有…

POCEXP编写—EXP编写实战(1)

TOC 1. 前言 通过上一篇文章的了解,应该都了解了POC是怎么编写的,而且POC和EXP的区别就是POC只能验证漏洞,简单来说就是通过判断特定的响应值来判断是否存在漏洞,而且EXP就需要将响应的内容给返回回来,但是整体在编写…

uni-app的POST请求和GET请求

uni-app就像一个盗版的Vue, 和Vue很想,又不完全像 //微信小程序post请求 uni.request({ url: http://127.0.0.1:8000/api/test_post/, // Django后端API地址 method: POST, //指定请求类型(POST还是GET)data: { //数据都要放在这里,以键值对的方式key1: value1, key2: valu…

详解23种设计模式——单例模式

单例模式 | CoderMast编程桅杆单例模式 单例模式是最常用的设计模式之一,他可以保证在整个应用中,某个类只存在一个实例化对象,即全局使用到该类的只有一个对象,这种模式在需要限制某些类的实例数量时非常有用,通常全局…

ROS2学习记录

一、编写C++节点并测试 1.创建功能包 C++功能包使用ament-camke作为编译基础,依赖为rclcpp。打开终端,进入town_ws/src运行下面的指令,目录结构如下 ros2 pkg create village_wang --build-type ament_cmake --dependencies rclcpp2.创建节点 village_wang/src下创建一个wa…

社区发现之标签传播算法(LPA)python实现

社区发现在图领域中备受关注,其根源可以追溯到子图分割问题。在真实的社交网络中,用户之间的联系紧密度不尽相同,导致形成了不同的社区结构。社区发现问题主要分为两类:非重叠和重叠社区。非重叠社区发现指的是每个节点仅属于一个社区,社区之间没有交集。在非重叠社区发现…

GitHub/R3D3项目环境配置踩坑记录

1、前言 项目链接地址:SysCV/r3d3 (github.com) 按照安装步骤容易出现的问题,environment.yaml文件中安装相关包,其中还有两个pip install githttps://github.com/..........这两个建议注释掉,后面再来安装这两个。 2、问题及解…

重磅!!!监控分布式NVIDIA-GPU状态

简介:Uptime Kuma是一个易于使用的自托管监控工具,它的界面干净简洁,部署和使用都非常方便,用来监控GPU是否在占用,非常美观。 历史攻略: docker应用:搭建uptime-kuma监控站点 win下持续观察…

多进程编程:原理、技术与应用

title: 多进程编程:原理、技术与应用 date: 2024/4/26 12:14:47 updated: 2024/4/26 12:14:47 categories:后端开发tags:多进程 并发编程 网络服务 分布式系统 任务处理 进程池 线程对比第一章:进程与线程 进程与线程的概念及区别:进程:进程是操作系统中的一个程序执行实例…

条款48:认识 template 元编程

**常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。 昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。

VS2017修改项目名称

修改项目名称 直接右击项目->重命名只是改了project的vcxproj文件中的ProjectName的值,而如果手动修改了项目文件夹的名称,就会造成解决方案按照其sln文件加载对应的项目时,找不到正确的项目路径,所以会加载失败。有了以上的描述,再来修改项目的名称就简单了,有以下几…

Error: contextBridge API can only be used when contextIsolation is enabled

在electron项目中preload.js文件使用下面的方法时报错 const { contextBridge, ipcRenderer } require(electron); contextBridge.exposeInMainWorld(electronApi, {});node:electron/js2c/renderer_init:2 Unable to load preload script: D:\Vue\wnpm\electron\preload.js …