2011年10月10日月曜日

Vyattaを使ってAmazon VPC内に独自NAT環境を作る

このブログでクラウド関連の話題というと、ほとんどRackspace Cloudばかりなのですが…
今回のエントリは珍しくAWSをテーマにしてみたいと思います。
Twitterを見ているとVyattaが最近アツく、個人的にも書籍を購入したのでAmazon VPCと連携させたいです。
AWSではVPCネットワークから外部へ接続するためのNATアドレッシングインスタンスが提供されておりますが、こちらをVyattaに置き換えて使ってみるという事です。
今回はNATを構成するだけですが、Vyattaは機能が豊富で様々な可能性をVPCに付け加える事が出来そうです。
ちなみに先日Vyatta社からアナウンスされた6.3のAMIはSubscription Editionということなので、今回はVyatta Core6.1のAMIを使用しています。



[ネットワーク構成]

[VPCの設定]
VPC内にはVyattaを起動する公開サブネットと、Webサーバを起動する非公開サブネットの2つを用意します。

[Vyattaインスタンスを起動]
今回はこちらのAMIを使用し、インスタンス起動後にはSouce/Dest. CheckをDisableとします。
この設定はVyattaインスタンスを起動後にインスタンスを選択して、右クリックのメニューから変更が出来ます。
VPC内でElastic IPを取得してVyattaインスタンスに割り当てる事も忘れずに!
このIPを使用してWebサーバは通信をします。

[ルートテーブル]
Management Console(VPC)のRoute Tableメニューで公開用/非公開用のルートテーブルを設定します。
公開用サブネットはデフォルトルートがインターネットゲートウェイとなり、非公開用はVyattaインスタンスのinstance-idを指定します。

[セキュリティグループ]
Vyattaに割り当てるセキュリティグループは、Webサーバからの必要な通信をブロックしなければ自由に設定可能です。
また、VPCで設定可能なネットワークACLも同じように自由に使えました。

[Vyattaインスタンスの設定]
起動したVyattaインスタンスにSSH接続し以下のような設定を行います。
[Webサーバインスタンスの起動]
それでは動作確認用に適当なインスタンスを非公開用セグメントで起動します。
インスタンス起動後は外部接続の動作確認を行い、Apacheをインストールしました。
[ブラウザから動作確認]
Vyattaに割り当てたElastic IPにポート8080番を指定してアクセスすると以下のようにWebサーバに転送されました。

※おまけ
実はこの構成でVPCのDHCP Options Setを無効にしてDHCPサーバも動かそうとしたのですが、VPCもブロードキャストの通信がサポートされてないという事なので断念しました(汗)

[投入を予定していたDHCP関連の設定]

AWSが提供しているNATアドレッシングインスタンスも便利ですが、Vyattaユーザやルータの設定経験がある方はこのような構成にした方が理解しやすい部分もありそうですね。

[参考資料]

2011年10月2日日曜日

MacからRackspace Cloud Filesに接続出来るFTPクライアント


つい先日会社のノートPCが新しくなりました。
ずっとThinkpadユーザーだったのですが…。ありがとうThinkpad、こんにちはMacBook Air

さて、セットアップ中のMBAにFTP(SCP)クライアントは何を使うべきか?と悩みました。
FTPクライアントといっても最近はクラウドストレージをサポートしていのもあるので、そんなタイプを使いたいです。

やっぱり多いですね!Amazon S3に対応しているものは!
そして、少ないですね!Cloud Filesに対応しているのは!

とはいってもアヒルちゃんことCyberduckはきちんとCloud Filesに対応済みなようですよ!
セットアップ&動作確認も以下のように簡単に出来ちゃいました!

起動したらRackspace Cloud Filesがすぐに見つかります。

こんな感じでAPIユーザーとパスワードを入力してログインです。

はい、無事に接続完了です。

適当なメモをアップロードしてみました。

無事にRackspaceの管理画面にも反映されていますね!


しかし…。
Cloud Filesに対応した、よりよいFTPクライアントがあるといいんだけどなぁ。Interarchyもピンとこなかった。
FTPクライアントという形にとらわれすぎだろうか…。

2011年10月1日土曜日

Cloud Load Balancers使用時にアクセス元IPをログ出力するテスト

こんにちはデース。
さて、以前Twitterで以下のようなつぶやきをしました。※どうやらバッチリ誤字してるようですね☆

こんなん
RackspaceのCloud Load Balancersを使用する場合、いわゆるリバースプロキシ型のロードバランサと同じように、分散先のサーバにはロードバランサのIPがアクセス元となります。
すると、本来のアクセス元IPが分からなくなってしまうのですが、リンクの記事によるとCloud Load BalancersもHTTPのX-Forwarded-Forヘッダに対応しており、こちらを取得する事でアクセス元IPを取得出来ます。
気がむいたのでApacheとnginxを使って動作確認をしてみました。
テスト環境は以下の通りです。
  • OS:CentOS5.6(Cloud Serversのimageから起動したもの)
  • Apache:CentOS標準のものをyumでインストール
  • nginx:EPELをリポジトリに追加してyumでインストール
ApacheはデフォルトだとX-Forwarded-Forヘッダをログに出力する設定にはなっていないので、以下のように設定ファイルを修正しました。 nginxは以下のようにデフォルトでログに出力する設定になっています。 以下の通り無事に確認出来ました。(アクセス元IP=>221.221.221.221 CloudLoadBalancerのIP=>10.183.252.25)
※アクセス元IPは適当な数字に置換しています

■Apacheでの確認 ■nginxでの確認 ログのフォーマットはデフォルトのままで分かりずらいですが、そこはご愛嬌という事で。

2011年9月20日火曜日

httpclient(ruby)によるログインチェックとyammerへの投稿

先日とあるサーバが不調になりました。
死活監視はしていたのですが、それだけでは満足な状況が把握出来なくなってしまったので、指定時間内にログインが完了するかチェックするスクリプトを急遽作ってみました。
早くビールが飲みたかったので状況をいち早くメンバーと共有するため、スピードと動く事を優先したスクリプトになってしまっていたので少しだけ整理しました。
当初はcurlでログインしてmailコマンドでローカルから、警告を出力すれば良いと安易に考えていたのですが…。
テストをするうちに以下のようなポイントが分かりました。
  • 失敗時のみアラート通知し、メールでyammerに投稿したい
  • yammerに投稿する場合、登録しているドメインからのみメール投稿が可能
  • アラートメッセージが同じないようだと、重複投稿としてyammerに拒否される
また、事前にyammerのアカウント設定>通知>メールでの投稿で承認しなくても投稿出来るようにしておきます。








そんな訳で以下がスクリプトです。
httpclient、tmail、tlsmailを使用しているのであらかじめgemでインストールしておいて下さい。
※ruby1.8.7で動作確認しています
実行権限与えてからcronに登録して完了。

2011年9月6日火曜日

第3回 さくらの夕べに参加してきました

こんばんは。
久しぶりの更新になりましたが、以前から参加したかった"さくらの夕べ"についに参加してきました!
田中社長曰く、『もともとはさくらの人と飲んで交流しよう!という事で始まった』という企画らしいので、なんでもっと早く参加しなかったのかと悔しい思いをしました。
しかも今回はさくらのクラウドについての話が聞けたので、とても有意義でした。

会場はこんな感じで、わくわく感満載でしたよ。

田中社長のお話しからも素晴らしいサービスだと痛感したので触ってみたいです。

懇親会はこんな感じでしたよ(私がラスト15分くらいまでぼっちだったのは内緒です)


ちなみにお土産にこんなんもらったけど、これが日本酒だったら尚よし。

私のメモにはこんな事が残っておりました。
  • クラウドEXPO出展から一年、明日Betaリリースされる
  • 何の変哲もないIaaS型クラウドを圧倒的なコストパフォーマンスで提供する
    • 開発者思考のシンプルクラウド
  • 実現したもの
    • 性能
    • 安定性
    • 低コスト
  • シンプルクラウドとは?
    • 性能はVPSのものよりも良いものを使用している
    • 拡張性があるネットワーク
  • 明朗会計の料金体系(使いたい分だけ払える)
  • 運用を楽にする機能やAPI(APIが標準実装=コンパネで出来る事はAPIで全部出来る)
  • デモ
    • AWSのAZに当たるものがゾーンとして提供されてる
    • ISOイメージからサーバを構築する事も出来る
    • AMIにあたるテンプレート機能がある
    • ハードディスクからスナップショットが作成出来る
    • 起動時に管理パスワードが指定出来る
    • SSH公開鍵を張り付けて使う事も出来る
    • インターネットに接続しないサーバも作成出来る
    • アイコン指定なども出来る⇒これは地味に良い
    • コンソール接続機能を使用する事が出来る(遅延がないぶんRackspaceよりさくさく)
    • ローカルネットワーク用みたいなスイッチ機能(ブリッジを作成してゾーンをまたいで通信出来る)
    • タグ管理機能もあるみたい
  • 感想
    • これは触ってみたいwwww
    • 正式版の価格見てみて個人の開発環境とか移行しよー。
  • 質問
    • ストレージはアタッチするとどう管理されるのか
      • これは全て完全にローカルのディスクの様に見れます
    • 仮想ディスクの付け替えとか出来るのか?
      • 出来ます
    • IPv6対応は?
      • Betaでは対応されません(IPv4のみ)
      • 対応予定です。
    • サーバの課金はどこから始まるのか
      • Betaは無料
    • HyperVはなに使ってるの?
      • KVMです
    • 仮想スイッチの実装は?
      • Vyattaではなく独自です
      • 後ろではタグVLANを使っています
      • ローカルIPの設定は自分でやる
    • 仮想マシンの高可用性やSLAは?
      • ありません(少なくとも現状はないみたい)
    • APIは?
      • Betaの公開時点ではまだありません
      • もちろん公開予定みたい
      • コンソールで出来てAPIで出来ない事はないみたい
    • メンテナンス時とかのライブマイグレーション機能とかはありますか?
      • 作成中です
というのが残ってました。
最後にサーバテンプレート使用出来るDVDイメージの一覧を激写したものを・・・


以上となります。
さくらのVPSのノウハウも生かされているそうなので、期待大ですね!
規約的にBeta時点で触れるか分かりませんが、正式公開されたら触る事は間違いなさそうです。