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はそれぞれ以下にします。
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-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-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-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