前回までのあらすじ

新人若井が先輩出来の助けを借りながら、アマゾン ウェブ サービス(以下、AWS)上でOracle DBを作成しようと言うこの企画ですが、とうとう4回目になりました。

前回は若井がインターネットを駆使して、作成したEC2へSSHを使ったログインと、VNCの設定を行いましたが、なんと、VNCへの接続ができませんでした。そこへ打ち合わせから帰ってきた出来。なぜVNCへの接続ができなかったのでしょうか。

  • 若井 あらた (わかいあらた)
    新人エンジニアで、今回データベース課に配属となった。本物語の主人公。



  • 出来 益代 (でき ますよ)
    中堅エンジニアで、データベース課に所属する。年齢は不詳。仕事熱心で、比較的後輩の面倒見もよいお姉さまタイプ。



※ この物語はフィクションであり、登場する団体・人物などの名称はすべて架空のものです

VNCで接続出来ない

若井 「VNCサーバーの設定はやったんですけど、何故か、VNCクライアントから接続ができないんです。」
出来 「なるほどね。VNC設定はちゃんとできてるの?」
若井 「ちゃんとやったと思います。VNCサーバーもしっかり起動してますし。」
出来 「じゃあ、AWSの『セキュリティーグループ』の設定はしっかりやった?」
若井 「!!!やってないかも。。。」
出来 「前にも言ったとおり、セキュリティーグループでしっかりと利用するポートを開けておかないと、EC2上に作った仮想サーバーには通信できないわよ。」
若井 「なるほど。それじゃあ、AWSのマネージメントコンソールから今回VNCで利用する5901番ポートの設定を追加すればいいんですね。」
出来 「そういう事になるわね。」
若井 「ちょっと、やってみます。」

  1. Security Groupsをクリック
  2. 『test-sec-gr』にチェックを入れる
  3. 『Inbound』をクリック
  4. 『Port range』に『5901』を入力
  5. 『+Add Rule』をクリック
  6. 『Apply Rule Changes』をクリック

出来 「セキュリティーグループの設定が完了したら、もう一回VNCクライアントで前回と同じように接続してみて」

若井がVNCクライアント起動し、接続を実施。

サーバーに『「Public IP」:5901』を入力

パスワードには『vncpasswd』コマンドで設定したパスワードを入力。

若井 「出来た!!」

出来 「できたわね。これで仮想サーバーへの接続設定は完了ね。」
若井 「よかった。」

Oracleの要件の確認

出来 「それじゃあ次はOracleの要件に合わせて、マシンをパワーアップしていきましょう。Oracle Database11gリリース2の要件をまずは確認するわね。」

メモリ要件

  • 最小 : 1GBのRAM
  • 推奨 : 2GB以上のRAM

スワップ領域の推奨サイズ

  • 1から2GB : RAMのサイズの1.5倍
  • 2から16GB : RAMのサイズと同じ
  • 16GB超 : 16GB

ディスク領域要件

  • /tmpディレクトリに1GBの領域

ソフトウェア・ファイルおよびデータファイルのディスク領域要件(Enterprise Edition)

  • ソフトウェア・ファイルの要件(GB) : 4.35
  • データファイルのディスク領域(GB) : 1.7

ディスプレイ要件

  • 最小解像度は1024x768以上

カーネル要件

  • Red Hat Enterprise Linux 6の場合 : 2.6.32-71.el6.x86_64以上

パッケージ要件(Red Hat Enterprise Linux 6の場合)

 次のパッケージ(またはそれ以降のバージョン)がインストールされている事

  • binutils-2.20.51.0.2-5.11.el6 (x86_64)
  • compat-libcap1-1.10-1 (x86_64)
  • compat-libstdc++-33-3.2.3-69.el6 (x86_64)
  • compat-libstdc++-33-3.2.3-69.el6.i686
  • gcc-4.4.4-13.el6 (x86_64)
  • gcc-c++-4.4.4-13.el6 (x86_64)
  • glibc-2.12-1.7.el6 (i686)
  • glibc-2.12-1.7.el6 (x86_64)
  • glibc-devel-2.12-1.7.el6 (x86_64)
  • glibc-devel-2.12-1.7.el6.i686
  • ksh
  • libgcc-4.4.4-13.el6 (i686)
  • libgcc-4.4.4-13.el6 (x86_64)
  • libstdc++-4.4.4-13.el6 (x86_64)
  • libstdc++-4.4.4-13.el6.i686
  • libstdc++-devel-4.4.4-13.el6 (x86_64)
  • libstdc++-devel-4.4.4-13.el6.i686
  • libaio-0.3.107-10.el6 (x86_64)
  • libaio-0.3.107-10.el6.i686
  • libaio-devel-0.3.107-10.el6 (x86_64)
  • libaio-devel-0.3.107-10.el6.i686
  • make-3.81-19.el6
  • sysstat-9.0.4-11.el6 (x86_64)

※ 参考:OracleR Databaseインストレーション・ガイド 11gリリース2 (11.2) for Linux B56273-06

出来 「これら全ての要件を満たす必要があるわ。何が、どれだけ足りないのか一緒に見ていきましょう。」
若井 「はい。分かりました。」

出来 「まずは、メモリ要件から。「/proc/meminfo」ファイルのMemtotalの項目を確認するのよ。
若井 「はい。」

[root@ip-172-31-24-192 ~]# grep MemTotal /proc/meminfo
MemTotal:         604676 kB
[root@ip-172-31-24-192 ~]#

若井 「590MBぐらいですかね。」
出来 「そうね。メモリ要件は1GB以上だから、足りないわね。メモリは仮想マシンの『インスタンスタイプ』を変更する事で増やしましょう。まずはサーバーを停止させましょう。」
若井 「分かりました。」

[root@ip-172-31-24-192 ~]# shutdown ?h now

出来 「『AWS マネージメントコンソール』からもシャットダウンがされている事を確認して。」
若井 「『Instance State』が『stopped』になりました。停止しました。」

出来 「EC2ではインスタンスを一回停止させると、再度起動した時に『Public IPアドレス』が変わってしまうの。これを変えないようにする為に、『Elastic IPs』という機能もあるけど、今回はこの設定はしないわ。だから、次回起動させると、Public IPアドレスが変わっているから、接続の時に注意してね。」
若井 「なるほど。分かりました。」
出来 「それじゃあ、インスタンスタイプを変更して、Oracle Databaseの要件に合うような仮想マシンに設定変更しましょう。まずはどのインスタンスタイプにするか選択する必要があるわ。」
若井 「メモリの推奨が2GB以上になっているから、それより大きなメモリが搭載されているインスタンスタイプを選びたいですね。ちょっと調べてみます。」
(カタカタカタ・・・ターン。)
若井 「『m1.medium』が一番良さそうかな。」
出来 「そうね、今回の場合はそれぐらいがいいかもね。インスタンスタイプをハイスペックの物に変更すると、その分コストも大きくなるわ。検証が終わったら、必ずシャットダウンしておいてね。起動しっぱなしのまま放置していると、何もしてないのに、請求だけが来てすごくもったいないわよ。ちなみに。1ヶ月稼働させた時に大体どれくらいの金額になりそうか、計算する為のツールが、Amazon.comから提供されているわ。また、今度見ておいてね。
若井 「ほー。『m1.medium』を一ヶ月無停止で動かすと、126ドルぐらいになるんですね。」

出来 「じゃあ、インスタンスタイプを変更しましょう。『AWSマネージメントコンソール』から、インスタンスを選択して、右クリック。『Change Instance Type』を選択するの。そこで、『m1.medium』を選択して『Apply』をクリックすれば完了よ。」

若井 「完了しました。じゃあ、起動させます。右クリックで『Action』の『Start』をクリック」

若井 「起動しました。」
出来 「じゃあ、もういっかいsshで接続して、メモリを確認しましょう。」

[ec2-user@ip-172-31-24-192 ~]$ grep MemTotal /proc/meminfo
MemTotal:        3849280 kB
[ec2-user@ip-172-31-24-192 ~]$

若井 「お!3.7GBぐらいになりました。」
出来 「OK!これで、メモリ要件はOKね。次はスワップ領域をみましょう。メモリを確認したコマンドと同じファイルを今度は、『Swap Total』でgrepするの。」

[ec2-user@ip-172-31-24-192 ~]$ grep SwapTotal /proc/meminfo
SwapTotal:             0 kB
[ec2-user@ip-172-31-24-192 ~]$

若井 「0KBかー。全然足りないなー。」
出来 「Oracleの推奨は、メモリが約3.6GBだから、スワップ領域も同じくらいが必要ね。ここで一旦、スワップ領域に使用するボリュームを追加しましょうか。」
若井 「そうですね。今のままではディスクにも殆ど空きがなさそうですからね。」

[ec2-user@ip-172-31-24-192 ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde1            6.0G  2.7G  3.2G  47% /
none                  1.9G     0  1.9G   0% /dev/shm
[ec2-user@ip-172-31-24-192 ~]$

出来 「スワップ用に4GBのボリュームを追加しましょう。『AWSマネージメントコンソール』から、『ELASTIC BLOCK STORE』の『Volumes』を選択して、『Create Volume』をクリックよ。」

出来 「次に、ウィンドウが出てきたら、『Volume Type』、『Size』、『Availability Zone』、『Snap Shot』を設定して行くの。『Volume Type』は、『Standerd』と『Provisiond IOPS』があるんだけど、『Provisiond IOPS』は設定したIOPS性能を確保してくれるの。『Avairability Zone』はEC2がホスティングされている地域(リージョン)の中で、複数のゾーン(Zone)というのがあるの。ゾーンは物理的に異なるデータセンターのようなもので、ボリューム追加したい『EC2』と『ELASTIC BLOCK STORE』は同じ『Avairability Zone』に作成してやる必要があるわ。」
若井 「こんな感じかな。」

出来 「入力が完了したら、『Yes,Create』をクリック」

若井 「出来ました!」

出来 「じゃあ、作成したボリュームを選択して、右クリックから『Attach Volume』を選択して、ボリューム追加してみて。」

若井 「できました!」
出来 「次は、仮想マシン上で追加したディスクを利用可能にするのよ。」
若井 「はい!」

という事で、今回はここまで、次回はディスク追加の続きからスタートです。

執筆者紹介

山口 正寛(YAMAGUCHI Masahiro)

株式会社システムサポート東京支社インフラソリューション事業部所属。

同社が得意とするOracleデータベースのエンジニアで、大規模DWHのDB管理者、DBコンサルタントなどを経験。また、同社の無料セミナーの企画にも携わる。

今回、機器がなくても気軽に環境を構築し検証したいというかた向けに AWS上でOracleデータベースを構築することをストーリー調で記載する。 尚、同社はAWSを用いたクラウド工房 powered by AWSというプロダクトがあり、産学官連携でも活用している。