Oracle RAC on Amazon EC2 (2012 7月版)

去年の5月に手順を公開していますが、

・ベースとしていたAMIがもう公開されていない。
VPCがリリースされて、固定IPが使えるようになった(DynamicDNS使わなくてOK)
iSCSIでのLUの固定方法が分かった
などなど、去年と事情が変わっています。
現状(2012年7月現在)を踏まえた手順を公開します。

Amazon EC2上にOracle RACを構築する場合のポイントは以下の2つです。


・共有ディスク
Amazon EC2には複数インスタンスから同時にアクセスできる共有ディスクは提供されていません。
したがって、iSCSIで共有ディスクを代用する必要があります。
ただし、iSCSIでLUを割り当てると/dev/sdaから順番に割り当てられますので、
ルートデバイスが/dev/sdaのままだと iSCSIで割り当てたLUと競合し、Kernel Panicが発生します。
これを避けるためには、ルートデバイスを/dev/sde等に割り当て直してやる必要があります。


・仮想IP
Amazon EC2はbroadcast/multicastをサポートしておらず、
OS側から仮想IPを割り当てる際に必要なGratuitous ARPを(恐らく)サポートしていません。
仮想IPはOS側から制御する必要がありますが、現状(2012年7月時点では)EC2のAPI経由でしかIPの制御が出来ませんので、
そのままではOracle RACで仮想IPを扱うことが出来ません。
仮想IPを扱うために、OpenVPNで仮想ネットワークを構成し、仮想ネットワーク上で仮想IPを扱います。


なお、今回は手軽に試して頂くために、
設定がある程度簡単になるようなスクリプトを用意しました。
必要に応じて試して頂けると幸いです。
https://github.com/downloads/s4ragent/ec2rac/ec2_tmpl.tar
スクリプトの使用も含めて手順に記載しています)


0.環境準備
必要に応じてアカウントの準備やEC2の作成方法の確認を行います。
AWSのはじめかた(アカウント作成からサーバ起動まで)
「アマゾン ウェブ サービス(AWS)の新規アカウント作成の流れ」と「Amazon EC2(仮想サーバー)の起動」に目を通しておくと良いでしょう。
http://aws.amazon.com/jp/aws-first-step/


1、ベースのOracle Linuxからインスタンスを起動し、
必要なパッケージのインストールおよび、共通的な設定を行う。


a. Oracle Linux 5.6 x86_64 - Amazon Xen ( ami-72bf0873 ) を選択し、
EC2インスタンスを起動します。(マイクロインスタンスでかまいません)


★★★以下bからfまでの手順は、こちらで用意したスクリプトで設定可能です。★★★
#wget --no-check-certificate https://github.com/downloads/s4ragent/ec2rac/ec2_tmpl.tar
#tar xvf ec2_tmpl.tar
#cd ec2_tmpl/pre
#./pre.sh


b. 起動してきたら、 /etc/sysconfig/network-scripts/ifcfg-eth0 のHWADDR行をコメントアウト
コメントアウトしないと、このスナップショットを元にしたAMIが後ほど通信できなくなります。)


c. 必要なパッケージ(scsi-target-utils screen openvpn)をインストール
openvpnはデフォルトのレポジストリに含まれていないので、
EPEL (Extra Packages for Enterprise Linux) からダウンロードできるようにする

#rpm -ivh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
#yum -y install scsi-target-utils screen openvpn fonts-japanese.noarch


d. iscsiの不具合の対処
(http://discus-hamburg.cocolog-nifty.com/mac_de_oracle/2010/10/virtualbox-de-r.htmlを参考に)
#vi /etc/init.d/iscsi

stop()
{
        rm -f /var/lock/subsys/iscsi

        # If this is a final shutdown/halt, do nothing since
        # lvm/dm, md, power path, etc do not always handle this
        #if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
        #       success
        #       return
        #fi


e. /etc/hostsの編集
#vi /etc/hosts
以下を追加

#public
192.168.0.11 node1.public node1
192.168.0.12 node2.public node2
192.168.0.21 vip1.public vip1
192.168.0.22 vip2.public vip2
192.168.0.30 scan.public scan

#private
192.168.100.11 priv1.priv priv1
192.168.100.12 priv2.priv priv2


f. ssh(パスワードログイン)の設定
後々、gridinfrastructureのインストール時に必要なのでやっておきます。
#vi /etc/ssh/sshd_config

PasswordAuthentication yes


g. セキュリティをOFFにする
system-config-securitylevel

security-levelをOFFにSELINUXをDISABLEにする
(本来好ましくありませんが、、、)


h. 言語を日本語に変える
system-config-language


i. ロケールを日本に変える
system-config-date
Japanese-日本語 を選択
Asia/Tokyoを選択


j. OpenVPNで必要な証明書&鍵の作成
*@dynakou さんのページ( http://blog.livedoor.jp/dynakou/archives/2009-05.html )を参考にopenvpnのキーを作成


j-1. 必要なファイルのコピー
#cp -rp /usr/share/openvpn/easy-rsa /etc/openvpn
#chmod 755 /etc/openvpn/easy-rsa/2.0/*


j-2. openvpnの鍵&証明書作成の事前作業(環境変数
#cd /etc/openvpn/easy-rsa/2.0
#source /etc/openvpn/easy-rsa/2.0/vars
#/etc/openvpn/easy-rsa/2.0/clean-all


j-3. 認証局の証明書&鍵作成
#/etc/openvpn/easy-rsa/2.0/build-ca
エンターキーを連打


j-4. サーバ証明書の作成
#/etc/openvpn/easy-rsa/2.0/build-key-server server
基本はエンターキー連打
最後の以下だけyを押す

    Sign the certificate? [y/n]:y
    1 out of 1 certificate requests certified, commit? [y/n]y


j-5. Diffie-Hellman keyの作成
#/etc/openvpn/easy-rsa/2.0/build-dh


j-6. クライアントキーの作成
#/etc/openvpn/easy-rsa/2.0/build-key public1
#/etc/openvpn/easy-rsa/2.0/build-key public2
#/etc/openvpn/easy-rsa/2.0/build-key private1
#/etc/openvpn/easy-rsa/2.0/build-key private2

基本はエンターキー連打
最後の以下だけyを押す

    Certificate is to be certified until May 12 20:57:09 2021 GMT (3650 days)
    Sign the certificate? [y/n]:y
    1 out of 1 certificate requests certified, commit? [y/n]y
    Write out database with 1 new entries
    Data Base Updated


j-7. 証明書、キーが作成されているか確認
#ls /etc/openvpn/easy-rsa/2.0/keys

01.pem  ca.key              private1.crt  public1.crt  serial
02.pem  dh1024.pem          private1.csr  public1.csr  serial.old
03.pem  index.txt           private1.key  public1.key  server.crt
04.pem  index.txt.attr      private2.crt  public2.crt  server.csr
05.pem  index.txt.attr.old  private2.csr  public2.csr  server.key
ca.crt  index.txt.old       private2.key  public2.key

ca.key,ca.crt,dh1024.pem private1〜public2 crt,csr,key
server crt,csr,keyがあればOK


2、ルートデバイスを/dev/sdeに割り当てて、AMIを再作成
a. EC2インスタンスを停止します。


b. AWS Management ConsoleからこのAMIのボリュームのスナップショットを取ります。


c. このスナップショットを元に、ルートデバイスを /dev/sde に割り当ててAMIを作成します。
対象のスナップショットを右クリック create image from snapshotを選択し、以下を指定

Kernel id:aki-d809a2d9
RAM Disk id:use default
Architecture:x86_64
Root Device Nameを/dev/sde

grubのboot時のデバイス設定がLABEL指定なので、ルートボリュームが/dev/sdaから/dev/sdeに変わっても
問題なく動きます。


3、作成したAMIからインスタンスを3つVPC上に作成する。
a.VPCの作成
@suz_labさんのHP(http://blog.suz-lab.com/2011/05/vpcec2ip.html)を参考に


b. セキュリティグループの作成
INBOUNDに対して以下のように作成します。

ICMP
ALL            10.0.0.0/24

TCP
22 (SSH)	0.0.0.0/0
3260	10.0.0.0/24
5901	0.0.0.0/0

UDP
1194 - 1195	10.0.0.0/24

c. AMIインスタンスの作成
先ほど作成したAMIからインスタンスを3つ作成します。
IPはそれぞれ以下にします。

iscsi/openvpnサーバ 10.0.0.10
DB1         10.0.0.11
DB2         10.0.0.12


d. 作成した3つのAMIに対してEBSを割り当て
3つのAMIに対して9GBのEBSをそれぞれ/dev/sdfに割り当てます。


e. 作成した3つのインスタンスに対してEIPを割り当てる
VPCに確保したEIPでないとインスタンスにくくりつけられないので注意


4、OpenVPNの設定
a. openvpnの設定(iscsi/openvpnサーバ)


★★★以下a-1からa-6までの手順は、こちらで用意したスクリプトで設定可能です。★★★
#wget --no-check-certificate https://github.com/downloads/s4ragent/ec2rac/ec2_tmpl.tar
#tar xvf ec2_tmpl.tar
#cd ec2_tmpl/iscsi
#./openvpn.sh


a-1. テンプレートのconfファイルをコピーし編集(publicLAN用)
#cp /usr/share/doc/openvpn-2.1.4/sample-config-files/server.conf /etc/openvpn/00public.conf
#vi /etc/openvpn/00public.conf

    dev tap0
    ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
    cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
    key /etc/openvpn/easy-rsa/2.0/keys/server.key # This file should be kept secret
    dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
    server 192.168.0.0 255.255.255.0
    client-to-client


a-2. publicLAN用のファイルをコピーし、privateLAN用のconfファイルを作成
#cp /etc/openvpn/00public.conf /etc/openvpn/100private.conf

    port 1195
    dev tap1
    server 192.168.100.0 255.255.255.0
    ifconfig-pool-persist ipp_private.txt
    client-to-client
    status openvpn-status_private.log


a-3. クライアントIPを固定する
PublicLAN側
#vi /etc/openvpn/ipp.txt

    public1,192.168.0.11
    public2,192.168.0.12


PrivateLAN側
#vi /etc/openvpn/ipp_private.txt

   private1,192.168.100.11
   private2,192.168.100.12


a-4. openvpnの起動
#/etc/init.d/openvpn start


a-5. openvpnが起動しているか確認
tap0(192.168.0.1)とtap1(192.168.100.1)が起動していればOK


#ifconfig -a

tap0      Link encap:Ethernet  HWaddr 42:6F:7D:DA:B0:1A  
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::406f:7dff:feda:b01a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:55 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:11900 (11.6 KiB)  TX bytes:6164 (6.0 KiB)

tap1      Link encap:Ethernet  HWaddr 76:CA:79:71:52:94  
          inet addr:192.168.100.1  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::74ca:79ff:fe71:5294/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:81 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:17662 (17.2 KiB)  TX bytes:6176 (6.0 KiB)


a-6. 問題なければ、自動起動にする。
#chkconfig openvpn on


b. openvpnクライアント側(DB1)設定


★★★以下b-1からb-5までの手順は、こちらで用意したスクリプトで設定可能です。★★★
#wget --no-check-certificate https://github.com/downloads/s4ragent/ec2rac/ec2_tmpl.tar
#tar xvf ec2_tmpl.tar
#cd ec2_tmpl/db1
#./openvpn.sh


b-1. テンプレートのconfファイルをコピーし編集(publicLAN用)
#cp /usr/share/doc/openvpn-2.1.4/sample-config-files/client.conf /etc/openvpn/00public.conf

    dev tap0
    remote 10.0.0.10 1194
    ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
    cert /etc/openvpn/easy-rsa/2.0/keys/public1.crt
    key /etc/openvpn/easy-rsa/2.0/keys/public1.key


b-2. publicLAN用のファイルをコピーし、privateLAN用のconfファイルを作成
#cp /etc/openvpn/00public.conf /etc/openvpn/100private.conf

    dev tap1
    remote 10.0.0.10 1195
    cert /etc/openvpn/easy-rsa/2.0/keys/privare1.crt
    key /etc/openvpn/easy-rsa/2.0/keys/private1.key


b-3. openvpnの起動
#/etc/init.d/openvpn start


b-4. openvpnが起動しているか確認
tap0(192.168.0.11)とtap1(192.168.100.11)が起動していればOK


#ifconfig -a

tap0      Link encap:Ethernet  HWaddr 8A:2C:6D:C3:3C:4B  
          inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::882c:6dff:fec3:3c4b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 b)  TX bytes:6022 (5.8 KiB)

tap1      Link encap:Ethernet  HWaddr CA:B0:AD:D6:F6:28  
          inet addr:192.168.100.11  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::c8b0:adff:fed6:f628/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 b)  TX bytes:6034 (5.8 KiB)


b-5. 問題なければ、自動起動にする。
#chkconfig openvpn on


c. openvpnクライアント側(DB2)設定


★★★以下c-1からc-5までの手順は、こちらで用意したスクリプトで設定可能です。★★★
#wget --no-check-certificate https://github.com/downloads/s4ragent/ec2rac/ec2_tmpl.tar
#tar xvf ec2_tmpl.tar
#cd ec2_tmpl/db2
#./openvpn.sh


c-1. テンプレートのconfファイルをコピーし編集(publicLAN用)
#cp /usr/share/doc/openvpn-2.1.4/sample-config-files/client.conf /etc/openvpn/00public.conf

    dev tap0
    remote 10.0.0.10 1194
    ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
    cert /etc/openvpn/easy-rsa/2.0/keys/public2.crt
    key /etc/openvpn/easy-rsa/2.0/keys/public2.key


c-2. publicLAN用のファイルをコピーし、privateLAN用のconfファイルを作成
#cp /etc/openvpn/00public.conf /etc/openvpn/100private.conf

    dev tap1
    remote 10.0.0.10 1195
    cert /etc/openvpn/easy-rsa/2.0/keys/privare2.crt
    key /etc/openvpn/easy-rsa/2.0/keys/private2.key


c-3. openvpnの起動
#/etc/init.d/openvpn start


c-4. openvpnが起動しているか確認
tap0(192.168.0.11)とtap1(192.168.100.11)が起動していればOK


#ifconfig -a

tap0      Link encap:Ethernet  HWaddr 8A:2C:6D:C3:3C:4B  
          inet addr:192.168.0.12  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::882c:6dff:fec3:3c4b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 b)  TX bytes:6022 (5.8 KiB)

tap1      Link encap:Ethernet  HWaddr CA:B0:AD:D6:F6:28  
          inet addr:192.168.100.12  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::c8b0:adff:fed6:f628/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 b)  TX bytes:6034 (5.8 KiB)


c-5. 問題なければ、自動起動にする。
#chkconfig openvpn on


5、iSCSIの設定


a. iscsi/openvpnサーバ側の設定


★★★以下a-1からa-6までの手順は、こちらで用意したスクリプトで設定可能です。★★★
#wget --no-check-certificate https://github.com/downloads/s4ragent/ec2rac/ec2_tmpl.tar
#tar xvf ec2_tmpl.tar
#cd ec2_tmpl/iscsi
#./iscsi.sh


a-1. /dev/sdfに割り当てたEBSをfdiskで1024M,5120M 残り の3つのパーティションでフォーマット
#fdisk /dev/sdf


a-2. パーティションの確認
#fdisk -l

Disk /dev/sdf: 9.0 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdf1               1         250     2008093+  83  Linux
/dev/sdf2             251        1122     7004340   83  Linux
/dev/sdf3            1123        1958     6715170   83  Linux


a-3. フォーマットしたパーティションをtgt(iscsiターゲット)デーモンで公開
#vi /etc/tgt/targets.conf

<target iqn.2012-02.org.jpoug:server.crs>
# List of files to export as LUNs
        <backing-store /dev/sdf1>
                lun 1
        </backing-store>
        <backing-store /dev/sdf2>
                lun 2
        </backing-store>
        <backing-store /dev/sdf3>
                lun 3
        </backing-store>
        initiator-address 10.0.0.11
        initiator-address 10.0.0.12
</target>


a-4. iscsiターゲットデーモン(tgtd)を起動する
#/etc/init.d/tgtd start


a-5. 公開しているLUの確認
#tgt-admin --show

Target 1: iqn.2012-02.org.jpoug:server.crs
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB
            Online: Yes
            Removable media: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 2056 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: /dev/sdf1
            Backing store flags: 
        LUN: 2
            Type: disk
            SCSI ID: IET     00010002
            SCSI SN: beaf12
            Size: 7172 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: /dev/sdf2
            Backing store flags: 
        LUN: 3
            Type: disk
            SCSI ID: IET     00010003
            SCSI SN: beaf13
            Size: 6876 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: /dev/sdf3
            Backing store flags: 
    Account information:
    ACL information:
        10.0.0.11
        10.0.0.12


a-6. 意図した設定になっていれば、tgtdを自動起動にする
#chkconfig tgtd on


b. iscsiイニシエータ側(DB1側)の設定


★★★以下b-1からb-5までの手順は、こちらで用意したスクリプトで設定可能です。★★★
#wget --no-check-certificate https://github.com/downloads/s4ragent/ec2rac/ec2_tmpl.tar
#tar xvf ec2_tmpl.tar
#cd ec2_tmpl/db1
#./iscsi.sh


b-1. iscsiデーモンの起動
#/etc/init.d/iscsi start


b-2. ターゲットの登録
#iscsiadm --mode discovery --type sendtargets -p 10.0.0.10
→10.0.0.10:3260,1 iqn.2012-02.org.jpoug:server.crs


b-3. ターゲットへのログイン
#iscsiadm --mode node --targetname iqn.2012-02.org.jpoug:server.crs --login


b-4. diskに割り当てられているか確認(/dev/sda,/dev/sdb,/dev/sdc)
#fdisk -l

Disk /dev/sde: 27.9 GB, 27917287424 bytes
255 heads, 63 sectors/track, 3394 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes


デバイス Boot      Start         End      Blocks   Id  System
/dev/sde1   *           1          13      104391   83  Linux
/dev/sde2              14        1348    10723387+  83  Linux
/dev/sde3            1349        1610     2104515   82  Linux swap / Solaris
/dev/sde4            1611        3394    14329980   83  Linux


Disk /dev/sda: 2056 MB, 2056287744 bytes
64 heads, 62 sectors/track, 1012 cylinders
Units = シリンダ数 of 3968 * 512 = 2031616 bytes


ディスク /dev/sda は正常な領域テーブルを含んでいません


Disk /dev/sdb: 7172 MB, 7172444160 bytes
221 heads, 62 sectors/track, 1022 cylinders
Units = シリンダ数 of 13702 * 512 = 7015424 bytes


ディスク /dev/sdb は正常な領域テーブルを含んでいません


Disk /dev/sdc: 6876 MB, 6876334080 bytes
212 heads, 62 sectors/track, 1021 cylinders
Units = シリンダ数 of 13144 * 512 = 6729728 bytes


ディスク /dev/sdc は正常な領域テーブルを含んでいません


b-5. iscsi自動起動
#chkconfig iscsi on


c. iscsiイニシエータ側(DB2側)の設定


★★★以下c-1からc-5までの手順は、こちらで用意したスクリプトで設定可能です。★★★
#wget --no-check-certificate https://github.com/downloads/s4ragent/ec2rac/ec2_tmpl.tar
#tar xvf ec2_tmpl.tar
#cd ec2_tmpl/db2
#./iscsi.sh


c-1. iscsiデーモンの起動
#/etc/init.d/iscsi start


c-2. ターゲットの登録
#iscsiadm --mode discovery --type sendtargets -p 10.0.0.10
→10.0.0.10:3260,1 iqn.2012-02.org.jpoug:server.crs


c-3. ターゲットへのログイン
#iscsiadm --mode node --targetname iqn.2012-02.org.jpoug:server.crs --login


c-4. diskに割り当てられているか確認(/dev/sda,/dev/sdb,/dev/sdc)
#fdisk -l

Disk /dev/sde: 27.9 GB, 27917287424 bytes
255 heads, 63 sectors/track, 3394 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes


デバイス Boot      Start         End      Blocks   Id  System
/dev/sde1   *           1          13      104391   83  Linux
/dev/sde2              14        1348    10723387+  83  Linux
/dev/sde3            1349        1610     2104515   82  Linux swap / Solaris
/dev/sde4            1611        3394    14329980   83  Linux


Disk /dev/sda: 2056 MB, 2056287744 bytes
64 heads, 62 sectors/track, 1012 cylinders
Units = シリンダ数 of 3968 * 512 = 2031616 bytes


ディスク /dev/sda は正常な領域テーブルを含んでいません


Disk /dev/sdb: 7172 MB, 7172444160 bytes
221 heads, 62 sectors/track, 1022 cylinders
Units = シリンダ数 of 13702 * 512 = 7015424 bytes


ディスク /dev/sdb は正常な領域テーブルを含んでいません


Disk /dev/sdc: 6876 MB, 6876334080 bytes
212 heads, 62 sectors/track, 1021 cylinders
Units = シリンダ数 of 13144 * 512 = 6729728 bytes


ディスク /dev/sdc は正常な領域テーブルを含んでいません


c-5. iscsi自動起動
#chkconfig iscsi on


6、DB側 ユーザ作成/環境変数設定、カーネルパラメータ設定等


a.DB1側設定


★★★以下a-1からa-11までの手順は、こちらで用意したスクリプトで設定可能です。★★★
#wget --no-check-certificate https://github.com/downloads/s4ragent/ec2rac/ec2_tmpl.tar
#tar xvf ec2_tmpl.tar
#cd ec2_tmpl/db1
#./env.sh


a-1. ホスト名の変更
#vi /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node1.public


a-2. ホスト名がEC2用に割り当てられないようする。
#vi /etc/rc.d/rc.local

#hostname `curl http://169.254.169.254/latest/meta-data/hostname`


a-3. Grid用グループ&ユーザの作成
#groupadd asmadmin
#groupadd asmdba
#groupadd asmoper
#useradd -m -g oinstall -G asmadmin,asmdba,asmoper -d /home/grid -s /bin/bash -c "Grid Infrastructure Owner" grid


a-4. Oracleユーザの編集
#groupadd oper
#usermod -g oinstall -G dba,oper,asmdba oracle


a-5. プロファイル設定
#vi /etc/profile

if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
                ulimit -p 16384
                ulimit -n 65536
        else
                ulimit -u 16384 -n 65536
        fi
        umask 022
fi


a-6. bashrc設定
#vi /home/grid/.bashrc

if [ -t 0 ]; then
   stty intr ^C
fi

#vi /home/oracle/.bashrc

if [ -t 0 ]; then
   stty intr ^C
fi


a-7.Oracleユーザ、Gridユーザの bash_profile設定
#vi /home/grid/.bash_profile
以下を追加

export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export ORACLE_PATH=.:/u01/app/oracle/common/oracle/sql
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/oracm/lib:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:$CLASSPATH
export NLS_LANG=Japanese_japan.al32utf8
export PATH=.:$ORACLE_HOME/bin:$PATH
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export TNS_ADMIN=$ORACLE_HOME/network/admin
umask 022

#vi /home/oracle/.bash_profile
以下を追加

export ORACLE_SID=ORCL1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_PATH=.:$ORACLE_BASE/common/oracle/sql
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/oracm/lib:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:$CLASSPATH
export NLS_LANG=Japanese_japan.al32utf8
export PATH=.:$ORACLE_HOME/bin:$PATH
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_UNQNAME=ORCL
umask 022


a-8. limits.confの編集
#vi /etc/security/limits.conf
oracleユーザの記載はあるので、gridユーザの分も追記する

grid   soft   nofile    131072
grid   hard   nofile    131072
grid   soft   nproc    131072
grid   hard   nproc    131072
grid   soft   core    unlimited
grid   hard   core    unlimited
grid   soft   memlock    50000000
grid   hard   memlock    50000000


a-9. loginの編集
#vi /etc/pam.d/login
以下を追加

session required pam_limits.so


a-10. NTP無効化
#/sbin/service ntpd stop
#chkconfig ntpd off
#mv /etc/ntp.conf /etc/ntp.conf.original
#rm /var/run/ntpd.pid


a-11. インストール領域用に/dev/sdfにパーティション(/dev/sdf1)を作成
#fdisk /dev/sdf


a-12. ここで一旦ホスト名&パーティションテーブルを反映するためにリブート
#reboot


★★★以下a-13からa-16までの手順は、こちらで用意したスクリプトで設定可能です。★★★
#wget --no-check-certificate https://github.com/downloads/s4ragent/ec2rac/ec2_tmpl.tar
#tar xvf ec2_tmpl.tar
#cd ec2_tmpl/db1
#./mkdir.sh


a-13. ファイルシステム作成
#mkfs.ext3 /dev/sdf1


a-14. 自動マウントするために /etc/fstabを編集
#vi /etc/fstab
最後の行を追加

LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SWAP-VM           swap                    swap    defaults        0 0
/dev/sdf1                /u01                   ext3    defaults        0 0     


a-15. ちゃんとマウントできるか確認
#mount -a
#df -h
/u01に/dev/sde4がマウントされていればOK

Filesystem            Size  Used Avail Use% Mounted on
/dev/sde2              10G  2.5G  7.4G  26% /
/dev/sde1              99M   37M   57M  40% /boot
tmpfs                 308M     0  308M   0% /dev/shm
/dev/sde4              14G  163M   13G   2% /u01


a-16. インストール先ディレクトリの作成
#mkdir -p /u01/app/grid
#mkdir -p /u01/app/11.2.0/grid
#chown -R grid:oinstall /u01
#mkdir -p /u01/app/oracle
#chown oracle:oinstall /u01/app/oracle
#chmod -R 775 /u01


b.DB2側設定


★★★以下b-1からb-11までの手順は、こちらで用意したスクリプトで設定可能です。★★★
#wget --no-check-certificate https://github.com/downloads/s4ragent/ec2rac/ec2_tmpl.tar
#tar xvf ec2_tmpl.tar
#cd ec2_tmpl/db2
#./env.sh


b-1. ホスト名の変更
#vi /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node2.public


b-2. ホスト名がEC2用に割り当てられないようする。
#vi /etc/rc.d/rc.local

#hostname `curl http://169.254.169.254/latest/meta-data/hostname`


b-3. Grid用グループ&ユーザの作成
#groupadd asmadmin
#groupadd asmdba
#groupadd asmoper
#useradd -m -g oinstall -G asmadmin,asmdba,asmoper -d /home/grid -s /bin/bash -c "Grid Infrastructure Owner" grid


b-4. Oracleユーザの編集
#groupadd oper
#usermod -g oinstall -G dba,oper,asmdba oracle

b-5. プロファイル設定
#vi /etc/profile

if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
                ulimit -p 16384
                ulimit -n 65536
        else
                ulimit -u 16384 -n 65536
        fi
        umask 022
fi

b-6. bashrc設定
#vi /home/grid/.bashrc

if [ -t 0 ]; then
   stty intr ^C
fi

#vi /home/oracle/.bashrc

if [ -t 0 ]; then
   stty intr ^C
fi


b-7.Oracleユーザ、Gridユーザの bash_profile設定
#vi /home/grid/.bash_profile
以下を追加

export ORACLE_SID=+ASM2
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export ORACLE_PATH=.:/u01/app/oracle/common/oracle/sql
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/oracm/lib:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:$CLASSPATH
export NLS_LANG=Japanese_japan.al32utf8
export PATH=.:$ORACLE_HOME/bin:$PATH
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export TNS_ADMIN=$ORACLE_HOME/network/admin
umask 022

#vi /home/oracle/.bash_profile
以下を追加

export ORACLE_SID=ORCL2
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_PATH=.:$ORACLE_BASE/common/oracle/sql
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/oracm/lib:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:$CLASSPATH
export NLS_LANG=Japanese_japan.al32utf8
export PATH=.:$ORACLE_HOME/bin:$PATH
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_UNQNAME=ORCL
umask 022


b-8. limits.confの編集
#vi /etc/security/limits.conf
oracleユーザの記載はあるので、gridユーザの分も追記する

grid   soft   nofile    131072
grid   hard   nofile    131072
grid   soft   nproc    131072
grid   hard   nproc    131072
grid   soft   core    unlimited
grid   hard   core    unlimited
grid   soft   memlock    50000000
grid   hard   memlock    50000000


b-9. loginの編集
#vi /etc/pam.d/login
以下を追加

session required pam_limits.so


b-10. NTP無効化
#/sbin/service ntpd stop
#chkconfig ntpd off
#mv /etc/ntp.conf /etc/ntp.conf.original
#rm /var/run/ntpd.pid


b-11. インストール領域用に/dev/sdfにパーティション(/dev/sdf1)を作成
#fdisk /dev/sdf


b-12. ここで一旦ホスト名&パーティションテーブルを反映するためにリブート
#reboot


★★★以下b-13からb-16までの手順は、こちらで用意したスクリプトで設定可能です。★★★
#wget --no-check-certificate https://github.com/downloads/s4ragent/ec2rac/ec2_tmpl.tar
#tar xvf ec2_tmpl.tar
#cd ec2_tmpl/db2
#./mkdir.sh


b-13. ファイルシステム作成
#mkfs.ext3 /dev/sdf1


b-14. 自動マウントするために /etc/fstabを編集
#vi /etc/fstab
最後の行を追加

LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SWAP-VM           swap                    swap    defaults        0 0
/dev/sdf1                /u01                   ext3    defaults        0 0     


b-15. ちゃんとマウントできるか確認
#mount -a
#df -h
/u01に/dev/sde4がマウントされていればOK

Filesystem            Size  Used Avail Use% Mounted on
/dev/sde2              10G  2.5G  7.4G  26% /
/dev/sde1              99M   37M   57M  40% /boot
tmpfs                 308M     0  308M   0% /dev/shm
/dev/sde4              14G  163M   13G   2% /u01


b-16. インストール先ディレクトリの作成
#mkdir -p /u01/app/grid
#mkdir -p /u01/app/11.2.0/grid
#chown -R grid:oinstall /u01
#mkdir -p /u01/app/oracle
#chown oracle:oinstall /u01/app/oracle
#chmod -R 775 /u01


7、oracleasmの設定&ASMディスクの作成
a.DB1側の設定
a-1. oracleasmデーモンの起動&初期設定
#/etc/init.d/oracleasm start
#/usr/sbin/oracleasm configure -i

    Configuring the Oracle ASM library driver.
    This will configure the on-boot properties of the Oracle ASM library
    driver. The following questions will determine whether the driver is
    loaded on boot and what permissions it will have. The current values
    will be shown in brackets ('[]'). Hitting <ENTER> without typing an
    answer will keep that current value. Ctrl-C will abort.
    Default user to own the driver interface []: grid
    Default group to own the driver interface []: asmadmin
    Start Oracle ASM library driver on boot (y/n) [n]: y
    Scan for Oracle ASM disks on boot (y/n) [y]: y
    Writing Oracle ASM library driver configuration: done


a-2. iscsiで割り当てられたディスクに対して
それぞれパーティションを作成する(/dev/sda1,/dev/sdb1,/dev/sdc1)
#fdisk /dev/sda
#fdisk /dev/sdb
#fdisk /dev/sdc


a-3. iscsiディスクの初期化
#dd if=/dev/zero of=/dev/sda1 bs=1M count=100
#dd if=/dev/zero of=/dev/sdb1 bs=1M count=100
#dd if=/dev/zero of=/dev/sdc1 bs=1M count=100


a-4. oracleasmデーモンの再起動
#/etc/init.d/oracleasm restart


a-5. ASMディスクの作成
#oracleasm createdisk CRSVOL /dev/sda1
#oracleasm createdisk DATAVOL /dev/sdb1
#oracleasm createdisk FRAVOL /dev/sdc1


a-6. ASMディスクの確認
#oracleasm listdisks

CRSVOL
DATAVOL
FRAVOL


※表示されない場合は、/etc/init.d/oracleasm restartをした後、
iscsiディスクの初期化からASMディスクの確認まで(a-2からa-5)をやり直してみてください


b.DB2側の設定
b-1. oracleasmデーモンの起動&初期設定
#/etc/init.d/oracleasm start
#/usr/sbin/oracleasm configure -i

    Configuring the Oracle ASM library driver.
    This will configure the on-boot properties of the Oracle ASM library
    driver. The following questions will determine whether the driver is
    loaded on boot and what permissions it will have. The current values
    will be shown in brackets ('[]'). Hitting <ENTER> without typing an
    answer will keep that current value. Ctrl-C will abort.
    Default user to own the driver interface []: grid
    Default group to own the driver interface []: asmadmin
    Start Oracle ASM library driver on boot (y/n) [n]: y
    Scan for Oracle ASM disks on boot (y/n) [y]: y
    Writing Oracle ASM library driver configuration: done


b-2. oracleasmデーモンの再起動
#/etc/init.d/oracleasm restart


b-3. ASMディスクのスキャン
#oracleasm scandisks


b-4. ASMディスクの確認
#oracleasm listdisks

CRSVOL
DATAVOL
FRAVOL


8、インストール
a. DB1側
a-1. パスワード変更
#passwd grid
#passwd oracle


a-2. インストールメディアのダウンロード(Database)
oracleユーザでVNCを起動
$vncserver
VNC経由でfirefoxを起動し、OTNからdatabaseをダウンロードし、
/home/oracle配下に解凍する。
解凍が終わったら、vncserverを停止する
#vncserver -kill :1
ダウンロードしたzipファイルを消すのも忘れずに。


a-3. インストールメディアのダウンロード(grid)
gridユーザでVNCを起動
$vncserver
VNC経由でfirefoxを起動し、OTNからgridをダウンロードし、
/home/grid配下に解凍する。
解凍が終わったら、vncserverを停止する
#vncserver -kill :1
ダウンロードしたzipファイルを消すのも忘れずに。


b. DB2
b-1. パスワード変更
#passwd grid
#passwd oracle


以下、DB1側でインストールとなりますが、
通常のインストール手順を変わらないので、割愛します。


参考にされたい方は、Mac De OracleさんのHPを参照することをお勧めします。
http://discus-hamburg.cocolog-nifty.com/mac_de_oracle/2010/11/virtualbox-de-o.html




参考文献
Oracle RACのインストール(@discus_hamburgさん)
http://discus-hamburg.cocolog-nifty.com/mac_de_oracle/2010/11/virtualbox-de-o.html


OpenVPN(@dynakouさん)
http://blog.livedoor.jp/dynakou/archives/2009-05.html


VPC(@suzu_labさん)
http://blog.suz-lab.com/2011/05/vpcec2ip.html


iSCSI
http://www.asahi-net.or.jp/~aa4t-nngk/iscsi.html