# AWS 入门介绍

AWS是亚马逊公司出品的云端计算平台

# 课程目标

  • 实现弹性架构
  • 实现高性能架构
  • 实现高可用架构
  • 实现安全的架构
  • 实现成本优化

# 设计系统架构该考虑的问题

  • 需要几台服务器
  • 每个服务器的功能(Web, Cache, DB,...)
  • 需要什么硬件配置的服务器(CPU, MEM, HDD/SDD,...)
  • 服务器放在哪里(IDC, Cloud,...)
  • 服务器需要什么OS(Linux, Windows,...)
  • 服务器需要什么软件(Apache,Nginx,Tomcat,MySQL,PostgreSQL,...)
  • 网络构成是怎样的(客户端,中间层,服务层,数据层,分析层,AI层,...)
  • 网络IP该如何规划(根据角色分配IP范围)
  • 需要几个子网(对外公开,对内公开)
  • 如何设计网络安全(服务访问授权,跟踪,数据加密,传输加密,WAF,DDos,...)
  • 如果与本地连接(公司内网和云端通信机制)
  • 如何提高服务可用性(负载均衡,多区域部署)
  • 如何节省成本(性价比)

# 申请AWS账号

  • 邮件地址
  • 手机号码
  • 信用卡号

# 基本操作

  • 设置CloudWatch - 监控我的成本
  • 设置IAM管理员 - 把权利装进笼子
    • Root根账号
    • 普通管理员
    • 普通成员
  • 设置CloudTrial - 你干啥我都知道
    • 记录系统中用户或API的活动行为(Who,When,What,...)
  • 理解区域和可用区 - 让我们把世界切分
    • 理解区域(Regions)
    • 理解可用区(Availability Zones)

# 搭建网络

考虑到系统整体可用性,今后需要将服务部署到多个AZ区,所以应该提前做好IP地址的规划

  • 公开网络 主要用于对外公开的服务器,如:Web,API服务器

    • 172.16.10.0/24
    • 172.16.11.0/24
  • 私有网络 主要用于内部使用的服务器,如:DB, Redis等

    • 172.16.20.0/24
    • 172.16.21.0/24
  • 建立VPC - 建立我们自己的IDC

    • 172.16.0.0/16
    • learning-vpc
    • 亚太地区(新加坡) ap-southeast-1a 可用区
  • 建立公私网 - 公私分明才能网络安全

    • 子网所属VPC learning-vpc
    • 公开网络
      • 172.16.10.0/24
      • learning-web-1a
    • 私有网络
      • 172.16.20.0/24
      • learning-db-1a
  • 建立互联网网关 - 公开网络和私有网络的主要区别

    • 建立互联网网关, 并绑定到VPC上,使VPC子网可以连上互联网
      • 建立互联网网关: learning-igw
      • 绑定到VPC learning-vpc 上
  • 建立公网路由表 - 让我们的子网连接到互联网

    • 建立 learning-vpc 时,会默认建立一个路由表learning-rtb(已重命名),其中路由规则
      • 172.16.0.0/16 --> local(本地learning-vpc) 目前还不具备和外界通信的功能
    • 新增路由表 learning-web-rtb
      • 绑定vpc deeplearnaws-vpc
      • 编辑路由 0.0.0.0/0 --> 互联网网关 learning-igw
    • 把新路由绑定到 learning-web-1a 子网
  • 两个防火墙 - 网络ACL和安全组SG

    • 网络存取控制列表 - ACL 针对整个VPC生效
    • 安全组 - SecurityGroup 针对AWS资源生效
    • learning-web-sg 开通 SSH(22端口号)

# 建立EC2实例

  • OS: Amazon Linux 2023 AMI
  • 实例类型: t2.micro
  • VPC: learning-vpc
  • 子网: learning-web-1a
  • 自动分配公有 IP
  • 内网IP: 172.16.10.10/32
  • Name: learning-web1
  • 密钥对: learning-ssh-key
# SSH连接
$ cp ~/Downloads/learning-ssh-key.pem ./
$ chmod 400 learning-ssh-key.pem
# ec2-user默认User
$ ssh -i ./learning-ssh-key.pem ec2-user@13.212.94.88
  • 建立AMI - 把自己的系统克隆
# 安装docker
sudo yum install -y docker
# 修改 docker 附加组给 ec2-user
sudo usermod -a -G docker ec2-user
docker version
sudo systemctl start docker
ps aux | grep docker
sudo systemctl enable docker


# 安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.19.1/docker-compose-linux-x86_64" -o /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose
docker-compose version

# 安装 node.js
curl -sL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y gcc-c++ make
sudo yum install -y nodejs
node -v

# 安装 git
sudo yum install git -y
git version

# 选装
sudo yum install -y nmap

# 重启
sudo reboot
# 关闭
sudo init 0
  • 创建learning-ami

# 互联网网关

  • 在公开网络中建立NAT网关
    • Name: learning-web-nat
    • SubNet: learning-web-1a
    • Elastic IP 收费 及时关闭
  • 建立DB私有网络的路由表, 设置NAT网关
    • Name: learning-db-rtb
    • Target: learning-web-nat -> 0.0.0.0/0
  • 建立DB私有网络的安全组, 开放 3306 - MySQL端口
    • Name: learning-db-sg
    • Port: 3306

# 建立私有网段的服务器 - For MySQL

  • 修改私有网段安全组,增加 Port:22 支持
    • learning-db-sg
    • Port: 22
  • 在私有网段建立 EC2 实例
    • Name: learning-db1
  • 通过公有网段 web-ec2 实例连接到 db-ec2 实例
    • 本地连接到 learning-web1
    • 拷贝本地连接私钥到 learning-web1
    • 通过 learning-web1 连接到 learning-db1
    • lerning-db1测试
# @learning-web1
ssh -i ./learning-ssh-key.pem ec2-user@172.16.20.10
# @learning-db1
sudo yum update -y
curl www.baidu.com
上次更新: 8/15/2023, 9:59:02 AM