Amazon EC2
中国区的 EC2 如果未备案,无法访问80端口,即使安全组允许80端口。
实例
Images
在 Action -> Modify Image Permissions 中,可以通过添加 AWS Account Number 将该 Image 分享给其他 AWS 账户。
网络与安全
安全组
一般 EC2 中运行的是网站或App后端程序,创建一个通用的安全组 general。
- HTTP
- HTTPS
- SSH
Key Pair
ELB
Load Balancer
- 根据多个EC2所在的可用区,在 编辑子网->可用区 中进行相应设置;
- 一个 Load Balancer 可以根据不同的请求协议转发至不同目标群组,如HTTP 80 / HTTPS 443;
目标群组
- 创建目标群组,选择请求协议类型,将多个EC2注册到这个目标群组中;
- 在目标群组的属性编辑中可以设置粘性。如果启用,则负载均衡器将客户端会话绑定到目标组中的特定实例。
监控
最佳实践
+ 让监控成为优先事务,阻止小问题演变为大问题。
+ 创建并实施从 AWS 解决方案各个部分收集监控数据的监控计划,以便更轻松地调试发生的多点故障。您的监控计划至少应该解决以下问题:
* 您的监控目标是什么?
* 您将监控哪些资源?
* 监控这些资源的频率如何?
* 您将使用哪些监控工具?
* 谁负责执行监控任务?
* 出现错误时应通知谁?
+ 尽可能自动监控任务。
+ 检查 EC2 实例的日志文件。
监控系统和实例状态
系统状态
监控您的实例在其上运行的 AWS 系统。这些检查会检测出需要 AWS 参与修复的深层实例问题。如果系统状态检查失败,您可以选择等待 AWS 修复问题,也可以自行解决问题。对于由 Amazon EBS 支持的实例,您也可自行停止和启动实例,在大多数情况下,这会导致实例被迁移至新的主机。对于由实例存储支持的实例,您可以终止并替换实例。
以下是可能导致系统状态检查失败的问题的示例:
+ 网络连接丢失
+ 系统电源损耗
+ 物理主机上的软件问题
+ 物理主机上影响到网络连接状态的硬件问题
实例状态
监控您的各个实例的软件和网络配置。Amazon EC2 通过向网络接口 (NIC) 发送地址解析协议 (ARP) 请求,检查实例的运行状况。这些检查检测需要您参与修复的问题。如果实例状态检查失败,通常必须由您自行解决问题(例如,重启实例或更改实例配置)。
以下是可能导致实例状态检查失败的问题的示例:
+ 系统状态检查故障
+ 网络或启动配置不正确
+ 内存耗尽
+ 文件系统损坏
+ 内核不兼容
设置警报
您可以使用状态检查指标 https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html.html#status-check-metrics 创建 CloudWatch 警报,以在实例的状态检查失败时向您发送通知。该警报将通过电子邮件向您发送通知,或者停止、终止或恢复实例。
1. 打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2 。
2. 在导航窗格中,选择 Instances。
3. 选择实例,选择 Status Checks (状态检查) 选项卡,然后选择 Create Status Check Alarm (创建状态检查警报)。
4. 选择 Send a notification to。选择一个现有 SNS 主题,或选择 create topic (创建主题) 以创建新的主题。如果要创建新的主题,请在 With these recipients 中,输入您的电子邮件地址以及任何其他收件人的地址,中间用逗号隔开。
5. (可选)选择 Take the action (请执行以下操作),然后选择要采取的操作。
6. 在 Whenever 中,选择想要获得通知的状态检查。
如果您在上一步中选择的是 Recover this instance,则请选择 Status Check Failed (System)。
7. 在 For at least 中,设置所需的评估期间数量,然后在 consecutive periods 中,选择评估期间持续时间,此评估期间结束后才会触发警报并发送电子邮件。
8. (可选)在 Name of alarm 中,将警报的默认名称替换为其他名称。
9. 选择 Create Alarm。
* 重要:如果您向收件人列表添加了电子邮件地址或创建了新的主题,则 Amazon SNS 将向每个新地址发送一封订阅确认电子邮件。每个收件人必须通过选择该邮件中包含的链接来确认订阅。警报通知仅发送至经过确认的地址。
监控内存和磁盘指标
您可以使用 Amazon CloudWatch 从操作系统中收集 EC2 实例的指标和日志。
- CloudWatch 代理(推荐)
- CloudWatch 监控脚本(不推荐)
建议您使用代理(而不是监控脚本)收集指标和日志。如果您打算在 Amazon EC2 实例上使用代理,则必须创建 IAM 角色。如果您打算在本地服务器上使用代理,则必须创建 IAM 用户。您可以通过统一 CloudWatch 代理执行以下操作:
1. 跨操作系统从 Amazon EC2 实例中收集更多系统级指标。除了 EC2 实例的指标之外,这些指标还可以包括来宾中的指标。可以收集的其他指标列在CloudWatch 代理收集的指标中。
2. 从本地服务器中收集系统级别指标。这些服务器可能包括混合环境中的服务器以及不是由 AWS 管理的服务器。
3. 使用 StatsD 和 collectd 协议从应用程序或服务中检索自定义指标。StatsD 在 Linux 服务器和运行 Windows Server 的服务器上都受支持。collectd 仅在 Linux 服务器上受支持。
4. 从运行 Linux 或 Windows Server 的 Amazon EC2 实例和本地服务器收集日志。
您可以使用命令行手动下载并安装 CloudWatch 代理,也可以将其与 SSM 集成。使用这两种方法之一安装 CloudWatch 代理的一般流程如下所示:
1. 创建使代理能够从服务器中收集指标且(可选)与 AWS Systems Manager 集成的 IAM 角色或用户。
2. 下载代理软件包。
3. **修改 CloudWatch 代理配置文件并指定要收集的指标**。
4. 在服务器上安装并启动代理。当您在 EC2 实例上安装代理时,将会附加在步骤 1 中创建的 IAM 角色。当您在本地服务器上安装代理时,您会指定一个命名的配置文件,其中包含您在步骤 1 中创建的 IAM 用户的凭证。
创建在 EC2 实例上运行 CloudWatch 代理所需的 IAM 角色
相关的 CloudWatchAgentServerPolicy 和 CloudWatchAgentAdminPolicy 策略,不需要客户自行创建。关于将文件写入Parameter Store 和从中下载文件,由 Amazon 创建的策略仅支持名称以 AmazonCloudWatch- 开头的文件。如果您的 CloudWatch 代理配置文件的文件名不以 AmazonCloudWatch- 开头,则这些策略不能用于将文件写入 Parameter Store 或从 Parameter Store 下载文件。
1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.aws.amazon.com/iam/。
2. 在左侧的导航窗格中,选择 Roles (角色),然后选择 Create role (创建角色)。
3. 对于 Choose the service that will use this role (选择将使用此角色的服务),选择 EC2 Allows EC2 instances to call AWS services on your behalf (EC2 允许 EC2 实例代表您调用 AWS 服务)。选择 Next: Permissions (下一步:权限)。
4. 在策略列表中,选中 CloudWatchAgentServerPolicy 旁边的复选框。如有必要,请使用搜索框查找该策略。
5. 选择 Next: Review。
6. 确认 Policies (策略) 旁边显示 CloudWatchAgentServerPolicy。在 Role name (角色名称) 中,输入角色的名称,例如 CloudWatchAgentServerRole。(可选)为其指定说明。然后选择 Create role (创建角色)。
创建在本地服务器上运行 CloudWatch 代理所需的 IAM 用户
1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.aws.amazon.com/iam/。
2. 在左侧的导航窗格中,选择 Users (用户),然后选择 Add user (添加用户)。
3. 为新用户输入用户名。
4. 选择 Programmatic access (编程访问),然后选择 Next: Permissions (下一步:权限)。
5. 在策略列表中,选中 CloudWatchAgentServerPolicy 旁边的复选框。如有必要,请使用搜索框查找该策略。
6. 选择 Next: Review。
7. 确认列出了正确的策略,然后选择 Create user (创建用户)。
8. 在新用户的名称旁边,选择显示。将访问密钥和私有密钥复制到一个文件以便在安装该代理时使用。选择 Close。
使用命令行安装和运行 CloudWatch 代理
1. 下载 CloudWatch 代理。 `wget download-link`
2. 验证软件包签名。
3. 安装软件包。 `sudo rpm -U ./amazon-cloudwatch-agent.rpm`
4. 若在 EC2 实例上安装,则附加 IAM 角色;若在本地服务器上安装,则指定 IAM 凭证和 AWS 区域。
5. 启动 CloudWatch 代理。
+ 在运行 Linux 的 EC2 实例上,输入以下内容:
`sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:configuration-file-path -s`
+ 在运行 Linux 的本地服务器上,输入以下内容:
`sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m onPremise -c file:configuration-file-path -s`
+ 此命令中,-a fetch-config 导致代理加载最新版本的 CloudWatch 代理配置文件,-s 启动该代理。