EC2简单介绍

EC2的简单介绍

区域(Region)和可用区(Availablity Zone)的概念

  • 区域

    每一个AWS区域都是一个独立的地理区域,分布在直接各地,AWS有不少服务都是无法直接跨区域交流的,需要额外的配置。

    截屏2021-01-31 下午8.06.35
  • 可用区(AZ)

    每个Region下都有多个AZ,我们创建EC2的时候可以任意地选择AZ来创建,不会影响各个EC2之间的交互。

    AZ可以理解为一个Region下的不同的机房,这些机房通过高速网络互相连接。

    我们建议在同一个Region的不同AZ下部署服务,以实现高可用。(防止一个AZ不可用的时候,所有服务都宕机)

截屏2021-01-31 下午8.10.16

EC2是什么?

Elastic Compute Cloud, Amazon的web服务,能在AWS云中提供安全且可调整大小的计算能力。

人听得懂的版本:AWS云上的虚拟服务器,可以自己配置各个属性。

EC2的定价类型

Ps:这个概念如果不是为了考证和节省资源,可以跳过。

EC2给我们提供了很多种计价方案,我们可以通过项目需求来选择不同的计价方案,以此来节省费用。

  • 按需实例(On Demand Instance)- 用多少时间付费多少,费用精确到秒,不用则可以随时关闭/终止并停止费用的产生

  • 竞价实例(Spot Instance)- 在aws上会有以拍卖的形式卖EC2的使用资源,我们可以以低于按需实例的价格竞得实例,但价格高于设定得价格后会自动被终止,适合可以随时中断,分割成子任务的计算任务。

  • 保留实例(Reserved Instance) – 相当于买断一个实例1年/3年,期间不管实例开不开都需要付总得费用,但平均下来费用会比按需实例便宜

  • 专用主机实例(Dedicated Hosts)- 涉及到软件许可证的时候,会考虑使用专用主机实例

EC2的实例类型

截屏2021-01-31 下午8.50.17

怎么来连接EC2?

1.通过密钥对连接

  • 创建EC2的时候我们可以通过创建/选择现有的密钥对来连接
截屏2021-01-31 下午10.12.45
  • 当我们选择实例进行连接,就可以看到相关的命令,需要注意的是,我们需要把引号内的字符串改成pem所在真实路径,然后再运行就能连接了。如下图
截屏2021-01-31 下午10.21.36
截屏2021-01-31 下午10.26.36

2.通过Session Manager来连接

需要注意的点是,要使用Session Manager来连接,在EC2内需要先安装SSM 代理。

SSM 代理 在 2017.09 及以后日期版本的 Amazon Linux 基本 AMI 上默认安装。默认情况下,SSM 代理 还安装在 Amazon Linux 2 AMI 上。

  • 创建一个EC2角色,这个角色需要有SSM相关的权限,这里我们选用的是AWS已经提供给我们的角色
截屏2021-01-31 下午10.45.04
截屏2021-01-31 下午10.45.50
  • 将IAM角色附加到EC2上,点击保存后需要等待几分钟,这确实比较慢。
截屏2021-01-31 下午10.46.43
截屏2021-01-31 下午10.46.52
  • 通过这种方式我们就可以不用密钥对来访问EC2了,减少了管理、轮换密钥对的工作。
截屏2021-01-31 下午11.05.15
  • 这其实是用了AWS的另一个服务——AWS System Manger来管理这个会话。
截屏2021-01-31 下午11.08.35

存储类别

  • 实例存储

    实例存储的实例不能被停止(只能重启或终止),如果这个实例出现故障,那么在上面的所有数据将会丢失.

    这里的停止可以类比于关机,一般情况下关机之后我们可以重启。

    终止可以类比于删除这台机器。

    实例存储只适合临时存储不重要的数据。

  • EBS (Elastic Block Storage)

    可以理解为外接硬盘,但是这个硬盘只能被一个EC2使用,而且一开始设置的多少容量就不能改了,可以对其进行加密存储。

    一般我们会把根设备设置为EBS,默认情况下终止EC2这个根EBS卷也会被删除,当然我们可以更改这个设定。

    EBS也有很多种类,对于不同的使用场景有不同的特化,参考链接:https://aws.amazon.com/cn/ebs/volume-types/

  • EFS(Elastic File System)

    可以理解为外接硬盘,而这个硬盘可以挂载到不同的EC2上,可以认为这个硬盘的容量是无限大的,EFS的数据会被保存在多个可用区内,且具有读写一致性。

AMI(Amazon Machine Images)是什么?

预配置的EC2镜像,一个AMI包含了你打包的好操作系统,以及相应的应用程序和配置,可以省去一些装软件的时间。

我们也可以定制自己的AMI,通过AMI我们可以启动完全相同的机器,这个在下面的Auto Scaling会被用到。

Auto Scaling

AS可以自动地伸缩EC2实例的数量,我们可以设置在需求高峰增加实例,在低谷时减少EC2实例。

如下图所示,我们甚至还能控制在什么时间点进行扩容。

这边主要再介绍下两个概念,启动配置(Launch Configuration)和弹性伸缩组(Auto Scanling Group)

启动配置(Launch Configuration):

  • 启动配置是弹性伸缩组用来启动EC2实例的时候所使用的模板

  • 启动配置包含了镜像文件(AMI),实例类型、密钥对、安全组和挂载的存储设备

  • 一个启动配置可以关联多个Auto Scaling组

  • 启动配置一经创建不能被更改,只能删除重建

  • 启动配置中可以使用CloudWatch的监控

弹性伸缩组(Auto Scanling Group):

  • 弹性伸缩组(ASG)是弹性伸缩的核心,它包含了多个拥有类似配置/类型的EC2实例,这些实例被逻辑上认为是一样的

  • 弹性伸缩组需要的几个参数:

    • 启动配置(Launch Configuration):它决定了EC2使用什么模板,模板内容包括了镜像文件(AMI),实例类型、密钥对、安全组和挂载的存储设备

    • 所需/最大/最小容量:决定了在弹性伸缩的情况下,EC2实例数量的浮动范围

    • 负载均衡器: 还可以直接向负载均衡器添加这个ASG,会在新实例启动时自动向负载均衡器注册新实例。

    • 可用区和子网:定义EC2实例启动时候所在的可用区和子网信息

    • 参数和健康检查:参数定义了何时启动新实例,何时终止旧实例;健康检查决定了实例的健康状态。

  • 如果一个EC2实例的健康状态变成“不健康”,那么ASG会终止这个EC2实例,并且自动启动一个新的EC2实例,需要特别注意的是,启动的实例会有不同的IP,某些情况下(比如安全组配置的是IP地址)会导致新的实例不能被访问,是个坑。

  • 弹性伸缩组(ASG)只能在某一个AWS区域内运行,不能跨越多个区域

  • 如果启动配置(Launch Configuration)有更新,那么之后启动的新EC2实例会使用新的启动配置,而旧的EC2实例不受影响

截屏2021-02-01 上午1.15.07

弹性IP地址(Elastic IP)

弹性IP是什么?

弹性IP地址是专为动态云计算设计的静态 IPv4 地址,可以快速将地址重新映射到您的账户中的另一个实例,从而屏蔽实例故障。

ps:一个弹性ip正在被使用时是不收费的,当我们申请一个弹性IP却不把他与其他资源关联起来时,是要收费的。

为什么我们需要弹性IP?

我们可以通过机器的共有IP来通过Internet访问我们的机器,但是每次启动这个实例的时候,这个地址都会变。

当我们启动一台相同的EC2实例,希望来替换原来的EC2时,一般情况下无法设置他的公有IP地址。

基于上述的情况,我们有了弹性IP的服务,我们可以可以将弹性IP地址分配给EC2实例,使其成为这个EC2实例的共有IP地址,

这样我们就可以保证这个EC2实例的公网IP不会被改变。

image

负载均衡器(Elastic Load Balancer)

目前推荐使用的前两种ELB,两者有不少共同点和概念,我们一起来看一下吧。

截屏2021-02-02 上午1.23.04
  • 共同点

    • 用户不需要考虑ELB的高可用性,不需要为其设计高可用的架构设计,它本身自己就可以弹性扩容

    • 可以将入向流量自动分布到多个健康的EC2实例(或者其他的目标)上

    • 能和AWS弹性伸缩(Auto Scaling)集成,从而能保证后台运行的EC2实例能满足流量的需求

    • ELB只在一个特定的AWS区域中工作,不能跨区域(Region),但可以跨可用区(AZs)

    • 使用ELB时应当使用其DNS地址,因为ELB会自己进行弹性扩容,此时DNS对应的IP可能改变

  • 目标组(Target Group)

    • 我们可以将不同的目标添加到目标组中,再将ELB指向目标组,以此来使用ELB,目标组和ELB是不能独立使用的,没有意义。

    • 粘性连接,我们可以对目标组开启粘性连接,这可确保在一个会话期间将来自相同用户的所有请求发送到相同的实例中。

    • 目标组可以进行健康检查,以此来确定目标是否可以处理请求,如果检查不健康则不会向该目标发送请求(除非整个组内都是不健康的目标)

    • 目标组支持多种目标的配置,如下图,还可以配置不同的协议,ELB会通过指定的协议来路由。(比如HTTP/HTTPS,那么只能用ALB来路由,如果是TCP/UDP,那么只能用NLB来路由)

      截屏2021-02-02 上午1.48.42
  • 应用程序负载均衡器(Application Load Balancer)

    • 工作在第七层(应用层)

    • ALB可以承担校验HTTPS证书的工作,减少其后面负载均衡的实例的负担,并且能更好地专注于业务。

    • 在应用程序负载均衡器中,ALB在收到请求之后,会按照优先顺序评估侦听器(Listener)的规则,然后根据定义的规则将流量转发到特定的目标组中。如下图所示,你可以配置不同的侦听器规则,然后根据流量的内容(包括HTTP数据包头部的信息)或者URL路径来将不同的请求转发到不同的目标组内,而一个目标组又包含了若干个目标。

      举个栗子:ALB可以将访问https://guhao.com/posts/文章的流量转发到目标组1中的某台机器,然后将访问https://guhao.com/pages/页面的流量转发到目标组2中的某台机器,以此来更好地划分职责。

      img
  • 网络负载均衡器(Network Load Balancer)

    • 工作在第四层(传输层)

    • NLB可以基于协议、源 IP 地址、源端口、目标 IP 地址、目标端口和 TCP 序列号,使用流式哈希算法选择目标。

    • NLB可以每秒处理数百万个请求

安全组(Security Group)

在每一个EC2实例创建的过程中,你都会被要求为其指定一个安全组(Security Group)。这个安全组充当了主机的虚拟防火墙作用,能根据协议、端口、源IP地址来过滤EC2实例的入向和出向流量。

  • 这里我们以入站规则举例,我们可以指定入站的协议(TCP/UDP/IPV6等),不同的协议对应不同的端口范围,当然我们也可以根据需要来开放,入站中的源指的则是这个请求来自于哪里,这边需要细说一下,来源我们可以定义为指定的IP范围,我们也可以指定来源是用的哪些安全组。如下图所示

    举个栗子:当这台机器指定的源是安全组B的时候,其他使用了安全组B的所有实例都能将流量发送到这台机器。

  • 安全组的有状态的,怎么理解这个有状态呢?我们再举个栗子

    • 如果某个流量被入方向的规则放行,那么无论它的出站规则如何,它的出方向响应流量都会被无条件放行

    • 如果从主机发出去的出站请求,无论入站规则如何,该请求的响应流量都会被无条件放行

  • 安全组我们只能设置允许哪些流量进入而不能设置去拒绝哪些流量

  • 下图中出站规则是(0.0.0.0/0),这代表着任何位置,(::/0)是IPV6的地址表示。

截屏2021-02-02 上午12.42.34
截屏2021-02-02 上午12.47.25

置放群组(Placement groups)

我们想要尽量将我们启动的EC2放置在同一个可用区相互靠近一点,以实现低延迟的网络性能,或者将一些实例严格放置在不同的硬件上以减少相关的故障,这个时候就轮到我们的置放群组出场了。

举个栗子:

  • 集群置放群组

    • 将一些可用区内的EC2实例逻辑分组,这些EC2之间有更低的网络延迟

      集群置放群组
  • 分区放置群组

    • Amazon EC2 确保置放群组中的每个分区具有自己的一组机架。每个机架具有自己的网络和电源。置放群组中的任何两个分区将不会分享相同的机架,从而让您可以在您的应用程序中隔离硬件故障的影响。

      具有 3 个分区的分区置放群组
  • 分布置放群组

    • 每个实例放置在不同的机架上,并且每个机架具有各自的网络和电源。
    分布置放群组

你可能感兴趣的:(EC2简单介绍)