jaws-ug北陸第5回勉強会 クラウド破産しないためのebs入門

43
JAWS JAWS 北陸 第 北陸 第 5 5 回勉強会 回勉強会 クラウド破産しないための クラウド破産しないための EBS EBS 入門 入門 2013年4月13日 植木 和樹

Upload: kazuki-ueki

Post on 25-May-2015

5.131 views

Category:

Technology


8 download

DESCRIPTION

2013/04/13 金沢で開催された第5回勉強会のライトニングトーク資料です。 AWS EBSのI/OとIOPSについてベンチマークツールを使っていろいろ計測した結果をまとめました。間違いなどあればご遠慮なくご指摘ください。

TRANSCRIPT

Page 1: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

JAWSJAWS北陸 第北陸 第55回勉強会回勉強会

クラウド破産しないためのクラウド破産しないためのEBSEBS入門入門

2013年4月13日植木 和樹

Page 2: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

EBSについていろいろ調べてみました

いわゆる学習成果発表会です人生初LTです

よろしくお願いします

本日の内容

Page 3: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

自己紹介名前:植木和樹年齢:36歳出身:新潟県妙高市(現在は富山県単身赴任中)独立系SIerに勤務製造業情報システムG常駐主にサーバエンジニア資格:ITサービスマネージャ   システムアーキテクト

緑色のオニの人@czkuk

Page 4: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

AWS歴

約70日

前回(2月2日)第4回JAWS北陸のハンズオンがほぼ初めて

(仕事はクラウドと全く無関係です)

Page 5: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

好きなAWSサービス

SQS(Simple Queue Service)

シンプルだけど自在なサービス連携地味で裏方的な感じがイイ

Page 6: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

得意な技術

方眼紙エクセル

見積書から手順書まで全部エクセル♡

Page 7: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

もう一度 本日の内容

クラウド破産が怖いのでEBSについていろいろ調べてみました

Page 8: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

はじまり2月のある日

AWSについて調べものをしていると

「クラウド破産」

という穏やかでない単語に出会う

Page 9: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門
Page 10: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

http://togetter.com/li/21972

Page 11: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

5日で25万て・・・

Page 12: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

http://togetter.com/li/21972

Page 13: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

I/Oの課金?

Page 14: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

AWSの主な課金単位

● 時間(EC2、ELB)● 容量(EBS、S3、RDS)● APIリクエスト数(S3、SNS、SQS)● データ転送量(ELB)● I/Oリクエスト数(EBS)● Provisioned IOPS(EBS)

Page 15: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

I/Oリクエスト数?IOPS?

Page 16: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

見積りたいけど

時間やデータ量、APIリクエスト数は利用頻度の前提があればどうにかなるかも

・・・でもI/Oリクエスト数ってどうやって見積もるの?

Page 17: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

見積り方法ついて考える前にまずはIOPSについておさらい

Page 18: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

I/O request数とは?IOPSとは?

IOPS【Input/Output Per Second】

ハードディスクなどの記憶装置の性能指標の一つで、ある条件の元で1秒間に読み込み・書き込みできる回数のこと。1回の読み書きにかかる時間の逆数で、ハードディスクの場合はシークタイムと回転待ち時間、データ転送時間の和の逆数となる。実際には、読み込み(リード)か書き込み(ライト)か、シーケンシャルアクセスかランダムアクセスか、転送するデータの量がどれくらいかによって1回の動作に要する時間が異なるため、「4KBランダムライトIOPS」(4KBのデータをランダムに書き込んだ時のIOPS)のように計測条件を明示することが多い。

e-Wordsより http://e-words.jp/w/IOPS.html

Page 19: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

EBSのIOPS

「スタンダードボリュームの平均パフォーマンスは約 100 IOPS」

・・・だそうですが計測条件がわからない

http://aws.amazon.com/jp/ebs/

Page 20: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

【疑問】

AWSがIOPSを計測する際のデータサイズってどれくらい?4KBのデータ書き込みと1MBのデータ書き込みはどちらも1 I/Oなの?

Page 21: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

検証してみた

ブロックサイズを指定できるベンチマークツールを使って60秒間に読み書きしたデータ量・IOPSを計測するその結果とAWSの計測結果を比較するついでにvmstatでも計測してみる

ベンチマークには fio を利用参考にさせてもらったサイト: 

Provisioned IOPSの検討 - JPOUG Advent Calendar 2012http://d.hatena.ne.jp/sh2/20121217

Page 22: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

比較した内容● ベンチマークツールのIOPS x 60秒ブロックサイズ:

4、8、16、32、64、128、256、512KB、1MBの9種類

読み書き割合:100%読み取り100%書き込みの2種類

多重度:1計測時間:60秒

● CloudWatchのAWS/EBS VolumeReadOps/VolumeWriteOpsの時間合計

● vmstat -dの「成功した読み込み/書き込みの総数」の時間増加量

Page 23: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

使用したEC2環境 リージョン:Tokyo インスタンスタイプ:t1.micro OS:Amazon Linux 2013.03 64bit カーネル:2.6.18 EBS:スタンダード 32GB ファイルシステム:ext4

Page 24: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

準備● Vagrant 1.1 + AWSプラグインでEC2インスタンス起動

● Berkshelfで必要パッケージ導入● aws-cli でEBS Volume作成し、EC2インスタンスにアサイン

● Volumeをext4でフォーマット● EC2でVolumeマウント● fio-2.0.14 をconfigure; make && make install

● fioベンチ実行 + 裏でvmstat実行● AWS SDK for rubyでCloudWatchから値を取得してCSV出力

● Excelで集計!!

Page 25: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

結果ブロックサイズ

Read Writefio vmstat Cloud

Watchfio vmstat Cloud

Watch4KB 101 101 101 273 274 274

8KB 91 92 92 229 230 230

16KB 99 100 100 258 259 259

32KB 89 90 90 242 243 243

64KB 47 96 48 225 452 226

128KB 75 227 152 173 520 347

256KB 71 430 215 86 517 259

512KB 54 658 329 48 587 294

1MB 40 967 564 32 792 462

単位:IOPS

Page 26: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

(fioのIOPSを1とした場合)ブロックサイズ

Read Writefio vmstat Cloud

Watchfio vmstat Cloud

Watch4KB 1 1 1 1 1 1

8KB 1 1 1 1 1 1

16KB 1 1 1 1 1 1

32KB 1 1 1 1 1 1

64KB 1 2 1 1 2 1

128KB 1 3 2 1 3 2

256KB 1 6 3 1 6 3

512KB 1 12 6 1 12 6

1MB 1 24 14 1 25 14

Page 27: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

結論:アプリのブロックサイズとAWSのデータ転送サイズは異なる

● EBSでは最大64〜85KBを目安に転送ブロックが分割される

● CloudWatchの値はvmstat のread/writeの計測結果とは異なる

● EBSのI/Oリクエスト数はCloudWatchでなければ計測できない(っぽい)

Page 28: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

つまり、こういうこと?

アプリケーション

OS

EBSストレージプール

16KBデータブロック

256KB

16KB

積載量 最大85KB

①85KB

②85KB

③85KB CloudWatch

I/Oリクエスト計測

fio

vmstat

Page 29: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

EBSの転送速度???

「スタンダードボリュームの平均パフォーマンスは約 100 IOPS」1 I/O = 64KB〜85KBつまり6,400〜8,500KB/secの転送速度がでるということ???

http://aws.amazon.com/jp/ebs/

Page 30: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

【次の疑問】

「スタンダードボリュームの平均パフォーマンスは約 100 IOPS」Provisioned IOPSはIOPSで月固定料金

1IOPS = 0.12$ = 約12円(Tokyo)なら100 PIOPSなら月12円で読み書きし放題?

Page 31: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

検証してみた

100PIOPSのEBSに対して先ほどと同じ試験を実施する

● ベンチマークツールのIOPS x 60秒ブロックサイズ:

4、8、16、32、64、128、256、512KB、1MBの9種類

読み書き割合:100%読み取り100%書き込みの2種類

多重度:1計測時間:60秒

● CloudWatchのAWS/EBS VolumeReadOps/VolumeWriteOpsの時間合計

● vmstat -dの「成功した読み込み/書き込みの総数」の時間増加量

Page 32: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

ついでにこれについても確認してみる

「Provisioned IOPS ボリュームはアプリケーションの読み込み、書き込みを16KBかそれ以下のI/Oブロックサイズで処理します。16KB以上にI/Oサイズを増やすと、同じIOPSの速度を達成するために必要なリソースが線形に増加します。」

⇒ ブロックサイズが16KBより大きくなるとアプリのI/O数と差が出てくるはず

http://aws.typepad.com/aws_japan/2012/11/ebs-volume-status-checks.html

Page 33: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

結果ブロックサイ

ズ Read Writefio vmstat Cloud

Watchfio vmstat Cloud

Watch4KB 102 102 102 101 102 102

8KB 102 102 102 101 102 102

16KB 102 102 102 101 102 102

32KB 102 102 102 101 102 102

64KB 101 203 102 101 204 102

128KB 50 152 101 50 153 102

256KB 33 200 100 33 204 102

512KB 16 204 102 16 204 102

1MB 7 176 102 7 175 102

単位:IOPS

Page 34: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

なんか予想と違う

ブロックサイズを16KB以上にしてもfioのIOPSとCloudWatchのIOPSに差がでてこない16KB以上にI/Oサイズを増やすと、fioのIOPSが低下していく

⇒ 解釈か検証方法間違ってるのかも・・・

Page 35: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

ともあれ結論:Provisioned IOPSの特徴

● Provisioned IOPSボリュームはIOPSが指定値に制限される※スタンダードは数百IOPSまでバースト可能

● PIOPSもスタンダートと同じく64〜85KBくらいで処理しているようにみえる(?)

Page 36: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

EBSの(超概算)I/O見積方法

●ブロックサイズが64KBまで⇒ I/Oリクエスト数 = アプリI/O回数

●ブロックサイズが64KB以上⇒ I/Oリクエスト数 =   ブロックサイズ/64KB x アプリI/O数

● 100IOPS以下の(バーストしない)I/Oが定常的に発生する場合はProvisioned IOPSを検討する

Page 37: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

ところで何調べてたんだっけ?

Page 38: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

三度目 本日の内容

クラウド破産が怖いのでEBSについていろいろ調べていました

Page 39: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

どれだけ使ったら5日で25万円になるのか?

Page 40: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

Amazon Simple Monthly CalculatorAmazon Simple Monthly Calculatorで計算してみた

Page 41: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

5日で25万円ってどんだけ?

http://calculator.s3.amazonaws.com/calc5.html?lng=ja_JP

3030日で日で140140万円なので万円なので55日で日で2020万万ちょっとちょっと

2020個!のスタンダードボリュームを個!のスタンダードボリュームをそれぞれそれぞれ2000 IOPS!!2000 IOPS!!でぶんまわすでぶんまわす

Page 42: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

クラウド破産が怖いのでEBSについていろいろ調べてみました

本日のまとめ

スタンダードスタンダードEBSEBSはバーストしてもはバーストしても600IOPS600IOPSくらいくらい

数台の数台のEBSEBSを使う程度なら全く問題ないを使う程度なら全く問題ない

負荷テストするなら負荷テストするならProvisioned IOPSProvisioned IOPSにすればにすれば料金が月額固定になって料金が月額固定になって

ちょっと安心ちょっと安心

Page 43: JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門

ご清聴ありがとうございました!