AWS学习记录
AWS核心服务类别
- 计算
- 联网与内容分发
- 存储
- 数据库
- 安全性、身份与合规性
- 管理与监督
模块总结
三种云计算部署模型
云计算的六大优势
云中的计算
Amazon EC2
Amazon Elastic Compute Cloud(Amazon EC2)
客户端和服务器模型
(其实就是一个服务一个客户)
咖啡店例子
比如:咖啡店,顾客发出请求,咖啡师满足顾客请求
在角色上,咖啡师会做咖啡所以能服务顾客,反正顾客肯定不能服务咖啡师
而咖啡师就是我们的服务器,需要提供算力,才能胜任服务器的角色
AWS平台上的虚拟机
就相当于我们在VMWare上运行的虚拟机,特点:
- 使用安全并且可以调整大小的计算容量
- 在几分钟内启动服务器实例
- 只需按实际使用量付费
EC2 工作原理/流程
- 启动实例
- 连接到该实例(通过网络连接,因为在云上)
- 使用该实例
Amazon EC2 实例类型
四个维度区分实例类型
- 算力(VCPU)
- 内存
- 联网能力
- 支持的存储的性能
常见类型
- 通用型
- 平衡计算、内存和联网资源
- 适合各种工作负载
- 计算优化型
- 提供高性能处理器
- 非常适合计算密集型应用程序和批处理工作负载
- 内存优化型
- 为内存密集型工作负载提供快速性能
- 非常适合高性能数据库
- 加速计算型(模型训练和模型推理大概就是选择这种)
- 使用硬件加速器加快数据处理
- 非常适合应用程序流和图形工作负载
- 存储优化型
- 提供低延迟和高IOPS存储(IOPS:每秒输入/输出操作数)
- 适合分布式文件系统和数据仓库应用程序等工作负载
Amazon EC2定价
按需
- 无预付成本 或 最低合同期限
- 非常适合短期、不规律的工作负载
多用多付,少用少付,只要不开机就不计费
Spot
- 非常适合开始和结束时间灵活的工作负载
- 与按需实例价格相比提供更多节省
临时用,因为云上资源有很多人用,实例开开关关,Spot就是为了利用已经被购买但是暂时没有人利用的实例,价格只有正常的十分之一,但是要优先保证正常付费的人使用,因此使用此计价方式要容忍中断,所以可以跑无状态应用,不推荐跑数据库等,如数据分析、模型训练。但是现在被中断的概率很低,,买一次可以用6个小时,六小时内被回收的概率只有5%左右,想继续用在时间到达之前续费
预留
- 在按需定价的基础上提供计费折扣
- 要求做出 1年期或3年期 的使用承诺
相当于长租,长租预付有折扣,就是看到的那些$99/年,但是买了以后,规格什么的不允许换
Compute Savings Plan
- 在计算使用量保持稳定的情况下,与按需实际成本相比,可实现高达66%的节省
- 要求做出 1年期或3年期 的使用承诺
相对于预留方案,多了一个要求:需要承诺每小时的使用费用,而此方案给客户带来的好处是,买了以后,可以灵活的换规格,甚至可以跨系列,毕竟承诺的是每小时花多少钱,而不是针对某个类型的花费
专用实例
- 在VPC中的硬件上运行的EC2实例,为单个用户使用
- 成本高于标准 Amazon EC2 实例
如果开10台实例,那么这10台实例是有可能跑在10个物理机上面的,如果不想每个实例都和别人share,那么就要求专用实例,这10台实例会跑在同一台宿主上(当然,这台宿主上还是要和别人share,如果完全不想和别人share,看下面的专用主机)
专用主机
- 具有EC2实例容量的物理服务器,为单个客户使用
- 价格最高的 Amazon EC2 选项
物理主机,很贵
Amazon EC2 Auto Scanling
咖啡店例子
比如:咖啡店,早上客流量少,一个咖啡师就能应付过来,当客流量多起来后,必须再喊一个咖啡师来帮忙
工作日流量少,可能一个实例能应付过来,但是一到节假日,流量飙升,那么就需要再安排一台实例来帮忙
当计算需求改变时,可以调整容量,使用动态扩展和预测性扩展
如何配置
设置最小实例数量(1台实例)满足低需求,平时中需求可能需要2台实例,再设置两台扩展,高需求的时候扩展顶上去
ELB 负载均衡
Elastic Load Balancing(负载均衡)
为什么需要负载均衡
比如店里来了顾客都喜欢去第一个店员那里排队,导致第二个店员没活干,这样就不均衡
ELB自动跨多个资源分配流量,为 Auto Scaling 组提供单一联系点,流量访问到ELB后,会被ELB均衡地分配到不同实例
收缩与扩展同理
亚马逊云科技消息收发服务
应用程序架构
- 整体式应用程序
如:组件1、组件2、组件3、组件4构成一个完整的应用,四个组件隶属于同一个应用程序
缺点:如果一个组件要修bug 或 加功能,那么会对整个应用程序造成挑战
- 微服务
同样由 组件1、组件2、组件3、组件4 构成一个完整的应用,但是这四个组件不属于同一个程序,微服务之间通过API配合
使用微服务后,虽然满足了快速迭代的要求,但是交互变得更为复杂
以下两个服务解决了这一痛点(如何传递消息、如何处理事件):
Amazon SNS
Amazon Simple Notification Service
将消息发布到主题,订阅者会立即收到他们主题的消息,
以咖啡店为例,比如咖啡师知道有一个客人定了一个冰美式,直接丢到前台(topic)上,SNS通知订阅冰美式(冰美式topic)的顾客来取,那么就完成了交易(消息传递),又做了一个拿铁,直接丢到前台上,SNS通知订阅拿铁(拿铁topic)的顾客来取。也就是一个生产者对应多个消费者
- 发布来自单个主题的更新
- 发布来自多个主题的更新
Amazon SQS
Amazon Simple Queue Service
在软件组件之间发送、存储和接收消息;对消息进行排队,而不需要提供其他服务
以咖啡店为例,顾客向收银员下单,收银员将单子贴在板子上,咖啡师根据贴上去的顺序一个一个地做,咖啡师只接收来自收银员的请求,根据板子上的需求制作咖啡,制作完毕后挨个递交给顾客。这样做的好处是,收银员将需求贴在板子上后,可以直接去服务下一个顾客
亚马逊云科技容器服务
容器相对虚拟机是一种更加轻量级的虚拟化,因为虚拟机承装了一个完整的操作系统,所以比较重
而且,如果做开发后,直接交付给测试团队可能无法直接跑起来,这个时候,就可以打包一个容器发过去,这是容器的灵活性。
容器和微服务架构就是天作之合
Amazon ECS
Amazon Elastic Container Service 运行和扩展容器化应用程序,使用简单的API调用来控制支持docker的应用程序
Amazon EKS
Amazon Elastic Kubernetes Service 运行和扩展kubernetes应用程序,使用新功能轻松更新应用程序
ECS 比 EKS 容易上手(如果会用k8s可以优先选EKS)
Amazon Fargate
使用Amazon ECS 或 Amazon EKS 运行无服务器容器,仅需为使用的资源付费
无服务器计算服务
我们写一个应用,找一个虚拟机来部署,让客户访问到,但是需要维护虚拟机,即使代码写得再好,如果虚拟机挂了,那么客户就访问不了啦(容器同理)
现在我们不想进行维护,只想把精力花在写代码上
Amazon Lambda
运行代码而无需配置或管理服务器,仅为代码运行时的计算时间付费,使用其他亚马逊云科技服务自动触发代码
工作原理:
- 将代码上传到Amazon Lambda
- 将代码设置为从事件源触发
- 代码只有在触发时才会运行
- 只需按使用的计算时间付费
lambda的并发问题:如果同时指向了Lambda,那么Lambda会创建instance来处理请求
Lambda是典型的无状态,非常适合事件处理,不过最多只能处理15分钟
全球基础设施和可靠性
为了满足不同地区的客户的要求,必须要将服务扩展到不同的地区
了解AWS全球基础设施
- 区域 [ region ](每个区域有多个可用区)
- 可用区(可用区包含入网点)
选择区域需要考虑数据监管和法律要求、与客户的距离、定价、区域内的可用服务
比如:北京和宁夏节点之间互通,但是和其他地方的不互通,其他地方的节点互通
离客户更近
Amazon CloudFront分发内容
如果说,某个region离客户太远,那么就搞一个CloudFront 做一个边缘站点,客户第一次访问会比较慢,以后再访问就会很快
Amazon Outposts
与AWS交互
- 亚马逊云科技管理控制台
- Amazon Command Line Interface(Amazon CLI)其实就是命令行
- 软件开发工具包(SDK)
本模块的内容
+ 亚马逊云科技全球基础设施的三个方面
+ 选择亚马逊云科技区域时要考虑的四个因素
+ 与亚马逊云科技服务交互的三种方式
重开笔记:从题目角度记录主要模块
网络
- 构建和连接到VPC
- 使用网络访问控制列表和安全组保护VPC资源
- 使用Amazon Route 53 和Amazon CloudFront分发内容(中国区不能用)
VPC—虚拟隔离网络(Amazon Virtual Private Cloud)
场景:我们去咖啡店买咖啡,一般是告诉收银员我们想喝什么,而不是直接告诉咖啡师收银员负责接收我们的请求,咖啡师只接收收银员的请求
所谓隔离,就相当于,我们每个用户的都是隔离开的,就像连锁店的,都属于一个公司,但是每个店都有自己的老板和员工,互不关联
子网
收银员就是公有子网,咖啡师就是私有子网,VPC就包含了公有子网和私有子网
公有子网面向客户,面向互联网,接受请求(如:AmonzonEC2实例就可以接收公网请求)
私有子网只面向公有子网,(如:数据库不会直接接收公网请求)
互联网网关(IGW)
客户端通过互联网向VPC发送请求,通过互联网网关进入VPC,然后就可以访问到公有子网了
虚拟私有网关(VGW)
比如数据库,肯定是在私有子网里的,如果应用在本地,要把数据写入到数据库,那么就没法用互联网网关(为了安全),VPN网关就是VGW的一种,通过企业路由器转发VPN到VPN网关访问私有子网去和数据库交互
专线(Amonzon Direct Connect)
需要拉线,功能上类似于虚拟私有网关,数据量巨大的时候需要用到
网络控制访问列表和安全组
网络流量的路线:(访问一个部署在EC2上面的应用)
客户端发送数据包到通过互联网传输,由互联网网关进入到公有子网,成功访问到应用服务。
此时,在互联网网关后面放置一个防火墙(网络访问控制列表),我们对流量进行筛选(某些类型的流量不允许进入),通过第一轮筛选后,我们再放置一个防护墙(安全组)对试图进入EC2的流量进行筛选
网络访问控制列表(网络ACL)
子网的虚拟防火墙,默认网络ACL允许所有入站和出战流量,自定义网络ACL拒绝所有入站和出站流量,也就是黑名单机制(名单上的不允许通过)
网络ACL执行无状态数据包筛选,必须先根据出站规则对数据进行检查,数据包才能离开子网
安全组
AmazonEC2实例的虚拟防火墙,默认情况下,安全组拒绝所有入站流量并允许所有出战流量,也就是白名单机制(名单上的才能通过)
安全组执行有状态数据包筛选,就是数据进来后,安全组有记录以前对传入数据包所做的决策
总结就是:隔离、联通、管控
域名系统(DNS)
就是解析IP的,后面有很多集群
数据库
主要分为关系型数据库和非关系型数据库
如:mysql库。平时用的就是这个,跟表格一样,有字段有行有列,每一行的数据都是按照字段的类型来写入的
非关系型数据库,比如第一行存放**[姓名、地址、爱好],第二行存放[姓名、地址、生日]**,每一行称为一个item
关系型数据库
RDS
主要有Amazon Aurora(高于RDS,定位是企业级数据库,对标Oracle)、PostgreSQL、MySQL、MariaDB、Oracle数据库、Microsoft SQL Server
关系型数据库,跟传统的关系型数据库无异。是托管数据库,而不是无服务器数据库
托管数据库通常由云服务提供商完全管理,用户不需关心硬件或基础设施,主要关注数据库的配置和优化。
无服务器数据库则让用户更专注于应用逻辑,而数据库本身自动扩展,按需付费。
托管数据库的成本较为固定,适合需要稳定性和控制的应用;
无服务器数据库则因按需计费,可能在使用量波动较大的情况下更具成本效益。性能方面,托管数据库提供更高的定制性和优化机会,而无服务器数据库在处理流量变化时自动调整,以适应负载波动。
非关系型数据库
非关系型数据库使用行列以外的结构来组织数据
如:使用键值对,将数据组织到项目(键)中,且项目具有属性(值)
Amazon DynamoDB
无服务器键值数据库,会自动扩展以根据容量变化进行调整,同时保持一致的性能,每天可以处理超过10w亿个请求
DMS
Amazon Database Migration Service。异构迁移
迁移 关系数据库、非关系数据库和其他类型的数据存储
如:MySql数据 通过DMS迁移到AmazonAurora数据库,
其他数据库服务
- Amoazon Redshift - 跨数据仓库查询和分析数据
- Amazon DocumentDB - 在文档数据库服务中运行MongoDB工作负载
- Amazon Neptune - 运行使用高度互连的数据集的应用程序,比如图谱类的应用
- Amazon QLDB - 查看应用程序数据的完整更改历史记录
- Amazon Managed Blockchain -运行分散式分类账数据库(区块链)
- Amazon ElastiCache - 添加缓存层以缩短数据库读取的时间
- Amazon DynamoDB Accelerator - 将DynameDB响应时间从几毫秒缩短到几微秒
责任共担模式
云本身的安全性
亚马逊云科技主要负责
- 数据中心的物理安全性
- 网络基础设施
- 硬件和软件基础设施
- 虚拟化基础设施
客户主要负责
- 实例操作系统
- 基于主机的防火墙
- 应用程序
- 账户管理
- 安全组
亚马逊云科技账户根账户
Amazon Identity and Access Management — IAM
可用于管理对亚马逊云科技服务和资源的访问,IAM用户是代表与亚马逊云科技服务和资源 交互 人员或应用程序的身份
创建的亚马逊账户就是根用户,拿到根用户后创建一个IAM用户并为其授予创建其他用户的权限,并以新IAM用户身份登录,并继续创建其他用户,根用户用来执行有限数量的任务
IAM策略
用于允许或拒绝用户对亚马逊云科技服务和资源的权限的文档
IAM组
IAM组是IAM用户的集合
最佳实践:将IAM策略附加到IAM组,而不是附加到单个IAM用户,成员继承分配给组的策略
IAM角色
一种身份,可以通过担任这种身份来获得权限的临时访问权限
多重身份验证
要登陆到亚马逊云科技网站,用户需要输入其IAM用户ID和密码,系统会提示用户提供Amazon MFA设备发出的身份验证响应内容,通过身份后可以请求云服务或资源
Amazon Organization
多账户模式下,可以帮助客户从一个中央位置整合并管理多个亚马逊云科技账户,使用服务控制策略(SCP)集中控制组织中各个账户的权限
合规性
由各地区的权威机构提供支持(比如保险)
Amazon Artifact
按需访问安全性与合规性报告和选择线上协议
应用程序安全性
Amazon WAF
帮助保护Web应用程序和API免受常见的Web攻击
Amazon Shield
使用解决Dos和DDoS攻击可防范分布式拒绝服务(DDoS)攻击
- 保护应用程序免受DDoS攻击
- 将 Amazon Shield Advanced 与其他亚马逊云科技服务集成
- 使用Amazon WAF编写自定义Web ACL 规则以缓解复杂的 DDoS攻击
Amazon Inspector
对应用程序自动执行安全评估,其实就是漏洞扫描
- 自动执行应用程序安全性评估
- 发现安全漏洞以及与最佳实践的偏差
- 接收有关如何解决安全性问题的建议
其他安全服务
- Amazon Key Management Service
可以帮助客户通过使用加密密钥执行加密操作,可以为密钥选择所需的特定访问控制级别 - Amazon GuardDuty
智能威胁检测
监控和分析
- Amazon CloudWatch
- Amazon CloudTrail
- Amazon Trusted Advisor
Amazon CloudWatch
实时监控亚马逊云科技和本地基础设施和资源,从一个位置访问所有指标,根据指标自动提醒和操作
如下问题:
- 如何知道应当合适启动更多的Amazon EC2 实例
- 应用程序的性能或可用性是否受到容量不足的影响
- 实际使用的基础设施有多少
Amazon CloudWatch 主要有三个主要组件组成指标、警报、事件
可以跟踪并监控资源和应用程序的性能和运行状况,它可以:
- 跟踪资源和应用程序性能
- 收集和监控日志文件
- 警报触发时收到通知
- 触发事件
Amazon CloudTrail
跟踪整个亚马逊云科技基础设施中的用户活动和API请求,筛选API调用生成的日志,以帮助进行运营分析和故障排除,自动检测异常账户活动
Amazon Trusted Advisor
观察并给出改进建议(成本优化、性能、安全性、容错能力、服务限制)
、定价和支持
- 亚马逊云科技定价 - 了解亚马逊云科技账单工具
- 整合账单
- 亚马逊云科技定价工具
- Amazon Support计划
- Amazon Marketplace
亚马逊云科技定价 - 了解亚马逊云科技账单工具
免费套餐主要有永久免费、12个月免费、试用
定价主要有随用随付、预留容量,付费更少、阶梯计价(如水电,超过多少量会有优惠)
整合账单
多账户环境下,每个账户去付款不合理(应该统一由财务去付款),因此,整合账单为所有亚马逊云科技账户提供单个账单,查看每个账户产生的逐项列明的费用,在企业的各个账户间共享成本节省
就是一个查看下属账单的工具,优化成本可以看一下
比如:张三要用2T的S3,李四要用5T的S3,王五要用7T的S3,那么此时管理账户就可以看到,直接去购买14个T的(多买肯定有折扣)
亚马逊云科技定价工具
Amazon Budgets
用于为亚马逊云科技服务使用量和成本设置阈值
比如:原本预算45元,但是结果发现,没用到这么多,就用这个工具看,哪个服务没用到,就关了,节省成本
Amazon Cost Explorer
可用于可视化、了解并管理一段时间内亚马逊云科技成本和使用情况
Amazon Support 计划
Basic Support
Basic Support对所有亚马逊云科技客户免费,并且可让他们访问以下资源:
- 技术论文、文档、和支持社区
- Amazon Personal Health Dashboard
- 选择有限的 Amazon Trusted Advisor 检查
以下是付费支持(越往下越贵)
- Developer
- 最佳实践指导
- 客户端诊断工具
- 构建块架构支持
- Business
- 使用案例指导
- 所有Amazon Trusted Advisor 检查
- 对第三方软件的有限支持
以下更高级,会有一个技术客户经理
- Enterprise On-Ramp
- 应用程序架构指导
- 基础设施事件管理
- 多位技术客户经理(TAM)
- Enterprise
- 应用程序架构指导
- 基础设施事件管理
- 指定TAM
Amazon Marketplace
一个数字目录,其中列出了可在亚马逊云科技上运行的第三方软件
主要有以下类别
- 业务应用程序
- 数据和分析
- DevOps
- 基础设施软件
- 物联网
- Machine Learning
- 迁移
- 安全性