2011年7月20日水曜日

EBSボリュームのスナップショットを自動作成する(right_aws)

相変わらず、久しぶりの更新となりました。

先日、AWSからRuby用のSDKがリリースされて、喜び半分right_awsを触りだしたばかりの私はアイタタという気持ちが正直なところです。
今回のエントリは"Ruby用のaws-sdkについて"と言いたいところですが、right_awsを使用したスクリプトについてです。

AWSのEBSからスナップショット取得するのですが、個人的にジョブが完了したらメールで通知して欲しい人です。
@dateofrokさんが公開されているこちらのブログを参考に、メール通知機能を追加しています。

正直、Rubyなんて触った事ないし、プログラミングもした事ないので変なところは多々あると思います。
公開する事で誰かがより良いものを作り、回り回って自分に何かの形で返ってくると良いな〜なんて思ってるわけです。

◆EBSボリュームからスナップショットを作成するスクリプト



作っていて感じた今後の改善点は以下のような感じ。
  • 複数ボリュームのスナップショット対応
  • aws-sdkを使って書き直したい
  • 多分もっと良い感じにかけるんだろう

2011年5月27日金曜日

サイバーエージェントxクックパッド合同勉強会に参加しました

5月もそろそろ終わりに近づきましたが、今月は全くブログを更新してないのかorz
昨日はせっかく勉強会に参加したので、ブログに残しておこうと思います。

参加したのはサイバーエージェントさんと、クックパッドさんの合同勉強会。
最近の勉強会は気付いたらすぐに定員が埋まってしまうので、参加するのも大変(汗)
今回の勉強会も登録した時点では補欠でしたが参加枠が拡大されて出席出来ました。
とても参加したかった勉強会だったので、ほんとに良かったです。

場所はクックパッドさんのオフィスがある白金台!
シロガネーゼとやらは、どなたなのか分かりませんでしたが静かで、お洒落なとこでした。
『なんか大衆居酒屋とかねー街なんだな!』というのが第一印象です。
自分が住むには住みずらそうですが、家賃払えないので、不要な心配ですね。

クックパッドさんのオフィスはとても奇麗でした!
写真をあまり撮れてないのが非常に残念><ですが、会場は以下のような感じ。
しかも懇親会でお料理が出るなんて、とてもユニークで美味しいお勉強会ですね★
最初に【プレゼンの時はプレゼンに集中!食べるときは食べる事に集中!】というありがたいお言葉を頂きました。


以下はメモと感想ですが、みなさんSlideShareとかにアップしてくれるらしいです。
私のメモは適当すぎるので参考程度に…資料がUPされたらリンクをつけときたいな。

■一人目はサイバーエージェントの坂本さん
OpensStackを検証してみたというお話です。
AWSに例えるとってところもあり分かりやすくて、ありがたかったです。

AWSとの比較
  • EC2=>Nova
  • S3=>Glance(OSイメージ登録)、Swift(ストレージ)
Nova
  • CloudControllerとComputenodeに分かれる
  • Conputenode内にInstanceが起動される
  • CloudControolerとCnputenodのプロセスのお話
  • インスタンスのネットワーク構成を3種類から選べる
管理方法
  • novaコマンド
  • ecuca2oolsコマンド
注意点
  • 1プロジェクトで作成出来る上限は10インスタンスまで※変更可能
  •  ライブマイグレーションはは共有ディスクのみサポート
  • セキュリティ設定はiptablesで実装している
気付いたこととか
  • ElasticFoxでも管理出来る
  • Ubuntuだとパッケージ化されているからインストールが簡単
  • シンプルで分かりやすい
  • AWS知っている人はとっつきやすそう
苦労話し
  • インスタンスメタデータをどこに取りに行けのか分からない
  • ドキュメントは英語
  • 開発中なのでドキュメントは微妙
まとめ
  • 発展途上だけど使える
  • 開発が盛んだから今後にも期待出来る
  • GUIは本気出してくるかわからない
  • ハイブリッドクラウドが良いよね
【個人感想】
プライベートクラウドはH/Wの面倒をみたりと運用は大変そうだけど、自由度が高いというのは良い点みたいです。
物理H/Wは一台あれば試せるらしいので、かなり興味が湧きました。
お仕事ではパブリッククラウドばかりですが、いわゆるクラウドのバックエンドがどのように動くかという興味を満たしてくれそうな気がします。
あんな事や、こんな事も、楽しそう!!

■二人目はサイバーエージェント森野さん
AmebaPicoの裏側の技術とAWSの利用についてのお話でした。
Picoはピグの海外版でFacebookアプリもあるらしいっす。

サーバー構成
  • サーバーはすべてAWSのクラウドを利用している(個人的にはこの時点で涎モノ)
    • Cloudfront(キャッシュOKなもの)
    • EC2(汎用的なサーバーやその他)
    • S3(静的データのストレージ、ログの保存)
    • Elastic Map Reduce(S3のログ解析→結果はS3に保存)
    • EBS(バックアップや揮発性があっては困るもの)
    • 開発サーバとか本番サーバとかでインスタンスタイプ変更
    • MongoDB(3台構成の6シャドーで分散)
運用してみて
  • 手軽(必要なときに必要な時だけ)
  • データセンターにいく必要がない(海外ならなおさら)
  • インフラエンジニアがいなくてもなんとかやれた
  • たまに落ちる(頻度:現在60インスタンスで2ヶ月に1インスタンスくらいの割り合い)
  • 4週間のうちに4個落ちた事もあった(告知あり)
  •  落ちると応答がなくなる(特定ポートのみの場合や全体的に落ちる場合も)
  • 落ちた場合はリブートする時もあるがリブートしてもダメな場合もある
  • MongoDBのコネクションプールが枯渇した(I/Oボトルネック)
    • ⇒I/Oパフォーマンス高いもの+シャドーを増やした
  • MongoDBのバランシングの挙動に偏りがある
  • MongoDBの設定情報が反映されない事もあった
  • MongoDBの問題の解決とノウハウの蓄積をしたい
【個人感想】
やっぱりAWSはただのレンタルサーバとして使うのは持ったいなさすぎますね。
AWS内の色々なサービスを組み合わせて面白い使い方をして最高の力を発揮しますね。
そのためにはAWSの色々な使い方を妄想したり検証したり、使う準備も必要ですね。
syslogサーバのログデータとかもs3fs使ってs3とかに保存するのって運用したらどうなんだろう。
インフラエンジニアがいらないってなってしまうと悲しいけど…(笑)
どんなエンジニアでも色々な技術を吸収する事が大事になってきていそうですね。
レイヤーとかで分けるのではなく、いろいろ広く勉強しなきゃな〜。

■三人目はクックパッド成田さん
毎日の料理を楽しくする画像配信のしくみのお話
ちなみに私はここら辺から後ろからの、とても美味しそうな匂いで集中力が…が…が…w

今まで
  • 昔は画像をアップしたらいくつかのパターンの画像サイズ(サムネイル)を用意した
  • 現状の写真の大きさで本当に良いのか?まだまだ検討の余地がある
  • よりより写真にしたい
  • iPhoneアプリとかにも、きちんと適切をしたい
  • 画像配信するアプリケーションはサムネイル画像の運用が悩み
  • 画像保存先としてNFSはやめたい⇒AWSにいくならS3つかいたい
変更後(開発したTOFU導入後)
  • 配信は一枚の画像をS3にアップして配信時にオンデマンドの画像サイズで配信
  • TOFUはApacheモジュールとなり画像変換には(本当は速い)ImageMagickを使う
  • Imlib2を使わなかった理由は画像の質が落ちるから
  • CookPadアプリの写真は順次リプレース中
  • 効率が上がり開発者のモチベーションがUP、美味しい料理の写真を届けられるように
  • akamai⇒ELB⇒tofu複数台(c1.xlarge)⇒S3
  • S3は夢のストレージではない。S3の特定のAPIだけが障害発生したりもした。
  • S3はデータが消える事はなさそうだけど、データにアクセスできなくなる事はある
Akamai or Cloudfront
  • S3専用だったけど、EC2をオリジンに指定(Custom origin)が使えるようになった
  • just-ping.com(世界中からpingをうつサービス)を使うとakamai速い
  • Akamaiはあまりキャッシュヒット率が高くないから以前はさらにVarnishを配下に使ってもみた
    • Varnishはメモリを使うからTOFUインスタンスを増やしても良さそう
最後に
  • 写真は料理を美味しくみせる為に大事な事!!!
【個人感想】
とにかく料理を美味しくみせる為にという事を大事にしたお話しで素敵でした。
どうありたいかのゴールを大事にしてその為に何をするかって大事でっすね。
写真は美味しそうだし、後ろから美味しそうな匂いもするし、早くご飯食べたい★

■最後はクックパッド菅原さん
AWS移行に向けたクックパッドの取り組み+αのお話
と、とにかくお腹空きました!お話も勉強になる素敵な会ですよ!

AWSのサーバネットワーク構成
  • iDCだと3層構成から⇒EC2だと1層構成になるからセキュリティをしっかりと確保
  • セキュリティグループは以下を組み合わせるみたい
    • Basic(基本的なものhttpsやpingや監視ポート)
    • 各ロールのセキュリティグループ(DB用やアプリサーバ用や)
    • 基本的にはIPからは許可しない事(ローカルIPだけ許可しても他の会社がいたりするから)
    • 全てのサーバでiptablesは有効⇒人的ミスを防ぐため
    • 内部DNSはPowerDNSで使う(E2のNAMEタグから引ける)
    • resolv.confは定期的に更新するように
  • AMIはCentOS5.5をクリーンインストール(EBSベース)
  • 64bitに統一する予定
    • 現在32bitがあるのはmicroインスタンスがなかった時代の残り(お金の事が原因とかとか)
  • ベースとなるAMIから各ロールのAMIを作成する
  • システム管理ツールのChefの導入も進めてる
  • システムネットワークの生存監視(Nagios)
    • Nagiosを使ったAMIからの復旧(ヘルスチェック失敗のタイミングで)
  • サーバの性能情報(munin)
  • EIP,HeartBeatを使った冗長構成も進めている
    • HearBeatの仮想IPの代わりにEIPを使う
分散DNS
  • resolve.confは内容がキャッシュされるのでApacheの再起動が必要になったりする
  • cronで監視だとダウンタイムが分単位になってしまう
  • 各インスタンスでDNSを起動して分散DNSを実現(デモをしてくれました)
【個人感想】
AWSでの運用はもっと考える余地がありそうだと思いました。
ノウハウもまだまだ集めたいし、現状に満足してはいけませんね。
もうお腹がぐーぐーなって死にたい!

■LT
Varnishのお話しやtmpfsのお話しや、とあるクラウドwのお話しでした。
Varnish勉強会は面白そうですね。懇親会の家が建つお話も素敵でしたw
Vanishで勉強会でお家の建て方を学びたい★

■懇親会
本当に美味しくて温かい料理は素敵ですね!
写真を全然撮ってない昨日の自分バカッ!

■最後に
今回の勉強は内容も充実していて、ご飯も充実して身も心もお腹いっぱいになりました★
関係者の方々ごちそうさまでしたー!

2011年4月17日日曜日

Rackspace Cloud導入記その9(LoadBalancerを使う)

相変わらずRackspaceは放置状態なのですが、久しぶりにログインしてみました。
気付いたらRackspaceでもロードバランサが使えるようになってるんですね。
(どうやら去年から使えたみたいですorz)
せっかくログインもしたので、動作確認程度に使ってみました。

RackspaceにログインするとこのようにLoad Balancersというものが追加されています。
ロードバランサの配下には1〜25台のサーバを登録する事が出来るようです。
そしてロードバランサの配下にはCloudServersで起動したものの他に、外部のサーバも登録可能です。
※外部のサーバーを登録出来るのって結構珍しい気がします
※ロードバランサに割り当てるVIPはグローバルでもローカルでも良いので、内部通信用の負荷分散も出来そうです。

  1. Create Load Balancerをクリックして作成開始

  2. 以下のように名前、プロトコル、VIPタイプ(グローバルもしくはローカル)を決定。
    ※分散のアルゴリズムはランダム、ラウンドロビン(重み付け可)、最小コネクション(重み付け可)と豊富です。
    ※重み付けはCloudServersのスペックを見てくれてくれそうな感じです。

  3. リージョンを決定し、登録したいサーバーを選択したらCreate Load Balancerをクリックして完了です
    ※リージリョンはORDがワシントン、DFWがテキサスです。
    ※外部のサーバーを登録したい場合は "Add External Node"をクリックすると登録出来ます。

  4. 作成後はロードバランサを選択すると詳細が確認出来ます。

  5. VIPにアクセスすると無事に負荷分散出来る事も確認しました。

  6. 最後にロードバランサの価格をまとめておきます
    起動料金
     $0.015/時間
    コネクション料金
     $0.015/100同時コネクション
    転送料金(out)
     $0.18/GB
    転送料金(in)
     $0.08/GB

外部のサーバを登録出来るところは非常に珍しいですね。
本番環境へ影響を与える事なく導入出来そうなので、試してみてはいかがでしょう?

2011年3月31日木曜日

Rails3環境用にSQLite3のRPMを作成する

いやー、最近のこのブログの技術ネタといったら、
  • このRPM作った
  • あのRPM作った
  • こんなRPM作った
と、ただのRPM作成ログの置き場となってますが、今回もRPMを作成したログです(汗)
すんません…orz
作成したきっかけは達人出版会さんから出版されている、”はじめる!Rails3”です。
こちらはRails3を始めるには良さそうな電子書籍で、Rails3の使い方を分かりやすく説明しています。
Linuxへの導入はUbuntu中心で書かれていますが、CentOSでも問題ないだろうと思ってました。

…しかし、SQLite3のインストール手順においてこんな記載がありました。
『Linux(CentOS 5)の場合は以下のコマンドを 実行します。』
残念な事に、この手順では”gem install sqlite3”が実行出来なかった訳です。
理由はCentOS5が使用するsqlite3のバージョンに古い事であり、『じゃあRPM作るか』ってなりますよね〜。

※今回はビルド専用ユーザーを作成していますが、SQLiteはrootでrpmbuildをするとエラーが出てしまいます

  • RPMBuildに必要なパッケージをインストール
  • ビルド用ユーザoko_changを追加
  • SRPMをダウンロードしてインストール
  • RPMビルドの準備
  • ビルド実行

以上で無事に”gem install sqlite3”が実行出来ました。
ちなみに素直にUbuntuを使えば、当然この手順は必要ありません。

2011年3月25日金曜日

hbstudy#21に参加してきました

皆さん同じような状況だとは思いますが、私もここ数日はさすがに普段よりもバタバタしておりました。
個人的な事ですが、茨城県の実家では窓が割れたり壁にヒビが入る程度でした。
大きな被害は無く、連絡がついたときはとても安心しました。
まだまだ油断出来ない状況ですが、あまり暗くなりすぎないようにしたいと思ってます。

さて、今回のhbstudyは最近のドタバタの関係で参加を迷いましたが、AWS関連の内容という事で参加してきました!
今回は参加した時のメモをのせておきます。
※もしかしたら間違った記憶もあるかも
※このブログではあまり書いていませんがユーザーとしてAWSにお世話になってます

【今回のhbstudyの参加費は東北関東大震災の義援金として寄付されるそうです】

  • 勉強会の形式
    • 事前に質問を集めてそれに荒木さんが可能な範囲で回答するという形式
  • そんなわけで事前質問がありました
    • 質問はギリギリで増えるという傾向だったみたいですねw
    • 個人的にはAWS導入を検討されている方って急いでる方が多い印象ですw
  • 質問とメモ
    • Amazon饅頭は販売しないの?
      • 言っておきますw
    • 海外のUGとの交流
      • http://aws.amazon.com/usergroups/とかで宣言したら良さそう
    • AMIたんってどうなりました?
      • サーバー擬人化友の会に言ってみましたよw
    • AWS触った事無い人ってどれくらいいますか?
      • 会場の半分いかない程度に見えました
    • AWSって?
      •  EC2とS3以外にもいろいろなサービスがあるよ
      • インフラエンジニアが楽出来るサービス
    • フィットするサービス
      • 成長度合いの予測が難しいサービス
      • ピーク時も対応出来て、無駄な投資をしたくないもの
      • 2週間でやめるって事が出来るので開発とかテストに向く
      • 特定の日しか使用されないサービス
      • ソーシャルアプリのホスティング
      • 分散処理系
      • ハイパフォーマンスコンピューティング(東京リージョンではまだ開始していない)
    • あたらしいAWSのサービス
      • CloudFormation→AWSのサービスを組み合わせて使う事が出来る
    • AWSを始めるときに使えるチュートリアルは?
      • Amazon Web Servicesガイドブック
      • AWSエバンジェリストのBlog
      • JAWS-UG
    • 各リージョンのキャパ(去年あたりにどこかのリージョンでいっぱいになりませんでした?)
      • 答えられませんw
      • 同一のAZ内でも随時増やしている
      • リザーブドインスタンスは起動の保証をします
    • 東京リージョンのパフォーマンス
      • やっぱり速いです
    • 東京リージョンはいつから、どれくらいの人で構築したんですか?
      • かかわった人はたくさん
      •  構築はいつからだったかは知らない
      • サーバ台数とかは言えません
    • データセンタのスペック
      • くわしい事は言えません
    • Cluster GPUはいつ日本に来る?
      • ユーザーが増えればサービス展開される
    • 絶対競合に負けない自信
      • エコシステムを重視
      • 最大公約数に集中してサービス展開(使いたい人が多いかどうか)
      • 足りないところには外部におまかせ→AWS Solution Provider
    • AWSの利用料金を取得するAPI
      •  ありません
      • Management Consoleで一日前の情報は分かる
      • Cloudworksで概算の計算はしていますよ(AWSの保証はなし)
    • AutoScalingで一時間以内で頻繁にstartとshutdownが繰り返すと料金は?
      • startされたら最低料金の一時間分はとられる
    • Route53のキャッシュポイズニングは?
      • キャッシュサーバの機能はないから大丈夫
    • Windowsサーバを立ち上げた場合のオーディオデバイス
      • うまくいきそうなやり方はあるみたいだけど未確認
      • 出来たら共有して下さい
    • Xenのカスタマイズはどれくらい?
      • 詳しいことはいえないみたい
      • Over-Provisioningはしていない
    •  豪快な使い方の事例のネタ
      • お客さんが公開しないと、こちらからは公開できない
      • インターネットの全トラフィックの19%がEC2に関係とかとか
      • 日本のお客さんが紹介されてました
    • ELBでSSL使いたいときに証明書はどれだけ必要?
      • 技術的には一つ
      • SSL証明書の規約次第
    •  EBSのスナップショットのしくみ
      • いえません
      • 中の人になってw
    •  IOPSってもっと出ないか
      • EBSを使ってRAID0を組んでみるとか
    •  手持ちのVMをコピーして使えないか
      • やっているベンダーさんがあるみたい
      • VM import/exportがありますよー(Windowsの一部バージョンのみ)
    • どうやってAWSに入れる?
      • 求人しているよ!
      • 中の人を知っていれば連絡を!
      •  http://aws.amazon.com/jp/careers/
      • 中の人も日本人同士は日本語で話しているよ
    • 素人向けのコンソールない?
      • Cloudworksを使ってみたら?
    • iPhoneから操作したい
      • directEC2があります
    • 定額化プラン
      • CloudPackさんがやってます
    • GmailでSpam判定される
      • 逆引き申請をしましょう
      • AmazonSESを使いましょう
    • SES統計データをブラウザでみたい
      • APIとかは提供されてるのでビジネスチャンス!
    • リージョン間移行を簡単にしたい
      • Cloudworksで出来ますよ(Linuxのみとかの制限があります)
    • 新サービスの要望
      • たくさんあります。伝えときます。
    • DC見学
      • 出来ませんw
    • AWSの出社時間と退社時間
      • 9時台くらいに出金して8時くらいに買えるようにしている
    • AmazonLinuxはCentOSベース?
      • CentOSベースじゃないRHEL互換なだけ
    • SESのキャリアブロック対策
      • してないようです
      • 運用ノウハウは必要みたい
    • SESの送信限界数を増やす条件
      • 条件は公開されていなさそう
      • Limit解除の申請フォームがあるよ

途中で力つきましたが残ってるメモはこんな感じでした。