Mais conteúdo relacionado
Semelhante a Aws auto scalingによるwebapサーバbatchサーバの構成例 (20)
Mais de Takeshi Mikami (20)
Aws auto scalingによるwebapサーバbatchサーバの構成例
- 1. takemikami’s note – http://takemikami.com/
三上 威 (フリーランスITエンジニア) twitter: @takemikami
AWS AutoScalingによる
WebAPサーバ/Batchサーバの構成例
AutoScalingでサーバを構成するために必要な周辺知識
1
AWS AutoScaling
2016.1.26
Copyright (C) 2016 Takeshi Mikami. All rights reserved.
- 2. takemikami’s note – http://takemikami.com/
アジェンダ
• 自己紹介
• AWS Auto Scalingとは
• 想定するサーバ構成
• 実現に必要な周辺知識
– どのように処理を分散するか … ELB, SQS
– どこにデータを保持するか… RDS, S3
– どこにログを出力するか… CloudWatch Logs
– どのようにサーバを起動/構成するか… LaunchConfiguration, cloud-init
– 何をきっかけにScalingするか… CloudWatch, Alarm
• Tips
– アプリケーションのデプロイと切り戻し
– バッチサーバの安全な減設
• まとめ
2Copyright (C) 2016 Takeshi Mikami. All rights reserved.
- 3. takemikami’s note – http://takemikami.com/
自己紹介
• 三上威 (@takemikami)
• フリーランスITエンジニア
– マーケティングデータ分析基盤のシステム開発運用
• 略歴
– 情報通信ネットワークの研究 @ 甲南大学理学部応用数学科
– Web系システムの開発・構築@ NEC系SIer
– 旅行系ECサイトのマーケティングデータ分析 @ DeNA
• 最近扱っている技術領域
– Spark, Scala, Akka, Hadoop, AWS, Redshift, docker, embulk, fluentd
3Copyright (C) 2016 Takeshi Mikami. All rights reserved.
- 8. takemikami’s note – http://takemikami.com/
どのように処理を分散するか 〜WebAPサーバの場合
8Copyright (C) 2016 Takeshi Mikami. All rights reserved.
実現に必要な周辺知識:どのように処理を分散するか
どのように処理を分散するか(WebAPサーバの場合)について説明します。
ELB
EC2
Auto Scaling group
EC2
EC2
WebAPサーバへの
要求を分散
• ELB(LoadBalancer)で処理を分散
AutoScalingGroupに対応するELBを指定
→(HealthCheck成功後)自動でELBに接続される
- 9. takemikami’s note – http://takemikami.com/
どのように処理を分散するか 〜Batchサーバの場合
9Copyright (C) 2016 Takeshi Mikami. All rights reserved.
実現に必要な周辺知識:どのように処理を分散するか
どのように処理を分散するか(Batchサーバの場合)について説明します。
• SQSでJobキューを作り、Batchサーバからpollingすることで処理を分散
各EC2インスタンスで、以下の処理を実施
①SQSからJobIDを取得
②該当JobIDのパラメータをRDSから取得
③該当JobIDのRDS上のStatusを実行中に
④該当バッチを実行
⑤該当JobIDのRDS上のStatusを完了に
⑥①に戻り次のJobを処理
SQS
EC2
Auto Scaling group
EC2
EC2
Batchサーバへの
要求をQueueに保持
各EC2からpolling
(実行パラメータはRDS)
RDS
※SQSの仕様上Queueに同じJobIDが入る可能性があ
るので、実行StatusはRDSで管理
JobID投入
実行パラメータ
投入
- 11. takemikami’s note – http://takemikami.com/
どこにログを出力するか
• EC2インスタンスは動的に起動/終了するためログを保存出来ない
→CloudWatch Logsにログを転送
11Copyright (C) 2016 Takeshi Mikami. All rights reserved.
実現に必要な周辺知識:どこにログを出力するか
どこにログを出力するかについて説明します。
EC2
CloudWatch
LogsAuto Scaling group
EC2
EC2
CloudWatchLogsに
ログデータを集約
EC2のDisk上のデータは
インスタンス終了時に消える
※awslogsパッケージをinstallし、設定ファイルに転送するログファイルを記載すれば転送設定できる。
ログは逐次、
CloudWatchLogsに転送
- 15. takemikami’s note – http://takemikami.com/
何をきっかけにScalingするか 〜AlarmによるScaling
15Copyright (C) 2016 Takeshi Mikami. All rights reserved.
実現に必要な周辺知識:何をきっかけにScalingするか
何をきっかけにScalingするか(AlarmによるScaling)について説明します。
CloudWatch
EC2
Auto Scaling group
EC2
EC2
Alarm
監視によるAlarm
に応じてScaling
• CloudWatchでAlarmを設定、Alarmに応じてインスタンス数の拡大縮小を実行
※AutoScalingのきっかけとして考えられるAlarmの例:
・ELBへのリクエスト数
・ELBのLatency
・SQSのキューの長さ
- 16. takemikami’s note – http://takemikami.com/
何をきっかけにScalingするか 〜指定時間でのScaling
16Copyright (C) 2016 Takeshi Mikami. All rights reserved.
実現に必要な周辺知識:何をきっかけにScalingするか
何をきっかけにScalingするか(指定時間でのScaling)について説明します。
• 指定時間になったらインスタンス数の拡大縮小を実行することも可能
EC2
Auto Scaling group
EC2
EC2
指定時間になったら
インスタンスを増減
※2016/1/26現在、ManagementConsoleから設定でき
ないようですが。
aws-cliの「aws autoscaling put-scheduled-update-
group-action」で設定が可能。
トラフィック増が事前に予測可能ならば、
Alarmより、指定時間でのScalingの方が
扱いやすいと思います。
- 21. takemikami’s note – http://takemikami.com/
EC2
EC2
バッチサーバの安全な減設
• バッチサーバでバッチ実行中はAutoScalingのInstanceProtectionを設定
→ScaleIn時にバッチを実行していないインスタンスが停止
21Copyright (C) 2016 Takeshi Mikami. All rights reserved.
Tips
バッチサーバの安全な減設方法について説明します。
EC2
Auto Scaling group
バッチ実行中 & InstanceProtection
バッチが動いていない
(=InstanceProtectionされていない)
インスタンスが停止
バッチ実行中 & InstanceProtection
※デフォルトでInstanceProtectionを設定していない場合は、
最も費用が安価になるようにインスタンスを選んで停止
- 22. takemikami’s note – http://takemikami.com/
まとめ
• AutoScalingでは、以下のことを実現出来る
– 障害時にインスタンスを自動で置き換え
– 需要に応じてインスタンス数を拡大縮小
• 実際にAutoScalingを使ってサーバを構成する場合は
関連するAWSサービスなどの周辺知識が必要
• AutoScalingと周辺機能を利用し、
アプリケーションのデプロイ/切り戻しの仕組みを作ることも出来
る
22Copyright (C) 2016 Takeshi Mikami. All rights reserved.