Amazon Elastic Compute Cloud (Amazon EC2) 直译过来是一种可伸缩的计算云,提供了普遍的实例类型选择,这些实例类型通过优化以适应不一样的用例,实例类型包括CPU、内存、存储和网络容量的不一样组合,使咱们可以灵活地为应用程序选择适当的资源组合。每一个实例类型包括一个或多个实例大小,容许您将资源扩展到目标工做负载的需求。这里是 EC2 实例类型一览表,截部分图在这里展现html
说简单一点: EC2 就是一个按照你需求配置的虚拟机,若是你须要在虚拟机上作 CPU 密集型的任务,那就选高 CPU 低内存的实例,若是是 I/O 密集型的,那就选择低 CPU 高内存的实例,花最少的钱知足提供最贴合你须要的服务git
有了这个基本的了解事后,咱们就能够在 EC2 上安装 Apache 服务来进一步了解 EC2github
因为本身开通了 AWS free tier(绑定信用卡),能够免费玩 12 个月,若是你也这样作,建议设置好帐单阈值,当使用了产生费用的服务时,会给你提醒,以防产生过多开销shell
点击下图 Launch Instance 按钮新建 EC2 实例浏览器
新建 EC2 实例主要按照下图上方的七步完成,首先是选择 AMI (Amazon Machine Images), 其实就像选择操做系统,标记为 Free tier eligible
的是咱们能够无偿使用的,下图用红色框线标记的则是 Amazon 封装好的 AMI,里面会包含 ECS agent 以及 Docker 的配置(本次 demo 不会用到这些服务),其余 AMI 可能须要手动安装,因此没有特殊要求也建议选择 Amazon AMI安全
点击右侧的 Select 按钮进入下一步bash
选择系统配置,Free tier eligible 只有这么一种类型(1个vCPU,1GB Memory)网络
继续点击 Confiture Instance Details,进行详细内容配置,下图中作了一些字段的说明,演示的状况下多以默认设置为主负载均衡
若是没有额外的 non-required
的配置,能够继续点击 Add Storage 进行存储方面的配置,默认会有 8GB 的存储空间,足够咱们安装 Apache 服务,因此这里不会额外添加其余 Volumecurl
继续下一步 Add Tags
下一步 Configure Security Group, Security Group 其实就比如防火墙,分为 Inbound Rule(默认deny all) 和 Outbound Rule(默认 allow all),下图配置了两种(SSH/HTTP)方式反问 EC2 实例,前者用于后续安装 Apache 服务,后者用于浏览器验证服务,这里的 source 都是 0.0.0.0/0 (指任何访问来源,这是很宽松的规则,实际业务中也是不容许这样的)
到这里就能够点击 Review and Launch 来发布 EC2 实例了
检查配置内容,若是没有问题,最终点击 Launch,在最终 launch 以前,还须要生成 key pair(将其下载到本地),用于 SSH 访问,若是已经生成过,也能够选择用已有的
最终 Launch Instances,就获得了一个处在 running 状态的 EC2 instance
从上图中能够看出,咱们也被分配一个 Public IP 54.145.44.9
若是咱们不使用 Elastic IP ,咱们每次 Launch 一个 EC2 服务都会获得一个新的 Public IP,因此你的应该和个人不同
接下来,咱们就能够用刚刚的 Key Pair 链接 EC2 来安装 Apache 服务
点击上图 Connect
按钮, 有三种链接方式:
第一种链接方式就像你建立 github repo 同样给出了你完整的操做步骤。默认状况下,若是你直接使用下载下来的 Key Pair 来链接 EC2, 会报错说「文件权限太大」。因此要经过 chmod 400
来给定合理的文件权限, 接下来就在 Mac 下作一下链接 EC2 的演示
其中
ec2-user
是 Amazon Linux 2 AMI 的默认用户 (链接的前提必须是在 Security Group 的 Inbound Rule 支持 SSH 方式链接配置)
若是你身边没有命令行工具或者 Putty,也能够直接使用第三种经过浏览器链接的方式:
点击 Connect,一样会进入 EC2
从上图能够看出,有两个 IP,一个 Public IP,一个 Private IP,若是经过 SSH 链接,注意使用前者
第二种链接方式因为默认状况没有 IAM 配置,暂时没办法经过该种方式链接:
到这里,咱们就能够进入 EC2 来安装 Apache 服务了
切换为超级管理员身份
sudo su
先作系统更新
yum update -y
安装 httpd
yum install -y httpd.x86_64
启动 httpd 服务
systemctl start httpd.service
Enable httpd 服务
systemctl enable httpd.service
到这里 Apache 服务就已经安装好了
直接在命令行中经过 curl 命名进行测试
curl localhost:80
从下图能够看出,Apache 服务已经安装成功
这么看着不是特别友好,因此经过浏览器再次访问(经过 Public IP),就能够友好的看到 Apache 服务的测试页面了
按照测试页面说明,更改一下测试页面内容
echo "Hello AWS from $(hostname -f)" > /var/www/html/index.html
刷新浏览器页面
到这完成的 Apache 服务就已经安装完毕了
若是在 EC2 instance 建成后安装 1 个软件还好,若是要安装多个软件,而且要在多个 EC2 instance 上运行,上面这种安装方式显然很不友好,AWS EC2 支持使用 User Data 来解决咱们上述痛点
其实就是在 EC2 instance 第一次启动的时候须要执行的 shell 脚本
咱们能够将上述安装 Apache 服务的全部步骤编写成一个 shell script
#!/bin/bash sudo su yum update -y systemctl start httpd.service systemctl enable httpd.service echo "Hello AWS from $(hostname -f)" > /var/www/html/index.html
有了这个脚本,咱们就能够在 EC2 instance 的 Configure Instance 步骤时的高级选项中,就能够添加User Data 脚本内容
后续步骤和上面同样,这里再也不重复了,方便了许多
若是建立 EC2 instance,都须要输入脚本,万一哪次拷贝出现误差,一样会带来一些问题和不变,因此 AWS 一样支持将 EC2 打包成 image 的功能解决这个痛点(熟悉 Docker 的朋友应该秒懂建立 Image 的做用)以下图
输入相关的信息
一个 AMI 就这样的建成了
本身建立的 AMI 能够经过点击左侧菜单 AMIs 来查看
后续在 Create Instance 的时候就能够选择从你本身的 AMI 中建立,到这里,关于 EC2 种安装 Apache 服务就介绍完毕了
相信经过这篇文章,你对 EC2 有了一个基本的概念,经过安装 Apache 服务,以及使用 User Data ,再到最后使用 AMI,也逐步丰富你对 EC2 相应功能的理解,以上的这些功能,也只是 EC2 的冰山一角,实际他能够结合 EC2 Template作 AWS Batch Job 工做,以及多个 instance 经过 ASG 来管理。之后陆续展开说明
最后
了解过 EC2 基本功能后,也要及时 stop 或 terminate EC2 instance,以防长时间处在 running 状态带来开销
EC2 是一个很是成熟的服务,有多种 instance 类型应对各类需求,同时水平扩展和垂直扩展策略也能够从容应对各类突增请求。
在使用云服务以前,要考虑基础设施,网络安全,负载均衡,健康检查以及监控等,以上这些设置都要经过各类组件组合在一块儿,反复调试才能获得一种相对较好的平衡。而 AWS EC2 借助其余服务 VPC, ALB,以及 CloudWatch 等能够完美的将传统搭建过程融合在一块儿,大大下降了由于系统集成问题致使的 bug。无需搭建任何基础设施,只须要简单的配置,在保证稳定性,高可用的同时,大大缩短了一个 APP 上线周期。目前公司全部服务都已按照相应需求发布到 EC2 实例上,单一的管理入口,让多个服务管理也更加从容