本文作者: 封磊

Eclicktech SA | AWS Community Builder DevTool | AWS UGL | 亚马逊云科技云博主

阿里云&InfoQ&CSDN签约作者

前言

在上一篇《亚麻云之平步"轻"云》中,我们体验了Amazon Lightsail的简单易用。当你的应用需要更多灵活性和控制权时,就是时候"轻云直上",进入Amazon EC2的世界了。EC2是AWS的核心计算服务,掌握它是云计算进阶的必经之路。

什么是Amazon EC2?

Amazon EC2(Elastic Compute Cloud)是AWS提供的可扩展计算服务,让你可以在云中运行虚拟服务器。与Lightsail相比,EC2提供了更多的配置选项和控制权。

从Lightsail到EC2的主要区别

特性 Lightsail EC2
易用性 简单,预配置 灵活,需要配置
实例类型 固定套餐 丰富的实例类型
网络 简化网络 完全可控的VPC
存储 固定SSD 多种存储类型
定价 固定月费 按需付费
扩展性 有限 无限扩展

从Lightsail迁移到EC2

方法一:快照迁移(推荐)[也可控制台操作]

最简单的迁移方式是使用Lightsail的快照导出功能:

# 1. 创建Lightsail快照
aws lightsail create-instance-snapshot \
    --instance-name my-lightsail-instance \
    --instance-snapshot-name migration-snapshot

# 2. 导出快照到EC2
aws lightsail export-snapshot \
    --source-snapshot-name migration-snapshot

# 3. 在EC2中使用导出的AMI启动实例

方法二:手动迁移

对于简单应用,也可以手动迁移:

  1. 备份数据和配置文件
  2. 在EC2中创建新实例
  3. 安装相同的软件
  4. 恢复数据和配置

EC2基础概念

实例类型选择

EC2提供多种实例类型,适合不同的工作负载:

通用型(推荐入门)

  • t3.micro:1 vCPU, 1GB RAM - 免费套餐
  • t3.small:1 vCPU, 2GB RAM - 轻量应用
  • t3.medium:2 vCPU, 4GB RAM - 中等负载

计算优化型

  • c5.large:2 vCPU, 4GB RAM - CPU密集型应用

内存优化型

  • r5.large:2 vCPU, 16GB RAM - 内存密集型应用

网络基础

VPC(虚拟私有云)

  • 你的私有网络空间
  • 可以创建子网、配置路由表
  • 比Lightsail的网络更灵活

安全组

  • 虚拟防火墙
  • 控制入站和出站流量
  • 可以引用其他安全组

存储选项

EBS(弹性块存储)

  • gp3:通用SSD,性价比高【默认使用,若默认选择gp2建议换为gp3】
  • io2:高性能SSD,适合数据库
  • st1:吞吐优化HDD,适合大文件,做存储使用

创建你的第一个EC2实例

使用控制台创建【以俄勒冈为例】

控制台链接:https://us-west-2.console.aws.amazon.com/ec2/home?region=us-west-2#Home:

  1. 选择AMI:Amazon Machine Image(操作系统镜像)
    • Amazon Linux 2023(推荐)
    • Ubuntu Server
    • Windows Server
  2. 选择实例类型:建议从 t3.micro 开始
  3. 配置网络
    • 选择VPC和子网
    • 启用公有IP(如果需要从互联网访问)
  4. 配置存储
    • 根卷大小(默认8GB)
    • 存储类型(推荐gp3)
  5. 配置安全组
    • SSH (22端口)
    • HTTP (80端口)
    • HTTPS (443端口)
  6. 选择密钥对:用于SSH连接

使用命令行创建

# 创建密钥对
aws ec2 create-key-pair \
    --key-name my-ec2-key \
    --query 'KeyMaterial' \
    --output text > my-ec2-key.pem

chmod 400 my-ec2-key.pem

# 创建安全组
aws ec2 create-security-group \
    --group-name my-web-sg \
    --description "Web server security group"

# 添加规则
aws ec2 authorize-security-group-ingress \
    --group-name my-web-sg \
    --protocol tcp \
    --port 22 \
    --cidr 0.0.0.0/0

aws ec2 authorize-security-group-ingress \
    --group-name my-web-sg \
    --protocol tcp \
    --port 80 \
    --cidr 0.0.0.0/0

# 启动实例
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --count 1 \
    --instance-type t3.micro \
    --key-name my-ec2-key \
    --security-groups my-web-sg

实战案例:在EC2上部署WordPress

连接到实例

# 使用SSH连接
ssh -i my-ec2-key.pem ec2-user@your-instance-ip

安装LAMP环境

# 更新系统
sudo yum update -y

# 安装Apache、MySQL、PHP
sudo yum install -y httpd mysql php php-mysql

# 启动服务
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl start mysqld
sudo systemctl enable mysqld

安装WordPress

# 下载WordPress
cd /var/www/html
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz

# 设置权限
sudo chown -R apache:apache /var/www/html
sudo chmod -R 755 /var/www/html

配置数据库

# 登录MySQL
sudo mysql

# 创建数据库和用户
CREATE DATABASE wordpress;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

配置WordPress

# 复制配置文件
sudo cp wp-config-sample.php wp-config.php

# 编辑配置文件
sudo nano wp-config.php

在配置文件中修改数据库信息:

define('DB_NAME', 'wordpress');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'localhost');

现在访问你的实例IP地址,就可以看到WordPress安装页面了!

EC2的基本管理

实例生命周期

# 查看实例状态
aws ec2 describe-instances --instance-ids i-1234567890abcdef0

# 启动实例
aws ec2 start-instances --instance-ids i-1234567890abcdef0

# 停止实例
aws ec2 stop-instances --instance-ids i-1234567890abcdef0

# 重启实例
aws ec2 reboot-instances --instance-ids i-1234567890abcdef0

# 终止实例
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0

创建快照备份

# 创建EBS快照
aws ec2 create-snapshot \
    --volume-id vol-1234567890abcdef0 \
    --description "My backup snapshot"

# 查看快照
aws ec2 describe-snapshots --owner-ids self

监控实例

# 查看CPU使用率
aws cloudwatch get-metric-statistics \
    --namespace AWS/EC2 \
    --metric-name CPUUtilization \
    --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
    --start-time 2023-01-01T00:00:00Z \
    --end-time 2023-01-01T23:59:59Z \
    --period 3600 \
    --statistics Average

成本管理基础

定价模式

按需实例

  • 按小时计费
  • 无长期承诺
  • 适合测试和开发

预留实例

  • 1年或3年承诺
  • 最多节省75%成本
  • 适合稳定的生产环境

Spot实例

  • 利用空闲容量
  • 最多节省90%成本
  • 可能被中断,适合容错应用

成本优化建议

  1. 选择合适的实例类型:从小开始,根据需要扩展
  2. 使用预留实例:对于长期运行的工作负载
  3. 定期审查:删除不需要的资源
  4. 使用标签:便于成本分配和管理
# 为实例添加标签
aws ec2 create-tags \
    --resources i-1234567890abcdef0 \
    --tags Key=Environment,Value=Production Key=Project,Value=WebApp

安全基础

基本安全实践

  1. 使用密钥对:禁用密码登录
  2. 配置安全组:只开放必要端口
  3. 定期更新:保持系统和软件最新
  4. 使用IAM角色:避免在实例中存储访问密钥

系统安全配置

# 更新系统
sudo yum update -y

# 配置防火墙
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

# 禁用root登录
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd

常见问题解决

无法连接实例

  1. 检查安全组是否允许SSH(22端口)
  2. 确认使用正确的密钥文件
  3. 检查实例是否在运行状态
# 检查实例状态
aws ec2 describe-instances --instance-ids i-1234567890abcdef0 \
    --query 'Reservations[*].Instances[*].State.Name'

性能问题

  1. 检查CPU使用率
  2. 监控内存使用
  3. 考虑升级实例类型
# 修改实例类型(需要先停止实例)
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
aws ec2 modify-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --instance-type Value=t3.medium
aws ec2 start-instances --instance-ids i-1234567890abcdef0

下一步学习方向

掌握了EC2基础后,你可以继续学习:

  1. 负载均衡器:分发流量到多个实例
  2. Auto Scaling:自动调整实例数量
  3. RDS数据库:托管数据库服务
  4. CloudWatch:详细监控和告警
  5. VPC高级功能:NAT网关、VPN连接

结语

从Lightsail到EC2,你已经迈出了云计算进阶的重要一步。EC2虽然比Lightsail复杂一些,但它为你提供了更多的灵活性和控制权。

记住几个关键点:

  • 从小实例开始,根据需要扩展
  • 重视安全配置,定期更新系统
  • 合理使用标签,便于管理和成本控制
  • 定期备份重要数据

EC2是AWS的核心服务,掌握它将为你打开更广阔的云计算世界。继续实践,不断学习,你将很快成为云计算的行家!


准备好探索EC2的强大功能了吗?开始创建你的第一个EC2实例,体验真正的云计算灵活性!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐