2011年7月31日日曜日

qpstudy07 本当にあった怖い話 ~絶対に笑えないサーバ24時~に参加してきた

という夢を見た。。。

私は何も、誰も見てないし、何も覚えてない。
 
仮に覚えていても、身の安全の為にブログに書く事は出来ないw

2011年7月29日金曜日

RackspaceのサーバをChef(knife-rackspace)から使ってみる

なんか頻繁に更新とかするとちょっと不思議な感じがしますね。
昨日書いたブログ1周年の感想はともかく、今回もRackspaceの作業記録ネタです。
今回の主役となるChefや、Puppetというソフトウェアは以前から聞いてましたが、正直あまりさわれていませんでした。

Chefについては色々な方が情報提供しているので、ここではChefを使ってRackspaceのCloudServersを操作するログだけ記録しておこうと思います。
なんかChefを使ってAWSって話は誰かが?(汗)書くようです。
ちなみにChef0.10.0からknife-rackspaceというプラグインを使用する事になったみたいなので忘れずに入れて下さいね。

Chefってなんぞ!?という方は以下のリンクが参考になるのではないでしょうか。
ちなみに私のChefサーバはOpscodeのSaaSを使用させて頂いております。
ネットワーク構成を本番に近い形にも出来るし、何しろChefサーバを運用しなくて良いのは素敵ですもんね。
※アナタそういうサーバ運用するのがお仕事でしょっ!ていう突っ込みは割愛して下さいね(笑)

以下、作業記録です。

1)knife-rackspaceのインストール

Chefとknife-rackspaceをMacBookにインストールするのは簡単でしたよ。

2)Cloud Serversをknifeコマンドで操作する為にAPIの設定

APIの情報を以下のように設定します。

3)Rackspaceへの接続確認

使用出来るサーバイメージをリストで表示します
指定可能なサーバのスペックの一覧表示します

4)起動確認=>レシピ適用=>削除

Cloud Serversのサーバを起動し、apache2のレシピを適用します
起動したサーバは一覧で表示出来ます
削除もknifeコマンドで実行出来ます
以上のように管理画面にログインする事なくknifeコマンドから操作出来ます。
Chefに慣れた人にとっては良い運用の選択肢になりそうです。
以前このブログで書いたcloudlbcloudsrversとかと組み合わせると、さらに面白そう!

Rackspaceのロードバランサは外部のサーバも分散先に登録出来ます。
Chef経由でバランシング対象のRackspaceのサーバとEC2インスタンスに同じレシピを適用するなんて事も出来ますね。

あー、Rackspaceのデータセンターが日本にも出来ないかなー。出来ないだろなー。
Rackspaceを使って動く素敵なサービスは日本でもたくさん使われてるのになー。

2011年7月27日水曜日

ブログはじめて一周年を迎えた感想

7月前半でどうやらブログが1周年になった事に気付きました。
かなり思いつきで初めたブログなので振り返る事もありませんでしたが、せめて感想を残そうかと。
更新頻度は少ないけど、個人ブログを書く事についてネガティブに思った事はないから良かっ事だけのまとめ。
  1. 自分で調べた事の保存先として結構良い
    • 誰かが見る可能性があるので、それなりに奇麗にまとめる→自分の理解につながる
    • 以前は自分だけのWikiとか作ってみたけど、まったく更新しなくなってしまった
  2. ブログを書かなきゃ!ネタないかな?って気持ちから新しい技術に触れるきっかけになる事もある
  3. アクセス統計とかを見てると、こういうのがみんな興味あるのかって面白かったり
  4. 何かにのっかるのではなくゼロからブログやるって事自体が面白かった
  5. 自分個人だけで更新する事の楽しみとかもあったかも
意見を発する場とよりも自分が作業したログをまとめる場所としてやっているので、こんな感じです。
普段いろいろなブログ記事に助けられているので、感謝の気持ちはもちろんいっぱいです。
ただ、私がブログをするのは、まず自分の為、見てくれた人の参考になるかどうかは副産物みたいなもの。
一年後にこのブログがないかもしれないし、その時は思う事も変わってるでしょう。
最初から大風呂敷なんて広げない。それだけでやる理由としては十分ありそうなので、継続しよう。

※お酒を飲みながら書いてるもんですから、いろいろな部分をご容赦下さいw

2011年7月24日日曜日

Rackspace:Cloud Load BalancersをRubyからさわってみる

こんばんわ。
本日からアナログ放送が終了して、家でテレビが見れなくなってしまいました。
しかし、珍しく一ヶ月以内に更新が出来きたので今日は気分が良いです。

前回のブログでは珍しくAWSでしたが、今回は再びRackspaceネタ。
以前書いた、Cloud Load BalancersではCloud Serversと同様にPythonとRubyのインターフェースが提供されています。
Cloud Serversの時と同様にREADMEを参考に少しだけ使ってみました。
※ほとんどまんまですw

インストールはgemのソースとしてGithubが登録されていればとても簡単です。
$ sudo gem sources -a http://gems.github.com
$ sudo gem install cloudlb
Fetching: typhoeus-0.2.4.gem (100%)
Building native extensions.  This could take a while...
Fetching: cloudlb-0.0.1.gem (100%)
Successfully installed typhoeus-0.2.4
Successfully installed cloudlb-0.0.1
2 gems installed
Installing ri documentation for typhoeus-0.2.4...
Installing ri documentation for cloudlb-0.0.1...
Installing RDoc documentation for typhoeus-0.2.4...
Installing RDoc documentation for cloudlb-0.0.1...

動作確認した環境はMac OS X (not Lion)にインストールされたRuby 1.8.7です。
irbを使用して作業は行い、テスト用に起動したサーバのIPアドレスは以下の通りです。
  • 50.57.116.195
  • 50.57.116.80
さて、それでは確認してみます。
$ irb
# cloudlbを読み込みます
> require 'rubygems'
> require 'cloudlb'

# Rackspaceへの認証とリージョンの選択をします
> lb = CloudLB::Connection.new(:username => "okochang", :api_key => "*****************", :region => :ord)

# LBに追加するWebサーバ用にハッシュの配列を作成します
> node01 = [{ :address => "50.57.116.195", :port => "80", :condition => "ENABLED" }]

# LBを作成して先ほど作成したノードを作ります
> newlb = lb.create_load_balancer( :name => "newlb", :protocol => "HTTP", :nodes => node01, :algoristhm => "LEAST_CONNECTIONS", :virtual_ip_type => "PUBLIC" )

# LBのリストを参照して確認を行います(きちんとIPv6用のアドレスも割り当てられてるのも分かります)
> lb.list_load_balancers
=> [{:status=>"ACTIVE", :created=>{:time=>"2011-07-24T12:47:23Z"}, :port=>80, :virtualIps=>[{:type=>"PUBLIC", :address=>"184.106.100.221", :ipVersion=>"IPV4", :id=>168}, {:type=>"PUBLIC", :address=>"2001:4801:7901:0000:d4dc:6dbb:0000:0001", :ipVersion=>"IPV6", :id=>9000572}], :protocol=>"HTTP", :name=>"newlb", :id=>13924, :algorithm=>"RANDOM", :updated=>{:time=>"2011-07-24T12:48:12Z"}}]

# 先ほど出力されたIDを指定して、LBを選択します
> balancer = lb.get_load_balancer(13924)

# LBのバランシングアルゴリズムを変更します
> balancer.algorithm="ROUND_ROBIN"
=> "ROUND_ROBIN"

# 新しいWebサーバをLBのノードとして追加します
> node02 = balancer.create_node(:address => "50.57.116.80", :port => "80")

# テストが終わったのでLBを削除します
> balancer.destroy!
=> true
CloudServers同様に、API経由でもなかなか簡単に操作出来るのですね。
RackspaceのGithubのリポジトリを眺めていると、どうやら先日ベータリリースされたCloud DNSのPythonインターフェースは既に存在してるみたい。
Ruby版がリリースされるのが楽しみです。

2011年7月20日水曜日

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

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

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

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

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

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



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