2023-01-11 · 8

AWS EC2(Elastic Compute Cloud)

cloudawsec2

这篇文章发布已超过两年,内容可能已过时。

什么是 EC2(Elastic Compute Cloud)?

Amazon Elastic Compute Cloud(Amazon EC2)在 Amazon Web Services(AWS)云中提供可扩展的计算能力。使用 Amazon EC2 无需预先投资硬件,可以更快地开发和部署应用。你可以启动任意数量的虚拟服务器、配置安全与网络并管理存储。Amazon EC2 支持按需扩缩,从而应对需求变化或流量高峰,减少预测流量的负担。— Amazon 官方文档

EC2 是一项让你租用一台独立计算机来使用的服务。

EC2 的优势

  • 可以非常轻松地配置出一台计算机。
  • 想要什么规格都容易匹配,按需付费即可(钱包痛)。
  • 可以挂载 EBS(Elastic Block Store)卷作为持久存储。
  • 可以通过 EIP(Elastic IP Address)分配固定 IP。

VPC 与 EC2 的使用

VPC 配置在上一篇文章中已全部完成。这是 EC2 页面,点击 Launch instances。

AMI 我选了 Amazon Linux,你可以按喜好选择。更多 AMI 信息可点击 Quick Start 右侧的 Browse more AMIs 查看。

Instance type 中罗列着各种性能规格的实例,选择需要的即可。接下来因为还没有密钥,需要创建 Key pair:点击右侧 Create new key pair。

把密钥名称设置好后点击 Create key pair。密钥要妥善保管,千万别丢。

下面是 Network settings。如果界面不一样,点 Edit 即可。设置 VPC 和 Subnet。Auto-assign public IP 会自动分配公网 IP,但我们要用 EIP 绑定固定 IP,所以选择 Disable。

之后按这台服务器的用途进行配置即可。我要做 Web 服务,所以额外开放了 HTTP、HTTPS 端口。

  • Request Spot Instances 询问是否使用竞价实例:市场价高于出价时实例终止,低于时再启动。我需要按需(用户随时能访问),所以不勾选。
  • Domain join directory 是 AWS 的 Microsoft Active Directory 全托管服务,此处询问是否使用。
  • IAM instance profile — IAM(Identity and Access Management)用于控制和管理 AWS 资源权限。如果已有 IAM 角色,在这里分配。
  • Hostname type 决定主机名里放 IP 还是实例 ID 之类的资源标识。
  • Instance auto-recovery 决定实例系统状态检查失败时是否自动恢复。
  • Shutdown behavior 选择在操作系统里执行 shutdown 时是 STOP 还是 TERMINATE 实例。
    • terminate instance:终止后虚拟机被永久删除,所有数据清除,EBS 卷也会被分离并删除。
    • stop instance:关键区别是 stop 不会删除 EBS 卷,但 EBS 标准费用照常收取。
  • Stop - Hibernate behavior 可以选择让实例进入休眠模式。
  • Termination protection 防止实例被意外终止。启用后无法直接从 CLI 或管理控制台终止实例。
  • Stop protection 防止实例被意外停止。
  • Detailed CloudWatch monitoring — 创建实例后 CloudWatch 会免费监控基础指标;启用此项可查看更细粒度的指标,当然会产生额外费用。
  • Elastic inference 用于深度学习等需要硬件加速的场景。
  • Credit specification — AWS 实例支持突发性能实例(burstable performance instances)。
    • 平时以固定基准性能运行,需要更高算力时用积分瞬时提升性能。
    • 选择 unlimited 后即使积分耗尽也能从 AWS 借用继续突发。此选项收费,用不好可能比直接上更高档实例还贵。
  • Placement group 决定创建实例时把它放置在哪里。
  • EBS-optimized instance 提供更好的 EBS 性能,仅部分实例类型可用。
  • Capacity reservation 用于在特定可用区预留实例容量。
    • 要放入已有预留时选择 Target by ID 或 Target by Group。
    • 不使用则选 None。
    • 想让现在创建的实例加入以后创建的预留,选 open。
  • Tenancy — 实例可能与他人共享物理服务器,需要物理隔离时选择专用实例或专用主机,会产生额外费用。
    • 使用专用实例选 Dedicated - run a dedicated instance。
    • 使用专用主机选 Dedicated host - launch this instance on a dedicated Host。
    • 其他情况选 Shared - run a shared hardware instance。
  • RAM disk ID、Kernel ID 建议保持 Select 默认值。
  • Nitro Enclave 可在实例内安全地保护和处理敏感信息,仅部分实例类型可用。
  • License configurations 可以把 AWS License Manager 里配置的许可证应用到实例。
  • Metadata accessible 选择是否允许访问实例元数据。
  • Metadata version 选择实例元数据的版本。
  • Metadata response hop limit 限制元数据允许的跳数。
  • Allow tags in metadata 选择实例是否可通过元数据访问自己的标签。
  • User data 是放置实例创建时以 root 权限执行的脚本的地方。
    • 示例链接 ← 类似网站里可以看到按需编写 bash 脚本的方法。

全部配置完后点击 Launch instance 创建实例。

可以看到创建成功了。但因为我们禁用了自动分配,所以没有 Public IPv4。去设置 EIP 吧。

在 Network & Security 中点击 Elastic IPs,然后点 Allocate Elastic IP address。

在 Tags 里只设置 Name,然后 Allocate 创建。

创建成功。点击最上方的 Associate this Elastic IP address 把它分配给 EC2。

如上图选择 Instance 后点 Associate 完成分配。

Public IPv4 分配成功。现在连接实例吧。请把下面的信息写入 ~/.ssh/config 文件。

Host public-ec2-a1
    HostName [DNS or IP]
    User ec2-user
    IdentityFile [.pem file location]
    Port 22

写好后在终端输入 "ssh public-ec2-a1" 就能连上刚创建的实例。

连接一切正常。接下来用公网 IP 访问网站试试。

可以看到 Apache 安装成功。现在访问脚本最后的 phpinfo.php。

完美打开!

user-data 里写的脚本确实生效了。接下来创建 public-subnet-c1 —— 把 public-ec2-a1 存为 AMI 后照做即可。

勾选 public-ec2-a1 后右键,点 Image and templates → Create image 创建 AMI。

进入 AMIs 就能确认已正确创建。

如上图新建实例,除 user-data 外其余设置与之前相同。之后同样创建并绑定 EIP。

Host public-ec2-c1
    HostName [DNS or IP]
    User ec2-user
    IdentityFile [.pem file location]
    Port 22

现在在 c1 上应用上述代码。通过 IP 或域名都能正常访问网站。

辛苦了!EC2 的基本用法你已全部掌握!


原文(韩语): tistory — 发布于 2023-01-11,已迁移至本博客。本翻译由 AI 协助完成。

评论

删除这条评论?

相关文章

AWS EC2(Elastic Compute Cloud) · 나봄하랑