零基础5分钟上手亚马逊云科技-高可用负载均衡器

news2024/9/23 19:24:08

简介:

欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。

我会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践,并应用到自己的日常工作里。本次介绍的是如何利在亚马逊云科技上创建一个网络层负载均衡器,并将后端2个位于不同可用区的服务器挂到负载均衡器上实现应用高可用,提升应用稳定性。本方案架构图如下:

方案所需基础知识

什么是亚马逊云科技Network Load Balancer?

Amazon Web Services(AWS)的Network Load Balancer(NLB)是一种专为处理成千上万并发连接的应用程序而设计的高性能负载均衡器。NLB工作在OSI模型的第4层(传输层),能够基于IP协议数据包的内容,将流量转发到目标实例或容器上。它可以处理大量的TCP、UDP以及其他基于IP的流量,提供极低的延迟,同时具有高可用性和可扩展性。

为什么使用负载均衡器实现应用的高可用性?

使用负载均衡器(如AWS的Network Load Balancer)对于实现应用的高可用性至关重要,原因如下:

流量分发

负载均衡器通过将传入的流量均匀分配到多个后端实例(如EC2实例或容器)上,避免了单个实例成为性能瓶颈或单点故障。这种分流机制使得应用能够处理更高的请求量,同时每个实例的负载也更加均衡,从而提高了整体的性能和响应速度。

容错能力

当后端实例出现故障或不可用时,负载均衡器能够自动检测并将流量转发到健康的实例上。这种自动故障切换机制确保了应用在面对部分实例故障时仍能保持正常运行,不会影响用户体验。

自动扩展支持

负载均衡器与AWS的自动扩展(Auto Scaling)相结合,可以根据实际需求自动调整后端实例的数量。当流量增加时,自动扩展将启动更多实例,负载均衡器会自动将流量分配给新启动的实例;当流量减少时,多余的实例将被自动关闭,从而优化资源利用率并降低成本。

本方案包括的内容

1. 创建一个网络层负载均衡器,并挂载位于两个不同可用区的EC2服务器

2. 为EC2服务器添加健康检测,在健康检测失败时将服务请求转移到健康服务器

项目搭建具体步骤

1. 登录亚马逊云科技控制台,进入EC2服务主页

2. 点击左侧菜单栏的”Load Balancers”,再点击"Create"创建一个负载均衡器

3. 选择创建类型为Network Load Balancer,点击Create创建。

4. 为负载均衡器命名为“myELB”,选择“Internet-facing”设置该负载均衡器为面向公网。

5. 为该负载均衡器配置VPC,并添加位于“ap-northeast-1”的两个可用区“ap-northeast-1a”和“ap-northeast-1c”

 6. 为负载均衡器添加Security Group安全组,并点击Create Target Group添加目标组,用于挂载EC2服务器。

7. 为目标组命名为“lb-targets”,协议选择TCP,端口选择80,并添加目标组所在VPC。其他配置选择默认,点击Next。

 8. 选中位于两个可用区的两台EC2服务器,点击“Include as pending below”添加。最后点击“Create Target Group”开始创建

9. 此时我们回到创建负载均衡器的界面,添加我们刚创建的目标组“lb-targets”,再点击“Create Load Balancer“创建负载均衡器

10. 我们点击复制负载均衡器的URL,在浏览器中打开,就可以看到EC2服务器中的网页资源了

11. 下面我们模拟EC2出现故障时,负载均衡器是否能进行故障转移,将流量传输到正常工作的EC2服务器。我们点击”Stop“关闭一台EC2服务器。

12. 再次访问负载均衡器的URL,简单的HTML网页仍然可以正常工作,故障转移成功。

如何通过Python代码创建Amazon Comprehend自定义词汇识别模型?

以下是使用AWS Boto3 SDK创建一个网络负载均衡器(Network Load Balancer),并将其挂载到位于两个可用区的EC2服务器上的Python代码示例。

import boto3

# 创建EC2和ELB客户端
ec2 = boto3.client('ec2')
elb = boto3.client('elbv2')

# 定义变量
load_balancer_name = 'my-nlb'
subnet_ids = ['subnet-12345678', 'subnet-87654321']  # 替换为实际的子网ID
security_group_id = 'sg-0123456789abcdef0'  # 替换为实际的安全组ID
instance_ids = ['i-0123456789abcdef0', 'i-0abcdef0123456789']  # 替换为实际的实例ID

# 创建目标组
response = elb.create_target_group(
    Name='my-target-group',
    Protocol='TCP',
    Port=80,
    VpcId='vpc-0123456789abcdef0',  # 替换为实际的VPC ID
    HealthCheckProtocol='TCP',
    HealthCheckPort='80',
    TargetType='instance'
)
target_group_arn = response['TargetGroups'][0]['TargetGroupArn']
print(f'Target group created with ARN: {target_group_arn}')

# 注册目标实例
elb.register_targets(
    TargetGroupArn=target_group_arn,
    Targets=[{'Id': instance_id} for instance_id in instance_ids]
)
print('Targets registered successfully.')

# 创建网络负载均衡器
response = elb.create_load_balancer(
    Name=load_balancer_name,
    Subnets=subnet_ids,
    SecurityGroups=[security_group_id],
    Scheme='internet-facing',
    Type='network',
    IpAddressType='ipv4'
)
load_balancer_arn = response['LoadBalancers'][0]['LoadBalancerArn']
print(f'Load balancer created with ARN: {load_balancer_arn}')

# 创建监听器并绑定到目标组
response = elb.create_listener(
    LoadBalancerArn=load_balancer_arn,
    Protocol='TCP',
    Port=80,
    DefaultActions=[{
        'Type': 'forward',
        'TargetGroupArn': target_group_arn
    }]
)
print('Listener created successfully.')

代码解释:

该代码创建了一个网络负载均衡器(NLB)。在创建负载均衡器时,指定了子网、安全组、负载均衡器的类型(network),以及它是面向公开互联网的(internet-facing)。创建完成后,获取并打印了负载均衡器的ARN。

之后该代码创建了一个监听器(Listener),它会监听来自客户端的请求,并将请求转发到前面创建的目标组中。监听器使用TCP协议,监听端口为80。

以上就是在亚马逊云科技上利用网络负载均衡器设计高可用应用架构的全部步骤。欢迎大家关注0基础5分钟上手AWS系列,未来获取更多国际前沿的AWS云开发/云架构方案。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2081401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么将文档翻译成英语?5个方法一键将文档翻译成所需语言

夏日的尾声,处暑的凉风轻轻拂过,不仅带来了季节的更迭,也悄然拉开了国际交流的新序幕。 那份精心雕琢的处暑宣传文案,字字珠玑,情感饱满。但别急,想要这份佳作跨越语言的长河,触及更广阔的国际…

中资优配:信用债市场遭遇卖盘压力

近期,诺言债遭受卖盘压力,连跌多日,引发商场关注。 近两日,诺言债商场出现回调,工业债、城投债与二级本钱债价格均出现跌落。到8月27日收盘,“24兴业银行二级本钱债01”上行7.5个基点至2.355%,…

佰朔资本:股指预计保持震荡格局 关注化学制药、石油化工等板块

2024年1—7月规上工业企业赢利平稳增加,较前值略有上升。工业企业赢利能否企稳的要害在于有用需求,其时以价换量特征依然显着,供应快于需求使得工业企业库存继续被动冲高。在内需方面,大规模设备更新、消费品以旧换新政策有助于继…

uboot环境变量擦除之烧录工具擦除flash mtd0分区

有时会uboot环境变量修改了没有生效,需要擦除整个mtd分区 Erasing at 0x100000 – 100% complete. (1M) uboot给flash的中分区

正方体挖出几小块后的体积

如图,有一个边长为20厘米的大正方体,分别在它的角上、棱上、面上各挖掉一个大小相同的小立方体后,表面积变为2454平方厘米,那么挖掉的小立方体的边长是多少厘米?() A 2 B 2.5 C 3【正确答案】 D 3.5 这道题和上一期《立体空间想象…

算法学习-基础数据结构

基础数据结构 一.栈 1.普通栈 套路:从前往后遍历 需要考虑相邻元素 有消除操作 栈。 2.单调栈 二.队列 1.普通队列 2.优先队列 三.Trie 使用场景:可以求某个字符串在众多字符串中出现的次数,以某个字符串为前缀出现的次数 Trie中…

设计一个最小栈

问题 请你设计一个 最小栈 。它提供 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆…

昂科烧录器支持MindMotion灵动微电子的微控制器MM32F5333D7P

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表,其中MindMotion灵动微电子的32位微控制器MM32F5333D7P已经被昂科的通用烧录平台AP8000所支持。 MM32F5333D7P微控制器搭载了由安谋科技授权的Armv8-M架构“星辰”STAR-MC1处理器&a…

Redux的中间件原理分析

Redux的中间件原理分析 redux的中间件对于使用过redux的各位都不会感到陌生,通过应用上我们需要的所有要应用在redux流程上的中间件,我们可以加强dispatch的功能。最近抽了点时间把之前整理分析过的中间件有关的东西放在这里分享分享。本文只对中间件涉…

在线客服系统源码 完全开源可二开 带完整的安装代码包以及搭建部署教程

系统概述 在线客服系统是一种基于互联网技术的客户服务解决方案,通过即时通讯工具,如文本聊天、语音通话、视频交流等方式,实现企业与客户之间的实时互动。它打破了传统客服模式的时空限制,使客户能够在任何时间、任何地点获得快…

Java基础(4)- IDEA

目录 一、Module 1.创建module 2.关闭modue 3.导入module 4.src灰色 二、Package 1.创建package 2.删除package 3.package取名规范 三、类 1.创建类 2.快捷语法 3.HelloWorld 四、IDEA基本设置说明 1.字体 2.提示的快捷键 五、常用快捷键 一、Module 1.创建mod…

Python大数据之Hadoop学习——day05_hive基本操作

一.SQL,Hive和MapReduce的关系 用户在hive上编写sql语句,hive把sql语句转为mapreduce程序去执行 二.Hive的架构映射流程 三.MetaStore元数据管理三种模式 metastore服务配置有3种: 内嵌模式、本地模式、远程模式(推荐) 内嵌模式…

【一文读懂】基于Havenask向量检索+大模型,构建可靠的智能问答服务

Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内的几乎整个阿里的搜索业务。本文针对性介绍了Havenask作为一款高性能的召回搜索引擎,应用在向量检索和LLM智能问答场景的解决方案和核心优势…

泰山派小手机---ubuntu 环境的搭建

问题: 本来我的 泰山派的 ubuntu 虚拟机环境已经搭建好了,但是由于一直到捣鼓 neovim ,把虚拟机 内核搞崩溃,所以从新安装一下 虚拟机。 过程: 1 首先是 安装虚拟机。 下载镜像。 https://mirrors.ustc.edu.cn/ubu…

密码强度验证——js基础积累

//密码强度等级 getPwdLevel:function (pwd,minLength8) {var level 0;if (pwd.length < minLength) return level;if (/\d/.test(pwd)) level; //数字if (/[a-z]/.test(pwd)) level; //小写if (/[A-Z]/.test(pwd)) level; //大写if (/\W/.test(pwd)) level; //特殊字符ret…

安卓好软-----手机端提取apk的小工具 方便简单 无需root权限

apk提取工具 工具小巧。可以提取手机上面当前安装的apk和系统应用apk。而且无需root权限即可正常使用。 效果非常不错。比其他工具提取系统app方便好使。 下载&#xff1a;https://download.csdn.net/download/mg668/89683199?spm1001.2014.3001.5503

副业赚钱新玩法:大模型也能月入过万?

在这个多元化的时代&#xff0c;副业已经成为了越来越多人的选择。无论是为了实现个人兴趣&#xff0c;还是为了增加收入来源&#xff0c;副业都为我们提供了无限可能。而随着人工智能技术的飞速发展&#xff0c;利用大模型来开展副业也成为了一种新兴的方式。今天&#xff0c;…

日常避坑指南:如何正确使用 aiohttp 上传文件,避免文件被提前关闭

在日常开发中,我们经常会遇到需要上传文件到服务器的场景。如果你选择使用 aiohttp 进行异步请求,上传文件的方式需要特别注意,否则可能会遇到一些令人头疼的问题——比如文件被提前关闭,导致上传失败。这篇文章将为你详细解析这个问题,并提供有效的解决方案,帮助你在开发…

Mysql基础练习题 181.找到收入比经理高的员工 (力扣)

181.找到收入比经理高的员工 建表插入数据&#xff1a; Create table If Not Exists Employee (id int, name varchar(255), salary int, managerId varchar(10)); Truncate table Employee insert into Employee (id, name, salary, managerId) values (1, Joe, 70000, 3); …

/lib64/libm.so.6: version `GLIBC_2.27‘ not found 如何解决?

安装GLIBC_2.27 wget http://ftp.gnu.org/gnu/glibc/glibc-2.27.tar.gz tar xf glibc-2.27.tar.gz cd glibc-2.27/ && mkdir build && cd build ../configure --prefix/usr --disable-profile --enable-add-ons --with-headers/usr/include --with-binutils…