ラベル oracle xe の投稿を表示しています。 すべての投稿を表示
ラベル oracle xe の投稿を表示しています。 すべての投稿を表示

記事一覧

2010年5月11日火曜日

[TechMemo] 第11回 Amazon EC2 USリージョンからAPリージョンへの移行(後半)

今回は先日公開しようとしてしていた内容の後半部分を説明します。

なんか長くなってしまったのですが。。

内容サマリ
1)移行するEC2環境の構成について
2)AMIのリージョン間コピー/APリージョンでAMIの登録

*** 上記、二つの手順は前回に説明しています ***

3)Amazon EBS(Elastic Block Store)データの移行
4)移行後のシェルの修正
5)Amazon Machine Image(AMI)の再作成

Amazon EBS(Elastic Block Store)データの移行

Amazon EC2には不揮発性のディスクを提供するEBS(Elastic Block Store)というサービスがあります。
EBSはデータベースのデータなど永続的に保持したいデータの格納用に提供されたものです。
小職のテスト環境のデータベースは、Oracle社から無償で提供されている Oracle Database 10g Express Edition(XE) です。
このXEをEBS上に構築しています。
EBSを別のEC2リージョンに移行するコマンドは、見当たらなかった(たぶんない)のでLinuxのコマンドで移行作業を行いました。

*** 小ネタ: 無償のOracleはどこで手に入る? ***********************
◆Oracle Technology Network からDL

※ユーザ登録必須
※私はここからDLしたXEを自分のEC2にuploadしてOracle Database環境をEBS上に構築しました。

◆AmazonEC2のAMIもあった!
@US Eastリージョン
AMI ID:ami-98be5cf1
Source:incharge/www.mototaker.com/ja_JP.32/ruby-db-ami/oracle_10gR2_XE_Univ_32Bit-Ruby_on_Rails233_Server-1.0-image.manifest.xml
※AmazonのAMIでは日本語が使えるもの(Universal版)はあまりないのでご注意。
※上記のAMIは日本語っぽいですねw
※US East、APリージョンではキーワードoracleで検索してもありませんでした。
※APリージョンには製品版のOracleがバンドルされたAMIすら存在しません。
******************************************************************

*** 豆知識: リージョン間AMIコピーコマンド(ec2-migrate-image) ***
※昨年末くらいからEBS上にAMIを構築するサービスも提供されていますが、前回のBLOGで説明したAMIのリージョン間コピー用コマンド(ec2-migrate-image)はEBS上のAMIを移行できません。
******************************************************************

◆データ移行手順

@US Eastリージョンでの作業

1)EBSにあるすべてのファイルをtarなどでアーカイブ
2)アーカイブしたファイルをs3へアップロード

@Asia Pacificリージョンでの作業

3)APリージョンに登録したAMIの起動(前回のBLOGで説明したAMI)
4)EBS上にVolumを作成
5)S3からダウンロード
6)ダウンロードファイルの展開とファイルのアクセス権限変更

◆データ移行内容詳細

@US Eastリージョンでの作業

1)EBSにあるすべてのファイルをtar+gzipでアーカイブ

※EBSボリュームは/volというフォルダにマウントされています。
oracle関連のファイルはすべて/vol/oracle配下にありますので oracle フォルダ以下すべてをアーカイブして2GBづつのファイルに分割します。

cd /vol
tar czvf oracle.tar.gz ./oracle
split -b 500m oracle.tar.gz oracle.tar.gz.
mkdir /vol/oracleimg
mv oracle.tar.gz.* /vol/oracleimg/.

2)アーカイブしたファイルをs3へアップロード

EC2からS3へのアップロードはrubyで作成されたスクリプト:s3sync.rb で行います。
以下の例では、S3に101ora-ap バケットを作成しそこに /vol/oracleimg フォルダを
同一名でコピーします。

cd /usr/local/s3sync
export AWS_ACCESS_KEY_ID='xxxxxxxxxxxxxxxx'
export AWS_SECRET_ACCESS_KEY='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

ruby s3cmd.rb createbucket 101ora-ap
ruby s3sync.rb -r --delete /vol/oracleimg/ 101ora-ap:oracleimg

*** 小ネタ:s3sync.rb はどこで手に入る? *************************
以下の記事に書いてある通りやれば簡単に使えるようになります。
http://developer.amazonwebservices.com/connect/entry!default.jspa?categoryID=100&externalID=931&fromSearchPage=true

・s3sync.rbのセットアップ
wget http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz
tar -xzvf s3sync.tar.gz
cp -r s3sync/ /usr/local/
******************************************************************

@Asia Pacificリージョンでの作業

3)APリージョンに登録されているAMIの起動(前回のBLOGで説明したAMI)

※ここで起動されたAMIはrcが正しく動作しないためElasticIPも設定されずに動的なグローバルIPが割り当てられたままのとりあえずのインスタンスという状態です。

4)EBS上にVolumを作成

US Eastで使用しているボリュームは使えませんのでAPリージョン用にボリュームを作成します。
EC2コンソールで50GBのボリュームを作成後、フォーマット(/dev/sdh)してマウントします。

4-1.EC2コンソールで50GBのボリューム作成とアタッチ

コンソールのメニュー Volumes をクリックして EBS Volumes の画面を表示します。
「Create Volumes」をクリックすると以下の画面が表示されるので Size 入力エリアに50と入力します。
Availavility Zone:は現在インスタンスが起動しているZoneに合わせます。ボリュームはZone固有です。



※ec2-create-volumeというコマンドもあるのですがなぜか実行するとエラーになりました。
# ec2-create-volume --size 50 --availability-zone ap-southeast-1
Client.InvalidZone.NotFound: The zone 'ap-southeast-1' does not exist.

次に作成された Volume をデバイスに Attach します。
作成したVolumeはコンソールに表示されますので左のチェックボックスをチェックして「Attach Volumes」をクリックすると以下の画面が表示されるのでDevice:を選択して「Attach」ボタンをクリックします。



アタッチ後確認してみるとブロックデバイスができています。
# ls -al /dev/sdh
brw-r----- 1 root disk 8, 112 May 5 07:58 /dev/sdh

※コマンドで実行する場合は以下の通り
# ec2-attach-volume vol-80d160e8 --instance i-9dace8cf --device /dev/sdh

4-2.mkfsコマンドでデバイスのフォーマット(プロンプトはすべてyesとする実行例)

# yes | mkfs -t ext3 /dev/sdh
mke2fs 1.40.4 (31-Dec-2007)
/dev/sdh is entire device, not just one partition!
Proceed anyway? (y,n) Filesystem label=
OS type: Linux
Block size=4096 (log=2)

・・・省略・・・

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

4-3.フォーマットされたデバイスのマウント

# mount /dev/sdh /vol

5)S3からダウンロード

作成したVolumeがファイルシステムから見えるようになったのでS3からoracle関連のアーカイブファイルをダウンロードします。
S3へのアクセスのために以下の環境変数を設定します。

# export AWS_ACCESS_KEY_ID='xxxxxxxxxxxxxxxx'
# export AWS_SECRET_ACCESS_KEY='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# export AWS_CALLING_FORMAT='SUBDOMAIN'
※US Eastでは環境変数 AWS_CALLING_FORMAT はデフォルトの REGULAR でよいので指定していませんでしたがAPでは必須です。(参照)

# cd /usr/local/s3sync
# ruby s3cmd.rb get 101ora-ap:oracleimg/oracle.tar.gz.ad /vol/oracle.tar.gz.ad &
# ruby s3cmd.rb get 101ora-ap:oracleimg/oracle.tar.gz.ac /vol/oracle.tar.gz.ac &
# ruby s3cmd.rb get 101ora-ap:oracleimg/oracle.tar.gz.ab /vol/oracle.tar.gz.ab &
# ruby s3cmd.rb get 101ora-ap:oracleimg/oracle.tar.gz.aa /vol/oracle.tar.gz.aa &
分割したファイルの結合
# cd /vol
# cat oracle.tar.gz.aa oracle.tar.gz.ab oracle.tar.gz.ac oracle.tar.gz.ad > oracle.tar.gz

6)ダウンロードファイルの展開とファイルのアクセス権限変更

# chown oracle oracle.tar.gz
# chgrp dba oracle.tar.gz
# su - oracle
% cd /vol
% ls
lost+found oracle.tar.gz
% tar xvfz oracle.tar.gz

◆sビットを付与
% chmod ug+s oracle
% chmod ug+s tnslsnr

移行後のシェルの修正

US EastリージョンからコピーしてきたAMIで起動されたインスタンスはrc(起動シェル)に記載された内容がUS Eastリージョン用になったままです。
ここではリージョン固有の記述がされたシェルの内容を修正します。

◆rcで実行させているシェルの修正について

1)Elastic IP Address
Elastic IP Addressとは固定IPを利用できるサービスです。
(Elastic IP Addressについては書きだめのテキストがあるのでこれも後日掲載します。鮮度はなくなってますが。。)
リージョンが変わればもちろんIPアドレスも振り直しですね。
まずはAWSのWebコンソールからAPリージョンのElasticIPを購入します。



購入したIPアドレスをインスタンスIDに関連付けなければいけません。
AmazonEC2のインスタンスIDは起動時に動的に付与されますので起動するたびに変化します。
起動後に手動で関連付けることももちろん可能ですが。。
インスタンス起動時に動的に関連付けるためのシェルが以下のようになります。
シェルをみるとわかると思いますが引数 region でAPリージョンの値を指定しています。
てっきりコマンドを実行しているインスタンスがデフォルトの region なると勝手に信じていたのでエラーになる理由がわからずちょっとハマりました。

#!/bin/bash
#
# Associate EC2 Elastic IP Address with INSTANCE
source /root/.ec2env
var1=`ec2din --region ap-southeast-1| grep running | gawk '{print $2}'`
#echo $var1
ec2assocaddr 購入したIPアドレス -i $var1 >/dev/null 2>&1

2)EBSのアタッチ
EBSを作成すると固定の識別ID(Volume ID)が付与されます。
インスタンスIDは起動時に動的に付与されますので起動ごとに変化します。
つまりEBSはインスタンス起動後にアタッチしてあげる必要があります。
そのための起動シェルは以下のようになります。
このシェルにも region 引数を追加しています。

#!/bin/bash
#
# Attach EBS VolumeID: vol-84ac00ec to INSTANCE
source /root/.ec2env
var1=`ec2din --region ap-southeast-1 | grep running | gawk '{print $2}'`
#echo $var1
ec2attvol --region ap-southeast-1 vol-84ac00ec -i $var1 -d /dev/sdh >/dev/null 2>&1
mount /dev/sdh /vol

Amazon Machine Image(AMI)の再作成

システム起動時のシェルを修正したら忘れずに再度AMIを作成します。

これを忘れてシステムを停止してしまうと設定が消えて苦労が水の泡なので注意しましょう!
※上記はRoot Device Type: instance-store

※EBS上にAMIを作成できるサービスも始まっているのでそれを利用すれば設定は消えません。

私のインスタンスはまだS3上に置いたAMIから起動するタイプです。
以下AMI再作成の手順です。

1)AMIのサイズは10GBまでという制限があるのでoracleが配置してあるボリュームをumountします。

umount /vol

2)AMIを作成するコマンドの実行

ec2-bundle-vol -d /tmp -k pk-xxxxxxxxxxxxxxxxx.pem -c cert-xxxxxxxxxxxxxxxx.pem -u 999999999 -r i386 -p oracle10gXE32bitUniv2

正常に終わると/tmpの下にmanifestファイルとAMIを10MB単位に分割したファイルがたくさんできています。

3)作成されたAMIをS3にアップロード

ec2-upload-bundle -r ap-southeast-1a -b tnoraclexe -m /tmp/oracle10gXE32bitUniv2.manifest.xml -a AccsessKey値 -s SecretAccessKey値

上記のコマンドが2)で作成したファイルをS3の tnoraclexe バケットにアップロードします。

4)S3に保管したAMIをAPリージョンに登録

ec2-register --region ap-southeast-1 tnoraclexe/oracle10gXE32bitUniv2.manifest.xml

※ここでも region 引数を指定しています。
US Eastでは指定する必要なかったのですが、ほとんどのコマンドで region 引数を明示的に指定する必要があるようですね。


以上、長々と書いてしまいましたがなんとなくお分かりいただけましたでしょうか?

おまけ

US East と AP ネットワークレイテンシを計測した結果の画面スナップショットを掲載します。
ググルとすでにBLOGなどで掲載しているのを見つけることができますね。

結論から言うとAPリージョンのほうがUS Eastに比べると2.5倍くらい早いですね。
いままでレイテンシーが大きいのではと懸念されていた方もAPリージョンならその心配もない様に思います。

ちなみにAmazonが提供しているAMIはデフォルトではpingは通らない設定になっているのでWebコンソールのSecurity Group設定でpingを通す設定してください。
ピングを通す設定は以下の通りです。

Protocol FromPort ToPort IP
-------------------------------------------
icmp -1 -1 許可するIPアドレス

◆以下レイテンシーの計測結果

1)ローカルPCからUS EastとAsia Pacificリージョンにping実行結果



2)US Eastインスタンスからwww.nikkei.comへping実行結果



3)Asia Pacificインスタンスからwww.nikkei.comへping実行結果



以上 前後半2回に分けて紹介したEC2インスタンスのリージョン間移行手順。

みなさまのお役立てば幸いです。

ではまた。

2008年10月25日土曜日

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

第5回で約束したとおり今回はEC2の再起動をしてもOracle Net Serviceが正常に起動するための設定を説明します。


Oracle Net Serviceを起動するために必要な構成ファイル:listener.ora


Oracle Net Serviceの構成ファイルに記述する環境情報にはHOST名があります。
一般的なLinux環境では動的にHOST名を変更することはないためlistener.oraファイルは一度書けばよいことですが、EC2のHOST名は再起動すると以前の名前と変わってしまいます。
そのためlistener.oraに記述するHOST名はインスタンス起動時に動的に設定してあげる必要があります。


Oracleの自動起動シェルの変更


◆Oracleの自動起動シェル
/etc/init.d/oracle-xe
※/etc/init.dはシンボリックリンク

上記の起動シェルの中でOracle Net Serviceを起動する記述がありますがその時にlistener.oraを書き換えるコマンドを追加します。

◆listener.oraを動的に変更する方法
起動シェルでlistener.oraに記述するHOST名を変更してあげましょう。

以下に設定方法を示します。

1)listener.ora.orgファイルの準備
以下のようにHOST名に「%hostname%」など動的に変更するときの識別名を記述した種ファイル(listener.ora.org)を用意します。
****listener.ora抜粋*********************************************
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = %hostname%)(PORT = 1521))
)
)
*****************************************************************

2)インストーラで作成されている起動シェルを修正します。
起動シェルの中でコールしている以下のファイルを修正します。

/etc/sysconfig/oracle-xe

このファイルはコメントを読めばわかりますが、システムの起動時にOracleを自動起動させるときの構成を指定するファイルです。


#This is a configuration file for automatic starting of the Oracle
#Database and listener at system startup.It is generated By running
#'/etc/init.d/oracle-xe configure'.Please use that method to modify this
#file

# ORACLE_DBENABLED:'true' means to load the Database at system boot.
ORACLE_DBENABLED=true

# LISTENER_PORT: Database listener
LISTENER_PORT=1521

# HTTP_PORT : HTTP port for Oracle Application Express
HTTP_PORT=8090

# Configuration : Check whether configure has been done or not
CONFIGURE_RUN=true

# 以降が変更部分 ********
# 種ファイルでlistener.oraファイルを上書きする
\cp $ORACLE_HOME/network/admin/listener.ora.org $ORACLE_HOME/network/admin/listener.ora
# hostnameコマンドで取得した文字列で%hostname%を置換
sed -i "s/%hostname%/`hostname`/g" $ORACLE_HOME/network/admin/listener.ora
# リスナー起動には上記まででOK
# ついでにNet Serviceに接続するためのクライアント用構成ファイル
# (TNSサービス名の定義)も修正
\cp $ORACLE_HOME/network/admin/tnsnames.ora.org $ORACLE_HOME/network/admin/tnsnames.ora
sed -i "s/%hostname%/`hostname`/g" $ORACLE_HOME/network/admin/tnsnames.ora
#************************


参考情報

◆Oracleの起動停止
/etc/rc.d/init.d/oracle-xe start
/etc/rc.d/init.d/oracle-xe stop

2008年10月19日日曜日

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

第5回の内容

Oracleがアマゾンに提供しているOracle 10g XE はシングルバイトのモジュールで日本語が使用できないのでアマゾンのLinuxのAMIにOracle 10g XE のUniversal版をインストールする説明をします。
OracleのサイトからOracle 10g XEのインストールを入手してAMIにコピーしてからは普通のLinuxにインストールする手順と同様です。簡単に以下のステップを説明します。

・OracleのサイトからOracle Database 10g Express EditionのRPMを取得
・Oracle Database 10g Express EditionのRPMをAmazon EC2インスタンスにコピー
・Oracle Database 10g Express Editionのインストール
・アクセスポートの解放
・AMIの作成
・AMIの登録

OracleのサイトからOracle Database 10g Express Editionを取得


以下のサイトからrpmをダウンロードします。
http://www.oracle.com/technology/software/products/database/xe/htdocs/102xelinsoft.html
ダウンロードするにはOracleのサイトへユーザ登録が必要でログイン後にライセンス条項への同意が必要なため一度ローカルのPCにダウンロードしてscp(SecureCopy)でアップロードしました。



上記画面上のAccept License Agreementのラジオボタンをクリックしてライセンス条項に同意して、Oracle Database 10g Express Edition (Universal)の oracle-xe-univ-10.2.0.1-1.0.i386.rpm (262,909,363 bytes) (cksum 2403796334) *RPM package をクリックしてダウンロードします。

Oracle Database 10g Express EditionのRPMをAmazon EC2インスタンスにコピー


第2回で紹介したSSHクライアントのPuTTYに付属のscpコマンド:pscpを使ってEC2インスタンスにRPMをコピーします。250MBぐらいのファイルのアプロードに約2時かぐらいかかりました。
ちなみに弊社はのインターネット回線はフレッツ光です。

以下、実行例)
C:\AWS>pscp -i id_rsa-my-test-keypair.ppk oracle-xe-univ-10.2.0.1-1.0.i386.rpm root@ec2-67-202-25-135.compute-1.amazonaws.com:/tmp
oracle-xe-univ-10.2.0.1-1 | 256747 kB | 35.2 kB/s | ETA: 00:00:00 | 100%

Oracle Database 10g Express Editionのインストール


※詳しくはインストールガイド(英語)を見てください。

システム要件は以下の通りです。
OS
Red Hat Enterprise Linux RHEL3 and RHEL4
Suse SLES-9
Fedora Core 4
Red Flag DC Server 5.0/MIRACLE LINUX V4.0/Haansoft Linux 2006 Server (Asianux 2.0 Inside)
Debian 3.1

必要なパッケージ:
glibc - 2.3.2
libaio - 0.3.96

Unix・Linux系のOracleはKernelパラメーターを設定しなければいけませんがXEのインストーラはチェックして値が小さい場合は勝手に変更してくれるようです。

・システム要件の確認
libaio と glibc がインストールされているか確認します。



libaio はデフォルトでは入っていないのでインストールします。





・RPMを使ったOracle XEのサイレントインストールを行います。

コマンドラインから以下のように実行してインストールしてOKですがここではサイレントインストールの手順を説明します。

# rpm -ivh /downloads/oracle-xe-univ-10.2.0.1-1.0.i386.rpm

◆サイレントインストール手順
1)RPMファイルを配置するディレクトリの作成
※わかりやすくするためにインストールガイドと全く同じようなディレクトリ構成にしました。

2)アップロードしたRPMのmv
3)サイレントインストール用のパラメータファイル(responsefile)の作成
4)サイレントインストール用のシェル作成
5)サイレントインストール用シェルの実行

# mkdir /downloads        (1)
# mv /tmp/oracle* /downloads   (2)
# ls /downloads
oracle-xe-univ-10.2.0.1-1.0.i386.rpm
#
# ls -al
合計 257020
drwxr-xr-x 2 root root 4096 2008-10-01 06:29 .
drwxr-xr-x 23 root root 4096 2008-10-01 06:24 ..
-rw-r--r-- 1 root root 262909363 2008-10-01 05:23 oracle-xe-univ-10.2.0.1-1.0.i386.rpm
-rw-r--r-- 1 root root 35 2008-10-01 06:21 responsefile
-rwxr--r-- 1 root root 196 2008-10-01 06:29 xesilentinstall.sh
#

(3)で作成したresponsefile(5行のテキストファイル)
# more responsefile
8090     <--- Oracle 10g XE のWeb管理アプリポート(デフォルト8080)
1521     <--- Oracle database listenerのポート(デフォルト1521)
ここはsysのパスワード
ここはsystemのパスワード
y      <--- OS起動時にOracleも自動起動するかの指定(yesで自動起動)

(4)で作成した起動シェル
# more xesilentinstall.sh
#!/bin/bash

rpm -ivh /downloads/oracle-xe-univ-10.2.0.1-1.0.i386.rpm > /var/log/XEslilentinstall.log

/etc/init.d/oracle-xe configure < /downloads/responsefile >> /var/log/X
Esilentinstall.log

5)サイレントインストール用シェルの実行
#./xesilentinstall.sh
#

※インストールログ(/var/log/XEsilentinstall.log)を確認しましょう。
# more /var/log/XEsilentinstall.log
準備中... ###############################################
###
This system does not meet the minimum requirements for swap space. Base
d on
the amount of physical memory available on the system, Oracle Database 1
0g
Express Edition requires 1024 MB of swap space. This system has 895 MB
of swap space. Configure more swap space on the system and retry the in
stallation.
oracle-xe-univ ############################################
######
Executing Post-install steps...
You must run '/etc/init.d/oracle-xe configure' as the root user to
configure the database.


Oracle Database 10g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 10g Express
Edition. The following questions will determine whether the database sh
ould
be starting upon system boot, the ports it will use, and the passwords t
hat
--続ける--(52%)
will be used for database accounts. Press to accept the default
s.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [
8080]:
Specify a port that will be used for the database listener [1521]:
Specify a password to be used for database accounts. Note that the same
password will be used for SYS and SYSTEM. Oracle recommends the use of
different passwords for each database account. This can be done after
initial configuration:
Confirm the password:

Do you want Oracle Database 10g Express Edition to be started on boot (y
/n) [y]:
Starting Oracle Net Listener...Done
Configuring Database...Done
Starting Oracle Database 10g Express Edition Instance...Done
Installation Completed Successfully.
To access the Database Home Page go to "http://127.0.0.1:8090/apex"
#

◆Oracleユーザの環境変数設定

Linuxのロケールを設定してOracleの提供するシェルを実行すると言語系の環境変数が設定されます。.bash_profileに以下の設定をします。
1)LANGの設定
2)oracle_env.sh の呼び出し

# su - oracle

-bash-3.2$ ls -al
合計 28
drwxr-xr-x 4 oracle dba 4096 2008-10-01 07:01 .
drwxr-xr-x 3 root root 4096 2008-10-01 06:29 ..
-rw------- 1 oracle dba 275 2008-10-01 06:55 .bash_history
-rw-r--r-- 1 oracle dba 189 2008-10-01 07:01 .bash_profile
-rw------- 1 oracle dba 1520 2008-10-01 07:01 .viminfo
drwxr-xr-x 3 oracle dba 4096 2008-10-01 06:29 app
drwxr-xr-x 3 oracle dba 4096 2008-10-01 06:29 oradata
-bash-3.2$ pwd
/usr/lib/oracle/xe
-bash-3.2$ vi .bash_profile
export LANG=ja_JP.UTF-8
. /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh

-bash-3.2$


アクセスポートの解放


◆Elasticfoxの画面から行う例



ElasticfoxのSecurity Groupsタブをクリックすると現在解放されているポートが表示されます。EC2のセキュリティはEC2のオーナー(ユーザ)毎に任意のグループを作成(複数可能)してそこに対してポリシーを設定します。作成したグループをインスタンス起動時に指定してセキュリティを有効にします。
デフォルトでdefaultというグループがあるので何も指定しない場合はdefaultグループに設定したセキュリティが有効になります。

上記の画面は、Your Groupsにリストされているグループを選択して右クリックしてメニューが表示されている状態です。

ここで Grant a new permission on this security group を選択してクリックすると以下の画面が表示されます。



この画面から解放するプロトコル、ポートやアクセス元の制限を設定します。
上記の例はTCP/IPを8090ポートで指定したIPアドレスからだけアクセスすることが出来る設定です。

◆AWS用コマンドラインツール(ec2-api-tools)から行う例

C:\AWS>ec2-authorize default -p 8090 -s 192.168.0.10/32
GROUP default
PERMISSION default ALLOWS tcp 8090 8090 FROM CIDR 192.168.0.10/32

AMIの作成


これでとりあえずOracle 10g XEのUniversal版のセットアップが終了したのでこの状態でAMIの作成をします。AMIの作成は第2回で説明していますのでそのとおりやるだけです。

・AMIにRSAキーペアのバンドル
認証ファイルとPキーをAMI環境へコピー(Secure copy)する
C:\AWS>pscp -i id_rsa-my-test-keypair.ppk pk-キー名.pem cert-キー名.pem root@ec2-67-202-25-135.compute-1.amazonaws.com:/mnt
pk-キー名 | 0 kB | 0.9 kB/s | ETA: 00:00:00 | 100%
cert-キー名 | 0 kB | 0.9 kB/s | ETA: 00:00:00 | 100%

C:\AWS>

・EC2にコピーしたRSAキーペアをバンドルしたAMI(oracle10gXE32bitUniv)を作成
※AMI名は任意。
# ec2-bundle-vol -d /mnt -k /mnt/pk-キー名.pem -c /mnt/cert-キー名.pem -u EC2のユーザID -r i386 -p oracle10gXE32bitUniv



・S3にAMIファイルの格納用フォルダを作成(101oraclexe)
※S3に作成するフォルダ名は任意。
・S3にAMIファイルをupload
# ec2-upload-bundle -b 101oraclexe -m /mnt/oracle10gXE32bitUniv.manifest.xml -a アクセスキー -s シークレットキー




AMIの登録


・EC2へ作成したAMIを登録
C:\AWS>ec2-register 101oraclexe/oracle10gXE32bitUniv.manifest.xml
IMAGE ami-AMIの番号

C:\AWS>

・登録されたAMIをElasticfoxで確認します。



これでEC2のインスタンスを停止してもまたこのAMIを利用して現在の状態でインスタンスを再起動できるのですが。。実はここで問題が起きます!
普通にインストールしたままだと再起動するとリスナーが起動しません。

問題の原因は以下にあります。
・EC2のインスタンスは起動するたびにIPアドレスが変わってしまいます。
・Oracleのリスナーはhost名またはIPアドレスを構成ファイルに明記します。

次回はこの問題の解決について説明したいと思います。

2008年10月2日木曜日

Amazon EC2 running Windows Server or SQL Server

先日、Amazon EC2 上で Oracle databaseを正式にサポートされるということはここでも書きましたが、早速、確認してみたところ Oracleのフリー版 Oracle 10g XE のAMIがあったので試してみました。

ところが残念。。
立ち上げてみると。。(-.-;
このEC2上の Oracle xe は文字コードが WE8MSWIN1252 でした。
シングルバイトのデータしか扱えん。。とほほ。
Oracleには文字コードセットの変更ができるユーティリティもあるのですが WE8MSWIN1252 から UTF-8 はサポートされていません。

断念して自分で Universal の XE をダウンロードしてインストールしてみました。
この手順は今度また掲載しますね。

さて、前置きが長くなりましたが、今日、知らせたかったことはAmazon EC2 上で Windows Server と SQL Server がサポートされるとい知らせが届いたことです。

Amazon はどんどん来ますね。
仮想化サーバーの利用も巷では盛んになってきているようですし、ITインフラの電気料金みたいな時間貸しもほんとに近くに迫ってきているように思います。

以下は、Amazonから届いたメールです。

Dear Amazon Web Services Developer,

We are excited to let you know that Amazon Elastic Compute Cloud (Amazon EC2) will offer you the ability to run Microsoft Windows Server or Microsoft SQL Server starting later this Fall. Today, you can choose from a variety of Unix-based operating systems, and soon you will be able to configure your instances to run the Windows Server operating system. In addition, you will be able to use SQL Server as another option within Amazon EC2 for running relational databases.

Amazon EC2 running Windows Server or SQL Server provides an ideal environment for deploying ASP.NET web sites, high performance computing clusters, media transcoding solutions, and many other Windows-based applications. By choosing Amazon EC2 as the deployment environment for your Windows-based applications, you will be able to take advantage of Amazons proven scalability and reliability, as well as the cost-effective, pay-as-you-go pricing model offered by Amazon Web Services.

Our goal is to support any and all of the programming models, operating systems and database servers that you need for building applications on our cloud computing platform. The ability to run a Windows environment within Amazon EC2 has been one of our most requested features, and we are excited to be able to provide this capability. We are currently operating a private beta of Amazon EC2 running Windows Server and SQL Server. Please go to http://aws.amazon.com/windows if you are interested in being notified later this Fall when the offering is released broadly.

Sincerely,

The Amazon Web Services Team

2008年6月16日月曜日

builder記事:Oracle Databaseをバッチ処理のエンジンに

ZDNet Japanが提供しているbuilderという開発者向けのサイトに弊社の兒玉(取締役)が特集記事を書くことになりました。

101willの製品コンセプトである「Oracle Databaseをバッチ処理のエンジンにする」というテーマで実際の環境構築から読者のみなさんが実体験できる内容の記事に仕上がっています。

近々にページがリリースされると思いますがページのURLまだわかりません。
たぶんbuilderのTopの特集かデータベースの特集になると思います!

ちょっとフライングでお話しすると記事の内容を試すための環境構築では、なかなか日本では情報がないフリーのOracle Databaseである「Oracle Database Express Edition」を使っています。

Oracle環境の構築に二の足を踏んでいた方でも簡単にテスト環境が出来てしまうので是非お試しください。

では記事リリースまでしばしお待ちください!