Day6 AMI,SNS,AutoScalling,和CloudWatch
回顾
昨天,我们分流出来了2台服务器到移动端,并给他创建了ターゲットグループ并配置到了之前的ロードバランサ实现了一个移动端的监听机制。最后在Route53绑定了一个域名,实现了网页域名访问。
目标
了解和实践
- [ ] 了解AMI是什么,并熟悉使用
- [ ] 了解SNS是什么,并学会使用
- [ ] AutoScalling
- [ ] 了解CloudWatch,并学会配置监控
1.AMI
Amazon Machine Image (AMI) 是一种包含软件配置 (例如,操作系统、应用程序服务器和应用程序) 的模板。通过 AMI,您可以启动实例,实例是作为云中虚拟服务器运行的 AMI 的副本。您可以启动多个 AMI 实例。
其实就是备份和快照,今天来尝试做一个AMI
- 进入EC2→インスタンス→选择一台主机(web1a)
- 进入アクション→イメージとテンプレート→イメージを作成
- 名字起一个(qlite-dev-xxx-ami-web1a)
这样我们就给web1a打了一个快照。
AMI的用法
两种方法
方法一:
- 进入EC2→インスタンス→インスタンスを起動
- 在选择系统栏目里选择自分のAMI
- 选择自己刚刚创建的快照启动即可
方法二:
- 进入EC2→左边侧边栏找到AMI
- 选择刚刚创建的AMI启动他
- 简单配置一下名字和安全组网络启动他(qlite-dev-xxx-ami-web1a)
到此你就可以熟练的使用AMI了。
小插曲:第一次启动在配置没有问题的情况下,我连不进去SSH,删重新创建解决。????(^^;;
来看看目前的网络构成
2.SNS创建
SNS( Simple Notification Service / 简单通知服务 )
是一项托管服务,提供从发布者向订阅者(也称为创建者和使用者)的消息传输。
发布者通过将消息发送至主题与订阅者进行异步交流,主题是一个逻辑访问点和通
信渠道。
客户端可以订阅 SNS 主题并使用受支持的终端节点类型接收已发布的消息,例如
Amazon Kinesis Data Firehose、Amazon SQS、AWS Lambda、HTTP、电子邮件、移
动推送通知和移动短信 (SMS)。
SNS用法
- 选择SNS→トピック→トピックの作成
- 选择スタンダード→起一个名字(qlite-dev-xxx-topic)
- サブスクリプション(订阅),比如有什么提醒,账单警告都可以通过订阅来发邮件给我们。
- 创建一个サブスクリプション(订阅)→プロトコル选择Eメール→填入自己邮箱????
- 然后我们会收到一个邮件,确认订阅即可。
- 回到サブスクリプション(订阅)我们可以看到確認済み表示订阅成功。
3.Cloudwatch
可实时监控AWS资源以及 AWS 上运行的应用程序。
アラーム ( alarm / 警报 )
メトリクス( metrics / 指标 )
CPUUtilization ( CPUユーティリゼイション / CPU使用率 )
しきい値 ( threshold / 阈值 )
CloudWatch用法
-
CloudWatch→左边侧栏すべてのアラーム→アラームの作成
-
メトリクスの選択→EC2→インスタンス別メトリクス→我们可以通过インスタンス ID来搜索我们的实例
-
我们来添加一个CPUUtilization监控,选择他最后点击メトリクスの選択
-
根据需求选择条件阈值我们选个70,期間1分钟检测一次。
-
达到上面条件我们要做什么?然后会跳转到アクションの設定、然后我们选择アラーム状態→通信の送信先选择我们的topic点击下一步
-
输入名前アラーム名(qlte-dev-xxx-alarm)
-
作成
这样CPU超过70的阈值就会发邮件提醒我们了。
你可以点击创建的アラーム找到アクション确认。
4.Auto Scaling
Amazon EC2 Auto Scaling 是一项完全托管的服务,可自动启动或终止Amazon EC2 实例,以帮助确保您拥有适当数量的Amazon EC2 实例来处理应用程序负载。
当我们服务器负载过高,他可以帮我们创建新的实例来平衡负载,当我们负载不高不需要的时候,他会帮我们自动终止实例。
感觉就是动态资源调用?应该是吧。
Auto Scaling的使用
在创建Auto Scaling之前,我们要清楚,自己需要最高创建几台,最低几台实例,放在哪里和安全组等等。
1.创建起動テンプレート
在配置之前我们首先需要创建起動テンプレート
- 在EC2中先选择起動テンプレート→起動テンプレートを作成。
- 填入名称(qlite-dev-xxx-tmp)
- OS选择上午创建的AMI,表示以创建选择的对AMI为准,后面都会根据选择的AMI来创建实例。
- 根据需求选择配置t2,密钥,pri1a子网,web的安全组
- 最后点击创建
到这里我们就设定了以什么为准创建哪种实例
2.创建Auto Scalingグループ
- 选择Auto Scalingグループ→Auto Scalingグループ作成
- 起个名称qlite-dev-xxx-asg
- 第二步,选择自己的VPC和pri1a和pri1c子网下一步
- 第三步默认,下一步
- 第四步,最大容量选个4,选择ターゲット追跡スケーリングポリシー,起名qlite-dev-xxx-asg
- 第五步,选择添加一个通知,选择我们上午创建的topic,当然你也可以创新创建一个トピック然后下一步。
- 第六步,追加一个タグ(标签)填入Name 值填qlite-dev-xxx-asg,勾选新しいインスタンスをタグ付けする这样后面创建的新机器都会追加这个标签。
- 第七步开始确认自己的配置,没问题的话就可以创建了。
⚠️ 如果创建 オートスケーリング失败,进入详情的オートスケーリング创建一个動的スケーリングポリシーを作成する,直接作成一个就好了。
3.写一个cpu的sh脚本来拉高cpu来测试是不是可以帮我们自动创建实例
-
进入刚刚创建的asg实例
-
sudo su vim cpu.sh #内容写入一个循环 while [ 1 ] do echo aaa > /dev/null done dd if=/dev/zero of=/dev/null
保存退出
然后我们来运行这个脚本
sh cpu.sh &
-
可以用ps或者top来查看进程
-
过了一会儿可以观察到自动增加了很多实例。
-
没有问题我们可以 kill 掉sh
kill pid
过一会儿观察是不是自动帮我们终止实例了。
思考????
来复盘一下今天做了些什么
- 我们利用AMI创建了一个属于自己的快照,并学会了如何快速创建实例。
- 然后我们创建了一个SNS服务,来邮件提示我们
- 通过CloudWatch资源监控,我们配置了监控CPU资源,并通过SNS服务来邮件提示我们。
- 为了实现动态资源调用我们使用Auto Scaling服务来帮我们在高负载下面实现自动帮我们创建实例来分摊负载。