本日からアナログ放送が終了して、家でテレビが見れなくなってしまいました。
しかし、珍しく一ヶ月以内に更新が出来きたので今日は気分が良いです。
前回のブログでは珍しく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! => trueCloudServers同様に、API経由でもなかなか簡単に操作出来るのですね。
RackspaceのGithubのリポジトリを眺めていると、どうやら先日ベータリリースされたCloud DNSのPythonインターフェースは既に存在してるみたい。
Ruby版がリリースされるのが楽しみです。