記事一覧

2008年8月22日金曜日

新オフィスのエントランス


エントランスがやっとそれなりに出来ました。
お近くにお越しの際には是非お立ち寄り下さい。(^^)

[TechDay] News - Amazon Elastic Block Store for Amazon EC2

amazonのWebサービスで基幹システムを構築できる環境がきますね。

以下は昨日届いたAWSユーザ向けの新サービス案内メールです。




新サービスを簡単に一言で言うとEC2で使えるSAN(Storage Are Network)ということです。
1つのディスクボリュームを1GBから1TBの大きさで作成することができるそうです。

EC2はインスタンスを停止してしまうとEC2上で動いていたインスタンス全体(データも含む)が消滅することは以前のBLOGで説明しましたが、それが理由でEC2ではあまりRDBMSを動かすようなアプリケーションは向かないとされてきました。

今回の新サービス Elastic Block Store (EBS) が登場したことで上記の懸念が解消されますね。

なかなか面白くなってきました。

クラウドコンピューティングが本格的に展開される日も近いと思います!

チャレンジしたいお客さんからプロトタイプの依頼が来たらがんばるのになぁ。。
まあ依頼がなくても興味があるのでやってしまいますが。。

評価結果はまたこのBLOGでお知らせしたいと思います。

以下関連ニュースサイトです。
http://www.itworld.com/storage/54421/amazon-adds-persistent-storage-compute-cloud

関連BLOG
http://blog.rightscale.com/2008/08/20/why-amazon-ebs-matters/

2008年8月19日火曜日

[TechDay] 第3回 Amazon Elastic Compute Cloud (Amazon EC2)

前々回、前回とEC2のGetting Startedについて説明してきました。今回はこのテーマの最終回になります。

最終回は 自分のインスタンス・イメージの作成とバックアップ です。

EC2のインスタンスは停止してしまうとすべての内容が消えてしまうということを前回説明しました。今回はいろいろカスタマイズしたAMIが再利用できるようにする方法について説明します。

自分用のAMIを作成するにはAmazonのストレージサービスであるAmazon Simple Storage Service(Amazon S3)を利用します。S3については以前書いたBLOGを参照してください。

自分用AMI作成手順


Amazonがデフォルトで用意しているAMIをカスタマイズして自分用のAMIを作成するためのステップは以下の通りです。

1)デフォルトのAMIから好みの物を選択してAMIを起動します。
2)カスタマイズします。
3)自分のキー・ペアを現在稼動しているインスタンスへコピーします。
4)稼働中のインスタンスに自分のキー・ペアをバンドルしてイメージコピーを作成します。
5)作成したイメージコピー(自分用のAMIファイル)をS3にアップロードします。
6)S3へアップロードしたAMIファイルをec2に登録

こうすることで5)の時点のインスタンスイメージがS3へバックアップされた状態になります。
4)と5)の処理を定期的に実施することでシステム全体のバックアップがされていることになります。
これはなかなか便利ですね。
本番環境のバックアップとしてだけではなく、本番環境のバックアップをすぐに他のインスタンスとして起動することも出来るのでリアルなテスト環境としても活用できそうです。

それでは以降でそれぞれのステップについて実行した例を交えながら説明します。
2)までは第2回までの内容を参照してください。以下の説明は第2回目の最後の状態になっているとそのままスムーズに実行できると思います。

ステップ3 キー・ペアのコピー


第2回で生成したキー・ペアを現在起動中のインスタンスにセキュア・コピーを使ってコピーします。Windows用のセキュア・コピーはPuTTYの pscp を使用して行います。

C:\pscp -i PuTTY用秘密鍵ファイル(*.ppk) EC2用秘密鍵ファイル(*.pem) EC2用認証ファイル(*.pem) ユーザ名@ドメイン名:コピー先フォルダ名(フルパス)



以下の図は /mnt に正しくコピーされたかSSHでログインして確認した画面です。



ステップ4 キー・ペアをバンドルしたイメージコピー作成


インスタンス環境にキー・ペアがコピーされましたのでこのキーをバンドルしたAMI(インスタンス・イメージ)を作成します。PuTTY(SSH)でインスタンスに接続してコマンド ec2-bundle-vol を使って作成します。

# ec2-bundle-vol -d AMIの保存先パス -k EC2用秘密鍵ファイル(フルパス/*.pem) -c EC2用認証ファイル(フルパス/*.pem) -u EC2のユーザID(AWSのアカウントNO(数値)) -r [i386|x86_64] -p 自分のAMI用プレフィックス

以下実行例です。AMI作成は10分ぐらいかかりました。





/mnt 配下に出来上がったファイルを確認します。
指定したプレフィックスがついた約10MBのファイルがたくさんできているのがわかります。




ステップ5 イメージコピー(自分用のAMI)をS3へアップロード


/mnt 配下に作成したイメージファイルをS3へアップロードします。
あらかじめS3へイメージファイル格納用のフォルダを作成しておきましょう。

S3へのアップロードは、以下のコマンドで行います。

# ec2-upload-bundle -b S3格納用フォルダ(バケット)名 -m manifestファイルのパス -a AWSのAccess Key ID -s AWSのSecret Access Key

S3へのアップロードはほんの1分ぐらいで終わりました。





ステップ6 S3へアップロードしたAMIファイルをec2に登録


ステップ5までで自分用AMIファイルが出来上がりバックアップもとることができました。
作成したAMIファイルを使用して自由にインスタンス起動するには、作成したAMIをEC2へ登録する必要があります。登録はec2-api-toolsのec2-registerコマンド使ってクライアントから行います。

C:\mydoc\Prototype\AWS>ec2-register 101tn-bucket/myami-200808.manifest.xml

コマンドを実行するとAMI IDが割り振られます。以降はこのAMI IDを使用してインスタンスを起動することができます。



以下は現在のインスタンスを停止して登録したAMI IDでインスタンス起動した例です。
※テスト用で起動したインスタンスは必ず停止しましょう! 安いとはいえ課金されていますので。

2008年8月12日火曜日

[TechDay] 第2回 Amazon Elastic Compute Cloud (Amazon EC2)

前回に引き続き今回もAmazon EC2について書きます。
第2回の内容は、インスタンスの起動と停止 です。

第1回の説明の中でダウンロードしたAWS用コマンドラインツール(ec2-api-tools)をクライアントから利用してEC2を操作するのですが、実はこのツールのほかにもクライアントに必要なものがあります。

■JRE(version5以降)
■SSHクライアント

です。

まずは、簡単に自分の環境のJREを確認しましょう。
Java環境がない方は、以下のサイトからダウンロードしましょう。
http://www.java.com/ja/download/manual.jsp

Windows確認例.
C:\AWS>"%JAVA_HOME%\bin"\java -version
java version "1.5.0_02"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_02-b09)
Java HotSpot(TM) Client VM (build 1.5.0_02-b09, mixed mode, sharing)

私の環境ではかろうじて1.5以上になっていましたのでそのまま試しました。

次にSSHのクライアントの設定です。

おそらくTera Term Proが一番ポピュラーだと思いますが、Getting StartedのAppendixで紹介されているPutty(パティ)を利用しました。

Putty(パティ)のセットアップ


1)ダウンロード

ダウンロードページの以下のところからWindows用のインストーラを取得します。
A Windows installer for everything except PuTTYtel
Installer: putty-0.60-installer.exe (or by FTP) (RSA sig) (DSA sig)

インストールは、putty-0.60-installer.exe を起動してウィザードで進めるだけです。
メニューの日本語化をしたい場合は、以下のサイトからputtyjp.exeとputtyjp.lngを入手してPuTTYのインストールフォルダにコピーします。
http://hp.vector.co.jp/authors/VA024651/PuTTYkj.html

またEC2インスタンスにクライアントからファイルをコピーする場合には、SCP(SecureCopyProtocol)を使います。Windowsの標準コマンドにはありませんのでこのサイトにあるPSCPを取得します。

PSCP: pscp.exe (or by FTP) (RSA sig) (DSA sig)

※ここにあるscpツールは、コマンドラインツールなのでGUIが良い人は、WinSCPを入手してください。

公開鍵と秘密鍵のキー・ペアの生成


AMI(Amazon Machine Image)の利用認証はRSA認証で行います。キー・ペアの生成手順は以下の通りです。

1)ec2-api-toolsのec2-add-keypairを使ってキーを生成します。
キーの名前は、起動するAMIを識別しやすい名前をつけることが推奨されています。
(例.my-test-keypair)

C:\> ec2-add-keypair my-test-keypair




2)ツールで生成したキーを以下のように任意のファイル名で保存(コピペ)します。
id_rsa-キー名(例.id_rsa-my-test-keypair)
コピーする部分は、以下の行を含めたそれぞれの行間の文字列すべてです。
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

3)WindowsでPuttyをSSHのクライアントにする場合は、2)で作成したファイルからPutty用の秘密鍵ファイルを生成しなければいけません。

先ほどインストールしたPuTTYのメニューからPuTTYgenを起動します。



PuTTYgenのメニューから[Conversions]->[Import key]を選択して2)で生成したファイルを読み込みます。出来たファイルを拡張子ppk( id_rsa-my-test-keypair.ppk )で保存します。PuTTYでSSH接続するときにこのファイルを使用します。



[Import key]でファイルを読み込むと以下の画面が表示されるので[OK]ボタンをクリックしてメッセージどおりに[Save private key]ボタンでPuTTY用の秘密鍵ファイルを保存します。




利用可能なAMIの確認


以下のようにコマンドプロンプトから ec2-api-tools の ec2-describe-images を使って現在利用可能なAMIを確認します。
このコマンドでは自分で作ったAMIとAmazonが一般公開用に作成したAMIがリストされます。それぞれのAMIの識別はリストの2番目のカラムで行います。AMIの起動や停止はこのAMI ID(例.ami-2c5fba45)を指定して行います。



上記リストを見ると利用できるマシン・イメージがたくさんあるのでどれを利用したらよいのか迷いますね。とりあえずApacheとMySQLがインストールされていると思われる 25b6534c (AMI ID)を使ってインスタンスを起動します。

AMIの起動


インスタンスの起動は、 ec2-api-tools の ec2-run-instances コマンドを使用します。
起動したインスタンスの状態を確認するコマンドは ec2-describe-instances コマンド使用します。以下の実行例では、起動後、すぐに ec2-describe-instances コマンドを実行したためステータスが pending になっているのが分かります。再度、確認してみるとステータスが running に変わってDNS名(ec2-67-202-60-210.compute-1.amazonaws.com)が付与されているのがわかります。

■起動:ec2-run-instances AMIID -k 生成したキー・ペア
C:\mydoc\Prototype\AWS>ec2-run-instances ami-25b6534c -k my-test-keypair
■状態確認:ec2-describe-instances インスタンス名
C:\mydoc\Prototype\AWS>ec2-describe-instances i-f5ff269c
※インスタンス名は起動時にレスポンスされます。



これでEC2のインスタンスが起動しましたが、そのままではサービスが有効になっていません。
ec2-api-tools の ec2-authorize コマンド使って http と ssh のポートをアクセス可能にします。

sshとhttpポートをアクセス可能にする


EC2のセキュリティの考え方は、セキュリティ・グループというものを利用してアクセス制御を定義しています。グループは100種類まで定義することが出来るようです。
何も定義していない場合は、default グループ というグループが定義されている状態になっています。このグループの初期状態は、何も許可されていない状態です。
以下の例は、ec2-authorize コマンド使って default グループに http と ssh のアクセス許可を定義しています。アクセス許可はインスタンスに依存するものではなくグループごとに定義するものですので以降インスタンスを再作成しても default グループのアクセス権限はそのまま生きることになります。

C:\>ec2-authorize default -p 22
GROUP default
PERMISSION default ALLOWS tcp 22 22 FROM CIDR 0.0.0.0/0

C:\>ec2-authorize default -p 80
GROUP default
PERMISSION default ALLOWS tcp 80 80 FROM CIDR 0.0.0.0/0

以下の実行例では default グループに付与されたパーミッションの確認をしています。



EC2のセキュリティの詳細は Amazon Elastic Compute Cloud Developer Guide の Instance Addressing and Network Security を参照してください。IPアドレスでアクセス制限する例なども確認することができます。

ちなみにポートスキャン・ソフトを使って起動中のインスタンスを調べてみても起動しているサービスが ssh と http だけであることが分かります。以下の画面は、windows用のポートスキャン・ソフト nmap(Zenmap) を利用して確認した例です。



sshとhttpへのアクセス


HTTPの確認は、ブラウザでURLへアクセスしてみましょう。
またSSHの確認はPuTTYでインスタンスへログインしてみましょう。

■HTTPの確認

ブラウザに該当のURL(DNS名)を入力するとApacheのデフォルト画面が表示されます。
http://ec2-67-202-60-210.compute-1.amazonaws.com/



■SSHでインスタンスにログイン

1)PuTTY([スタート]->[プログラム]->[PuTTY]->[PuTTY])起動
2)認証用のキーファイル(id_rsa-my-test-keypair.ppk)の指定
3)ホスト名にDNS名を指定して「開く」ボタンをクリック





ログインプロンプトが表示されたらrootと入力してエンター。



EC2にログインできましたのでpsコマンドでどんなプロセスが起動されているか確認してみます。



apache(httpd)、mysql(mysqld)、仮想コンソール(mingetty)、メール(sendmail)などが動いていることが分かります。

ちょっとだけカスタマイズ


■apacheのデフォルト・ページを変更してみましょう。

1)PuTTYの付属コマンドpsftpを起動します。
引数はroot@dns_name
2)apacheのDocumentRoot "/var/www/html"へ作成したindex.htmlをアップします。



アップ後にURLにアクセスするとページが更新されていることが確認できます。



■mySQLをさわってみよう。

1)ユーザmysqlへスイッチして作成済みのデータベースを確認
2)日本語入力のためLANG環境変数の設定
3)mysqlのコマンドラインユーティリティを起動
4)既存のtestデータベースに表作成、INSERT、SELECTの実行







※PuTTYの文字コード設定は以下のように行います。(以下の例ではEUCへ設定)



以上 第2回目はEC2を起動して実際のサービスのカスタマイズするところまで紹介しました。

ところがEC2のインスタンスは停止してしまうとすべての内容が消えてしまいます。連続稼働中は良いのですがせっかくいろいろカスタマイズした設定やデータが消えてしまっては困りますね。

そこで必要になるのがS3(AWSのディスクサービス)です。
S3へカスタマイズしたイメージ全体(AMI)をバックアップすることで実際のシステムを運用するという方式になります。

次回第3回では、自分用のインスタンス・イメージの作成とバックアップについて説明したいと思います。

(続く)

2008年8月8日金曜日

[TechDay] 第1回 Amazon Elastic Compute Cloud (Amazon EC2)

以前、[TechDay] Amazon Simple Storage Service(Amazon S3)を使ってみた で紹介しましたが今回はアプリケーションまで含めた仮想化サーバーのWebサービスである Amazon EC2について実際に使ってみましたので紹介します。EC2をうまく使えば自社にLinuxのテスト環境などは不要になるかもしれません。もっとも小さいサーバー(m1.small)であれば1時間当の課金はたった $0.1 (データ転送量でも課金されますが$0.1/GB程度)です。
今やWebアプリケーションならフリーで使用できるソフトウェアを組み合わせればいろいろ出来るので大変興味深いサービスですね。

S3同様にまずはEC2についても申込が必要です。
申し込み方法はS3と同様ですので割愛してセットアップから説明します。

Amazon Elastic Compute Cloud Getting Started Guide に沿って試してみた内容のレポートです。

Getting Startedを一通り実行するとそれなりに長くなるので以下のように3回に分けて公開していきます。

第1回目:アカウントとクライアント環境の設定
第2回目:インスタンスの起動と停止
第3回目:自分のインスタンス・イメージの作成とバックアップ

AWS EC2 アカウントのセットアップ


EC2を利用できるようにするためにまずはアカウントの設定を行います。
手順は以下の通りです。

(1)アカウントメニューからAWS Access Identifiersを選択
(2)X.509 CertificateのCertificate File のCreate Newをクリック
(3)確認画面でYesをクリック
(4)Private Key File のダウンロード
(5)X.509 Certificate File のダウンロード


(1)アカウントメニューからAWS Access Identifiersを選択



AWSにはリクエストの認証方法が2つ用意されています。S3の時にはアクセスキーによる認証でしたが、EC2ではX.509 Certificatesを利用します。

(2)X.509 CertificateのCertificate File のCreate Newをクリック

このページではX.509証明書の作成を行うために「Create New」ボタンをクリックします。



(3)確認画面でYesをクリック

「Create New」ボタンをクリックすると以下のようにAWSアカウントとX.509証明書は1対1の関係なので既に作成済みの場合は、古いものが破棄されるような注意書きが表示されます。
ここでは「Yes」ボタンをクリックします。



(4)Private Key File のダウンロード
(5)X.509 Certificate File のダウンロード

確認の「Yes」ボタンをクリックすると以下のようにX.509証明書が生成されてPrivate Key FileとX.509 Certificate Fileをダウンロードできるリンクが表示されます。それぞれクライアントにダウンロードします。



■Private Key File


■X.509 Certificate File


アカウントのセットアップはこれでOKです。

AWS EC2用クライアントツールのセットアップ


次にEC2用に提供されているクライアントツールをセットアップします。手順は以下の通りです。

(6)コマンドラインツールの取得
AWSのDEVELOPER CONNECTION
Amazon EC2 Command-Line Tools をダウンロードして ec2-api-tools.zip を解凍するだけです。




(7)コマンドラインツール用の環境設定
■EC2_HOMEの設定
C:\> set EC2_HOME=C:\ec2\ec2-api-tools-1.3-19403

■パスの更新
C:\> set PATH=%PATH%;%EC2_HOME%\bin

■認証ファイルとPキーの設定
C:\> set EC2_PRIVATE_KEY=c:\ec2\pk-ファイル名.pem
C:\> set EC2_CERT=c:\ec2\cert-ファイル名.pem

以上でEC2 を利用できる状態になりました。

次回はクライアントツールを使って実際にEC2のインスタンスを起動・停止してみたいと思います。

(続く)

2008年8月1日金曜日

[TechDay] Snap Shots でブログ内のリンクをプレビュー表示

みなさんは Snap Shots というのを知っていますか?
Webページの中にあるリンク(URL)にカーソルを当てると該当のページを読み取ってプレビューウインドウを表示してくれるサービスです。これはなかなか便利ですよ。
私のBLOGにも取り入れてみました。

ということで今回のTechDayネタとして簡単に実装の手順を紹介します。

Snap Shotsにユーザ登録


Snap ShotsのページのPublishers / Bloggers
の「Already have Snap Shots on your site?」のリンクをクリックします。



以下のページからログインIDと Snap Shots を組み込みたいサイト(BLOGなど)のURLを入力します。



ユーザ登録でサイトのURLを指定するとBloggerなどの著名なBLOGサイトにはワンボタン・インストールを出来るようになっているようです。



そのボタンのちょっと下に「 Show Manual Install Instructions 」と記述されたリンクがあるのでこちらも確認してみましょう。
するとJavaScriptのコードが表示されます。このコードを自分のBLOGサイトで表示されるHTMLの</body>タグの前にコピペするだけでもSnap Shotsが機能します。コードの中に書かれている32文字の文字列が認証コードですね。



今回はワンボタン・インストール(INSTALL NOWのリンク)でインストールします。
するとウィジットを追加するためのBlogger管理ページが表示されます。



Snap Shots を追加するページを選択して「ウィジットの追加」ボタンをクリックして表示された画面の「保存」ボタンで変更を保存します。




Snap Shots ウィンドウのカスタマイズ

これで一応、Snap Shots が自分のBLOGページに追加されますがデフォルトのままのスナップショット・ウィンドウが表示されるのでウィンドウをちょっとカスタマイズしましょう。
ウィンドウの色の選択、言語設定、ウィンドウに表示されるロゴのアップロードをしてみます。

Snap Shotsの管理ページを表示します。



edit リンクをクリックするとカスタマイズ設定の画面が表示されます。
画面の色、言語、ロゴの設定をしているのがわかりますよね。
設定値を入れると即時で右側にプレビュー画面が出るので大変分かりやすいです。
設定が終わったら「Save」ボタンをクリックして終了です。



BLOGサイトの確認


それではSnap Shots をインストールしたサイトを確認してみましょう。



BLOG本文に書かれているリンクにカーソルを当てるとプレビュー画面が表示されていることが分かります。



こちらはRSSが有効になったときに表示されたウィンドウです。