AWS学习(一)——AWS云技术基础
aws基础
一、AWS入门
1.如何建立一个AWS应用
- 使用私有网络Amazon VPC搭建
- 后端代码放在Amazon EC2 Instance(虚拟机等功能)
- 数据存放在数据库Amazon RDS或Amazon DynamoDB
- 图片类型数据村吃在Amazon S3
- 使用Amazon CloudWatch进行监控
- 为了保证可扩展性和分布式,添加Elastic Load Balancer (ELB)和Amazon EC2 Auto Scaling
- 为了安全性,使用AWS IAM
2. 如何与AWS交互
有三种方法与AWS进行交互,分别是
- The AWS Management Console:使用基于网页的控制台来配置AWS
- The AWS Command Line Interface (CLI):使用命令行来配置
- AWS Software Development Kits (SDKs):使用软件开发工具包(SDK)来配置AWS
3.AWS账户与权限
AWS的账户包括根用户和IAM(Identity and Access Management)
根用户(root user):在AWS中最先被创建的账户被称作根用户(root user),根用户拥有AWS里的所有权限。我们通过邮箱/密码登录网页控制台或者通过访问密钥登录命令行或者API
IAM (Identity and Access Management):IAM 是一项 Web 服务,可让您管理对 AWS 账户和资源的访问。它还还可以显示AWS 账户中允许的人员和内容(身份验证),以及有权使用和使用您的 AWS 资源的人员和内容(授权)。一些与IAM相关的概念如下:
- IAM User: IAM 用户代表与 AWS 交互的人或服务,我们可以在AWS账户中创建IAM User。 IAM用户凭证包括登录web控制台的账户密码和登录命令行与API的访问密钥。IAM的用户凭证是永久存在的直到管理员强制轮换。
- IAM Group: IAM group是一组用户,组中的所有用户都继承分配给该组的权限。
- IAM Policy: 我们通过创建 IAM 策略并将它们附加到 IAM 用户、组和角色来管理对 AWS 服务和资源的访问并提供权限。IAM策略通常存储在JSON文件中,一个例子如下:
Effect 指定语句是允许还是拒绝访问
Action描述描述将被允许或拒绝的具体操作
Resource指定策略声明涵盖的一个或多个对象。 - IAM role: IAM 角色代表与 AWS 交互的需要短暂凭证的人或服务。与IAM用户不同的是,IAM角色没有静态登录凭证,IAM角色是动态的并且会在一段时间后被废除。
二、AWS计算
搭建应用程序所需的第一个构建模块是服务器。服务器通过提供 CPU、内存和网络容量来处理用户的请求并将其转换为响应,从而为应用程序提供动力。
在 AWS 上设置服务器来运行您的基础设施有很多计算选项。从根本上讲,存在三种类型的计算选项:虚拟机、容器服务和无服务器。
1.Amazon EC2
Amazon EC2 是一种 Web 服务,它允许配置称为 EC2 实例的虚拟服务器。启动 EC2 实例时,配置的第一个设置是通过选择 Amazon Machine Image (AMI) 来配置您想要的操作系统。
AMI 可以配置您想要的操作系统,还可以选择存储映射、架构类型(例如 32 位、64 位或 64 位 ARM)以及安装的附加软件。
EC2 实例是 AMI 中定义的实时实例,可以看做类与对象之间的关系。当启动一个新实例时,AWS 会分配一个在管理程序上运行的虚拟机。然后将您选择的 AMI 复制到根设备卷,其中包含用于启动卷的映像。最后可以获得一台可以连接并安装软件包和任何其他软件的服务器。
2.Amazon Container Service
容器是一个标准化单元,用于打包代码及其所有依赖项。该软件包旨在在任何平台上可靠运行,因为容器创建了自己的独立环境。这使得将工作负载从一个地方转移到另一个地方变得很容易,例如从开发到生产或从本地到云。
Docker 是一种流行的容器运行时,它简化了容器隔离所需的整个操作系统堆栈的管理,包括网络和存储。
容器和虚拟机的区别如下图:
在 AWS 中,容器在 EC2 实例上运行,如果要尝试大规模管理您的计算,您需要了解如何将容器放置在实例上,如果容器发生故障会发生什么等问题。AWS 提供两种容器编排服务:Amazon Elastic Container Service (ECS) 和 Amazon Elastic Kubernetes Service (EKS)。
Amazon ECS 是一种端到端容器编排服务,可让快速启动新容器并跨 EC2 实例集群管理它们。
如果有在 Kubernetes 上运行的容器,并且想要一个可以为您的基础设施提供简单性、高可用性和精细控制的高级编排解决方案,那么 Amazon EKS 就是您的理想之选。
3.Serverless和 AWS Lambda
Serverless(无服务器)的定义包含四个方面。
- 无需配置或管理服务器。
- 随着使用量的增加。
- 不会为闲置资源付费。
- 可用性和容错是内置的。
AWS 有几个无服务器计算选项,包括 AWS Fargate 和 AWS Lambda。
(1)AWS Fargate
AWS Fargate 是专门为容器构建的无服务器计算引擎。它通过分配适量的计算来实现这一点,消除了选择和处理 EC2 实例以及集群容量和扩展的需要。Fargate 同时支持 Amazon ECS 和 Amazon EKS 架构。
(2)AWS Lambda
AWS Lambda 可以无需预置或管理服务器或容器即可运行代码。用户上传源代码,Lambda 会负责以高可用性运行和扩展代码所需的一切。
Lambda 函数包含三个主要组件:触发器、代码和配置。
- 代码是源代码,描述了 Lambda 函数应该运行什么
- 配置包含描述函数应如何运行的信息,在配置中指定网络放置、环境变量、内存、调用类型、权限集和其他配置。
- 触发器描述 Lambda 函数应何时运行。触发器将Lambda 函数与其他 AWS 服务集成,使您能够运行 Lambda 函数以响应您的 AWS 账户中发生的某些 API 调用。
三、AWS网络
1.网络基础
网络是连接世界各地的计算机并允许它们相互通信的方式。在数字世界中,计算机处理消息传递的方式称为路由。
每台计算机都有一个IP地址,IP 地址使用位、0 和 1 的组合。
IPv4 表示法:下图中,32 位以8比特为一组。这些组中的每一个都转换为用句点分隔的十进制格式。
CIDR 表示法:它以起始 IP 地址开头,由正斜杠(“/”字符)和数字分隔。末尾的数字指定 IP 地址有多少位是固定的。例如192.168。1.0/24表示IP 地址的前 24 位是固定的。其余的都是灵活的。
2.Amazon VPC
VPC 是在 AWS 云中创建的隔离网络,类似于数据中心中的传统网络。创建 VPC 时,您需要选择三个主要内容:VPC名称、VPC所处的区域和用CIDR 表示法表示的IP地址范围。
上图是一个VPC网络,主要包含以下部分
(1)子网(subnet)
子网可以看作基础网络中的较小网络或传统本地网络中的虚拟区域网络 (VLAN)。在 AWS 中,子网用于实现高可用性并为资源提供不同的连接选项。
在创建子网时,需要设置三个属性:VPC名称、可用区( Availability Zone)和用CIDR 表示法表示的IP地址范围。
当启动 EC2 实例时,将在子网中启动它,该子网将位于选择的可用区内。为了保持冗余和容错,请在两个不同的可用区中创建至少两个配置的子网。
AWS 在每个子网中保留五个 IP 地址,这些 IP 地址用于路由、域名系统 (DNS) 和网络管理。
(2)网关
- 互联网网关:互联网网关用于为 VPC 启用 Internet 连接
- 虚拟私有网关(Virtual Private Gateway):虚拟私有网关允许将 AWS VPC 连接到另一个私有网络。在连接的另一端需要将客户网关连接到另一个专用网络。客户网关设备是连接一侧的物理设备或软件应用程序。拥有两个网关后就可以在双方之间建立加密的 VPN 连接。
(3)路由表(Route Table)
路由表包含一组称为路由的规则,用于确定网络流量的方向,包含两种路由表
- 主路由表:主路由表的默认配置是允许本地网络中所有子网之间的流量。主路由表的两个重要组成部分分别是目的地和目标。目的地是您希望流量流向的 IP 地址范围;目标是发送流量所通过的连接。
- 自定义路由表:创建的每个自定义路由表都将在其中包含本地路由,从而允许在 VPC 内的所有资源和子网之间进行通信。
3.网络安全
网络安全也包含两种,分别是ACL(Access Control Lists)和安全组(Security Groups)
(1)Network ACLs
Network ACLs 是子网级别的防火墙。Network ACLs 使您能够控制允许哪些类型的流量进入或离开您的子网。
默认Network ACLs 允许所有流量进出您的子网。但是,我们可能希望在子网级别限制数据。例如,如果有一个 Web 应用程序,可能会限制网络以允许 HTTPS 流量和远程桌面协议 (RDP) 流量到您的 Web 服务器。这时,我们需要修改入站和出站协议。
(2)Security Groups
Security Groups 是EC2 实例级别的防火墙。安全组的默认配置阻止所有入站流量并允许所有出站流量。
四、AWS存储
AWS 存储服务分为三个不同的类别:块存储、文件存储和对象存储。
- 文件存储:您文件存储将文件放置在由文件夹和子文件夹组成的树状层次结构中。当需要集中访问需要由多台主机轻松共享和管理的文件时,文件存储是理想的选择。
- 块存储:存储将文件分割成固定大小的数据块,称为块,它们有自己的地址。由于每个块都是可寻址的,因此可以有效地检索块。因此,当想更改文件中的字符时,只需更改包含该字符的块或文件片段。由于块存储针对低延迟操作进行了优化,因此它是需要低延迟存储的高性能企业工作负载(例如数据库或企业资源规划 (ERP) 系统)的典型存储选择。
- 对象存储:与文件非常相似的对象在存储时也被视为单个数据单元。但是,与文件存储不同,这些对象存储在平面结构中,而不是层次结构中。在存储大型数据集、非结构化文件(如媒体资产)和静态资产(如照片)时,对象存储通常很有用。
1.AWS存储服务
(1)Amazon EC2 Instance Store
Amazon EC2 Instance Store 为您的实例提供临时块级存储。这种存储方式会将数据的生命周期与 EC2 实例的生命周期联系起来。实例存储通常非常适合临时存储不断变化的信息,例如缓冲区、缓存和暂存数据。它不适用于持久或持久的数据。
(2)Amazon EBS
Amazon Elastic Block Storage (Amazon EBS) 是一种块级存储设备,可以将其附加到 Amazon EC2 实例。Amazon EBS 适用于频繁更改并需要在实例停止、终止或硬件故障时持续存在的数据。
Amazon EBS 有两种不同类型的卷:SSD 支持的卷和 HDD 支持的卷。
- SSD 支持的卷:性能取决于 IOPS(每秒输入/输出操作),非常适合事务性工作负载,例如数据库和启动卷。
- HDD 支持的卷:性能取决于 MB/s, 非常适合吞吐量密集型工作负载,例如大数据、数据仓库、日志处理和顺序数据 I/O
(3)Amazon S3
Amazon S3 是独立的存储解决方案,不依赖于计算(EC2)。Amazon S3 是一种对象存储服务。
在 Amazon S3 中,您必须将对象存储在称为桶的容器中。创建存储桶时,至少要选择存储桶名称和希望存储桶所在的 AWS 区域。
S3 存储桶策略:S3 存储桶策略类似于 IAM 策略,用来指定在存储桶上允许或拒绝哪些操作。S3 存储桶策略只能放在存储桶上,不能用于文件夹或对象。
(4)Amazon Elastic File System (Amazon EFS) and Amazon FSx
对于可以挂载到多个 EC2 实例的文件存储,我们可以使用 Amazon Elastic File System (Amazon EFS) or Amazon FSx
2.AWS数据库
(1)关系型数据库
关系数据库将数据组织成表。一个表中的数据可以链接到其他表中的数据以创建关系。表以行和列的形式存储数据。行,通常称为记录,包含有关特定条目的所有信息。列描述了该条目的属性。
关系数据库管理系统 (RDBMS) 允许您创建、更新和管理关系数据库。以下是关系数据库管理系统的一些常见示例:MySQL、PostgresQL、Oracle、SQL server、Amazon Aurora。
在 AWS 上运行一个关系数据库,有两种运行方式:非托管方式或托管方式。
- 非托管数据库:AWS 负责实施和维护物理基础设施和硬件,并安装 EC2 实例的操作系统。用户负责管理 EC2 实例、管理该主机上的数据库、优化查询和管理客户数据。
- 托管数据库:AWS负责 EC2 实例和数据库的设置,并提供高可用性、可扩展性、修补和备份系统。用户负责数据库调优、查询优化,当然还有确保您的客户数据安全
(2)Amazon DynamoDB
Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务,可提供快速且可预测的性能以及无缝的可扩展性。
在 DynamoDB 中,表、项目和属性是三个核心组件。表是项目的集合,每个项目是属性的集合。 DynamoDB 使用主键来唯一标识表中的每个项目,并使用二级索引来提供更大的查询灵活性。
(3)AWS数据库选择
五、AWS监控
收集、分析和使用数据来做出决策或回答有关 IT 资源和系统的问题的行为称为监控。我们可以使用收集的数据来观察由资源过度利用、应用程序缺陷、资源配置错误或安全相关事件等事件引起的操作问题。
在AWS中,由资源创建的每个单独的数据点作为指标。随着时间的推移收集和分析的指标成为统计数据,例如平均 CPU 利用率,EC2 实例具有的其他指标示例包括网络利用率、磁盘性能、内存利用率以及在 EC2 上运行的应用程序创建的日志。
AWS 提供了一项名为 Amazon CloudWatch 的监控服务。Amazon CloudWatch 是一项监控和可观察性服务,可收集本模块中提到的数据。
六、优化
系统的可用性通常表示为给定年份中正常运行时间的百分比。为了提高可用性,您需要冗余(redundancy),这通常意味着更多的基础设施:更多的数据中心、更多的服务器、更多的数据库和更多的数据复制。
在AWS中,我们采取一些策略来尽可能的优化系统使其具有高可用性。
1.负载均衡
负载均衡是指在一组资源之间分配任务的过程。我们使用负载均衡器在托管应用程序的所有服务器上分发请求。
对应用程序的请求将从客户端的浏览器被发送到负载均衡器,然后,它被发送到托管应用程序的 EC2 实例之一,返回流量将通过负载均衡器返回客户端浏览器。
AWS 提供 Elastic Load Balancing (ELB) 服务。ELB可以跨 EC2 实例以及容器、IP 地址和 AWS Lambda 函数分配传入的应用程序流量。ELB 服务由三个主要组件组成。
- Listeners: 可以被认为是客户端,必须提供端口以及协议
- Target groups: 定义要将流量引导至的后端类型,例如 EC2 实例、AWS Lambda 函数或 IP 地址。
- Rules: 规则由可以是客户端的源 IP 地址的条件和决定将流量发送到哪个目标组的条件组成。
ELB类型:
- 应用程序负载均衡器(ALB)
- 网络负载均衡器(NLB)
2.缩放
对于两种类型的系统(主动-被动和主动-主动)的负载问题的不同缩放方法。
- 垂直缩放:向现有计算机添加更多的电源(CPU、RAM)来进行缩放
- 水平缩放:向资源池中添加更多的计算机来进行缩放
Amazon EC2 Auto Scaling 服务可以根据来自 Amazon CloudWatch 的指标自动创建和删除 EC2 实例来处理该任务。ELB 服务与 EC2 Auto Scaling 无缝集成。
EC2 Auto Scaling 包含三个主要组件。
- 启动模板或配置:应该自动扩展哪些资源?
- EC2 Auto Scaling 组:资源应该部署在哪里?
- 扩展策略:何时应该添加或删除资源?
更多推荐
所有评论(0)