AWS-EC2AWS EC2 定时运维流程与规范
AWS EC2 定时运维流程与规范
根据 综合指南:定制 AWS EC2 服务器 (SSH 隧道访问内部服务) 中的第 12 节和第 13 节,建立以下定时运维流程与规范:
核心运维任务
- 自动系统更新: 定期更新操作系统软件包,保持系统安全。
- Docker 资源清理: 定期清理停止的容器、未使用的网络、悬空镜像以及旧镜像,释放磁盘空间。
- 数据库备份: 定期备份 MongoDB, Redis, PostgreSQL 数据,并将备份存储到安全的位置(如 AWS S3)。
- 日志管理: 配置
logrotate管理系统和应用日志,防止磁盘空间耗尽。 - 监控与告警: 利用 CloudWatch 等工具监控服务器状态并设置告警。
计划任务 (Cron) 配置
使用 sudo crontab -e 编辑 root 用户的 cron 表,添加以下任务(时间可根据实际情况调整):
# 自动系统更新 (每周日凌晨 3:30)
30 3 * * 0 /usr/local/sbin/auto_update.sh
# Docker 资源清理 (每周日凌晨 4:00)
0 4 * * 0 /usr/local/sbin/docker_cleanup.sh
# --- 数据库备份 (示例:每天凌晨 2:00) ---
# PostgreSQL 备份
0 2 * * * /usr/local/sbin/backup_postgres.sh
# MongoDB 备份
5 2 * * * /usr/local/sbin/backup_mongo.sh
# Redis 备份 (根据策略,可能是复制 RDB 文件)
10 2 * * * /usr/local/sbin/backup_redis.sh运维脚本
以下脚本应放置在 /usr/local/sbin/ 目录下并赋予执行权限 (sudo chmod +x <script_name>)。
自动系统更新 (auto_update.sh)
#!/bin/bash
LOG_FILE="/var/log/auto_update.log"
echo "Starting system update on $(date)" >> $LOG_FILE
# 使用 dnf (Amazon Linux 2023)
sudo dnf update -y >> $LOG_FILE 2>&1
# 如果是 Amazon Linux 2, 使用 yum:
# sudo yum update -y >> $LOG_FILE 2>&1
echo "Finished system update on $(date)" >> $LOG_FILE
exit 0Docker 资源清理 (docker_cleanup.sh)
#!/bin/bash
LOG_FILE="/var/log/docker_cleanup.log"
echo "Starting Docker cleanup on $(date)" >> $LOG_FILE
# 清理停止的容器
docker container prune -f >> $LOG_FILE 2>&1
# 清理未使用的网络
docker network prune -f >> $LOG_FILE 2>&1
# 清理悬空的镜像 (dangling images)
docker image prune -f >> $LOG_FILE 2>&1
# 清理未使用的卷 (谨慎使用,确保没有重要数据)
# docker volume prune -f >> $LOG_FILE 2>&1
# 清理超过 30 天未使用的所有镜像 (包括非悬空镜像)
docker image prune -a -f --filter "until=720h" >> $LOG_FILE 2>&1
echo "Finished Docker cleanup on $(date)" >> $LOG_FILE
exit 0数据库备份脚本 (需要自行创建)
- backup_postgres.sh: 应使用
pg_dump命令,连接到127.0.0.1:5432(或容器名postgresql),使用安全方式提供凭证,将备份文件(建议包含日期)上传到 S3。 - backup_mongo.sh: 应使用
mongodump命令,连接到127.0.0.1:27017(或容器名mongodb),使用安全方式提供凭证,将备份目录打包(建议包含日期)上传到 S3。 - backup_redis.sh: 可以通过复制 Redis 数据卷中的 RDB 文件 (
dump.rdb) 或使用redis-cli的SAVE/BGSAVE命令,然后将备份文件(建议包含日期)上传到 S3。 - 重要: 备份脚本需要配置 AWS CLI 并拥有上传到目标 S3 存储桶的权限(推荐使用 IAM Role for EC2)。凭证管理应遵循安全最佳实践。
文档与操作规范
- 维护文档: 保持
initialize-aws-ec2-based-server.mdx和本文档的更新,记录所有配置、脚本位置、cron 任务。 - 凭证管理: 使用 AWS Secrets Manager 或 Parameter Store,或安全的密码管理器存储数据库密码、S3 访问凭证等,严禁硬编码在脚本中。
- 备份与恢复: 详细记录备份策略(频率、保留期、S3 存储桶)和详细的恢复步骤,并定期测试恢复流程。
- 变更管理: 记录所有对 cron 任务、运维脚本或服务器配置的重大更改。
- 监控: 定期检查运维脚本的日志文件 (
/var/log/) 和 cron 的执行情况,确保任务成功运行。配置 CloudWatch 监控关键指标和日志。