aws memo

AWS関連の備忘録 (※本ブログの内容は個人的見解であり、所属組織及び企業の意見を代弁するものではありません。1年以上古いエントリは疑ってかかってください)

EC2

EC2: User Dataを使ってインスタンス起動時の処理を自動化する

インスタンス起動時に目にするUser Dataって何?って感じなので取り敢えず。 #!/bin/bash -ex yum -y install httpd php php-pear php-xml yum -y install git /etc/init.d/httpd start pear channel-discover pear.amazonwebservices.com pear install aws/…

MongoDB: foursquareは EC2上で MongoDBが動いている

という、スライド。 単一リージョン、単一アベイラビリティゾーン(AZ)に、7つのShardクラスタ(最大で14shard)と3つの非Shardクラスタ。各シャードは3か4のReplica Sets。 m2.4xlarge(68GBメモリ)に、EBS4本でRAID0。データはほぼオンメモリで保持。 iosta…

訳:Netflixが 6.29のAWSと嵐から学んだこと

2012年6月は、立て続けにUS EASTリージョンでダウンタイムが発生している。 NetflixのようにマルチAZの構成にして、常に擬似的に障害を発生させる仕組み( Chaos Monkey)を導入していても、ダウンする場合があることが明らかになった。さらなる可用性向上のた…

訳: AWSで高可用性を実現するベストプラクティス

AWS Cloud Best Practice: Introduction to High Availability Deployment | Newvem AWSのアーキテクチャセンターにも図があるが、解説が少ないので、このシナリオ・ステップは参考になるだろう。 しかし、インフラがRoute53でリージョン間冗長性を考えるグ…

MongoDB: AWSでのTips

MongoDB Casual Talks で発表された、MongoDB onAWSの資料。 元ネタは、MongoDB on AWS White Paper (PDF) MongoDB on EC2 #mongodbcasual View more PowerPoint from Yasuhiro Matsuo 議事メモブログエントリ Mongo DB Casual Talksに参加してきました - Te…

訳:クラウドのアプリケーションデザインパターン

P.15からの、MTTRとMTTFを、従来のITとクラウドで比較検証するあたりがいい。 従来のITは、MTTFを長くすることに注力していたが、クラウドでは、MTTRを短くすることに注力できる。MTTFとMTTRがそれぞれ長い・短いでどうなるかを検証する。 P.17-P20 従来のIT…

AWS : Reserved Instanceの購入と支払い

Reserved Instanceは、最初に予約金( upfront )を支払うことで、キャパシティを確保(予約)して必ずインスタンスを起動することができる。また、副次的に従量課金の単価が安くなる。 upfrontの請求タイミングは購入時点となるので、通常の課金が月末締めで請…

EC2: AMazon Linux にFluentdをインストール

Fluentdは、Ruby1.9で動作するが、Amazon Linux 2012.03にプリインストールされているRubyは ruby 1.8.7 (2011-12-28 patchlevel 357) [x86_64-linux] となっている。ので、そのまま sudo gem install fluentd ではインストール出来ないので、事前にRuby1.9…

EC2: EC2 API Tools を Amazon Linuxにインストール

Amazon EC2 API ToolsをAmazon Linuxにインストールする。 念のためインストール要件の確認 $ java -version $ echo $JAVA_HOME まずは、X.509 認証キーを作って、CERTファイルとプライベートキーファイルを取得しておく。(プライベートキーファイルは紛失…

EC2: AWSからメールがくるケース

通常は関係ないが、稀にAWSから通知メールが来るケースがある(しかも英語) よくあるメールの件名とその内容、および対策をメモ。 Amazon EC2 Maintenance - Network Connectivity Impact ネットワーク保守作業するから指定の時間帯ネットワーク切れるかも…

VPCのアドレスまわりの覚書

VPCを作る際、最初に 10.0.0.0/16 などでアドレス範囲を決める。 http://aws.amazon.com/jp/vpc/faqs/#I4 に書いてある通り、VPCのサイズは、/28から/16まで。 その中にサブネットを複数作成可能。作成できるサブネット数はデフォルトで20サブネット(上限緩…

EBS: チューニングもしくはベストプラクティス

AWSが出しているホワイトペーパーのうち、DB関連のものにいろいろ書いてあるので、拾い読みするとよい。 MongoDB on AWS (PDF) RDBMS in the Cloud: Microsoft SQL Server 2008 R2 (PDF) EBSによるRAID構成やら、ファイルシステムやら、スナップショットやら…

CW: CloudWatchをデータ・ソースとして、Google Chartsでグラフ表示する

うまい組み合わせだ。 cloudviz :CloudWatchをデータ・ソースとして埋め込み可能なグラフを作成するのOSS。EC2とCloudWatchのAPIを使って取得したデータを、Google Interactive Charts(の Visualization API)を使ってグラフ作成する。Googleのデータソース…

EC2: Cloud-init でGitを使う

EC2の機能として、インスタンス作成時にUser Dataとしてパラメータ を渡すことで、起動時に cloud-initが動作する。 これを使って、インスタンス作成時に動的にGitからコンテンツを取得・デプロイすることが可能。 本格的にDevOpsやるなら、PuppetやChefを導…

EC2: AmazonLinuxにMongoDBをインストール

Amazon LinuxはRPMのバイナリがCentOSやRedHatと互換なので、そのままyumのリポジトリに10genのリポジトリを追加して、yumでインストール可能 まず、yumリポジトリに追加 詳細はこちら(CentOS and Fedora Packages - MongoDB) $ sudo vi /etc/yum.repos.d/Mo…

S3: 課金の算出とタイミング

S3やEBSの単価は 1GB/month でいくら、となっている。 では、計算をどうやっているか? Q: Amazon S3 を利用すると、どのようにして課金され、請求されますか? http://aws.amazon.com/jp/s3/faqs/#How_will_I_be_charged_and_billed_for_my_use_of_Amazon_S…

SQS: SupervisordでSQSのワーカープロセスを管理実行する

まずは、Supervisordのスクラップ Supervisord 本家 PHP+Kestrel+Supervisorでお手軽タスクキューイング : アシアルブログ スーパーサーバーSupervisorの導入手順メモ - Glide Note - グライドノート Supervisord を Amazon Linux AMI にインストール - mass…

SQS: ワーカープロセスの稼働管理にSupervisordが便利

SQS等のキューを介して非同期に処理を行う Queue Chain パターンを実装する場合、SQSに突っ込む処理はWebアプリ等の処理中に書けばよいので特に考えることはないが、SQSからメッセージを抜いて後続の非同期処理を実行するワーカープロセスをどのように起動管…

EC2: GPGPUクラスタインスタンス cg1.4xlargeのメモリ

cg1.4xlargeは、cc1.4xlargeにGPUとして NVIDIA Tesla M2050 "Fermi" が2個刺さっている、という認識だったので、利用可能メモリもcc1.4xlargeと同じ23GiBだという認識だった。 http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/using_cluster_co…

EC2: cc2.8xlargeのリザーブドインスタンスを比較してみた

特にどうってこと無いんですが。1年モノのcc2.8xlargeのRI(Reserved Instance)の利用度合いと費用についてグラフ化。 http://aws.amazon.com/jp/ec2/pricing/ 縦軸はドル。横軸は累積の利用時間割合。1年(24h x 365d)で100%の計算。 つまり、1年のうち10数%…

EC2 : CC2にインスタンスディスク(ローカルディスク、エフェメラルディスク)を使ってRAID0

CC2では、インスタンスディスクが3360GiB( 4 x 840GiB)が使えるが、EBSバックドなHVM AMIをマネジメントコンソールから起動した場合、インスタンスディスク(ローカルディスク、エフェメラルディスク)は無効になっている。計算中の中間ファイルを書き込んだ…

EC2:Placement GroupとHPCインスタンスのネットワーク等

Placement Groupのメモ。とはいえ、実際に計測すべきです!! ==ネットワーク関連======= 同一のPlacement Groupに属しているHPCインスタンス間の通信は、10Gbpsフルバイセクション、Jumbo frame、かつノンブロッキングが可能。 異なるPlacement Gr…

EC2: RHEL6.2で XFSを使うには

XFSはRHELの標準になっているext系に比べて性能面で優れていることが多く、DB等が使うボリュームのファイルシステムに使うことが多い気がする。xfsのパッケージはRHELに標準で入っておらず、yumリポジトリにも無いのでyumでは入らない。xfsprogsのrpmをここ…

DynamoDB : PHPのセッション管理に使う

AWS SDK for PHPには、DynamoDBSessionHandlerというセッションを管理するクラスがあるので、比較的楽に導入が可能。 Amazon Linuxでの環境設定 パッケージインストール(DynamoDBアクセス用のCacheとしてAPCも入れる) $ sudo yum install php php-pear php-x…

EC2: 1台のサーバに複数のドメインのSSLを稼働させる

現状では1台のEC2に大量のグローバルIPを振れないため、一工夫が必要。 Brightbox - New - Cloud IP Port Translation だと、ELBをSSL毎に立てて、バックエンドを1台のEC2に向ける。Management Consoleだと複数のELBが1台のEC2をバックエンドにすることはで…

EC2: S3に画像アップロードするPHPサンプルを作る

Amazon Linux 64bit インスタンス起動 パッケージ追加 $ sudo yum install php httpd mysql mysql-server php-mysql php-pear php-xml AWS SDK for PHPインストール $ sudo pear channel-discover pear.amazonwebservices.com $ sudo pear install aws/sdk …

EC2: Amazon Linux + Ruby SDKでDynamoにアクセスするまで

とりいそぎyum $ sudo yum install gcc make libxml2-devel libxslt-devel $ sudo yum install ruby-devel rubygems # for ruby1.8 $ sudo yum install ruby19-devel rubygems19 # for ruby1.9 とりいそぎ、AWS SDK for Rubyを入れる $ sudo gem install nok…

EC2: Amazon LinuxでSinatraを動かす

大して難しくないけど忘れないようにメモ。 だいたいは、この2つを見ればおけ。 Sinatra: README Rubyの軽量Webフレームワーク「Sinatra」がステキ - このブログは証明できない。 環境構築 Amazon Linux AMI x86_64 EBS 2012.03を使う 。事前に、80/tcpをSec…

EC2: インスタンス起動を速くする

さっとスケールアウトしたい場合はインスタンス起動を速くすることを検討する。速くする方法は色々あるので、状況に応じて合わせ技を使う事になると思う。 Terminateではなくstop状態からstartする(使い終わったらterminateせずにstopしておく) /sbin/initで…

EC2: AMIの作成で気をつけること

AMI作成の方法は2通り EBSボリュームのスナップショットから、Create-Image インスタンスに対して Create image ( ec2-create-image) 注意点: インスタンスに対するCreate imageは、一旦OSをshutdownしてsnapshotを作成しbootする動作になるので、OSを動か…