RAC(Oracle Real Application Clusters)について、あまり知識がない初心者がチャレンジした跡。
##工事中##
VMWareの設定
前提
VMWareのバージョン
VMWare Workstation 5.5.5
ゲストOSの構成
| 100.168.116.25 |
ubl1.utsugi.com(1号機) |
外部通信用 |
| 192.168.139.25 |
ubl1i.utsugi.com(1号機) |
内部通信用 |
| 100.168.116.35 |
ubl1v.utsugi.com(1号機) |
Oracle用VIP用 |
| 100.168.116.26 |
ubl2.utsugi.com(2号機) |
外部通信用 |
| 192.168.139.26 |
ubl2i.utsugi.com(2号機) |
内部通信用 |
| 100.168.116.36 |
ubl2v.utsugi.com(2号機) |
Oracle用VIP用 |
※外部通信用に、以下のアドレスを指定すると、CVU使用時、またはVIP構成時に失敗するらしい。
| クラスA |
10.0.0.0 |
| クラスB |
172.16.0.0 - 172.31.0.0 |
| クラスC |
192.168.0.0 - 192.168.255.0 |
共有ディスクは、1号機(ubl1)側でNFSマウントで共有することで代替する。
イーサネットの追加
1号機で次を実施する。
「仮想マシンの設定」より「追加」を押して「ハードウェア追加ウィザード」を起動し、「イーサネットアダプタ」を選択する。
プライベート用のLANを組むため、「ホストオンリー」を選択する。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (vm_network.jpg)
2号機に対しても同じ設定を行う。
ハードディスクの追加
こちらはubl1のみ。
「ハードウェア追加ウィザード」を起動し、「ハードディスク」を選択する。IDEとSCSIがあるが、SCSIを選択した。サイズはお好みで。
インストール前準備
1号機(ubl1)で実施した内容を元に記述。特に断りがない限り、2号機も同様に行う。
ネットワークの設定(内部通信用)
ifconfig -aでNICの確認[root]
OSを起動して、rootユーザでログイン。
ifconfig -a
を実施し、NICが認識されていることを確認する。
eth0 Link encap:Ethernet HWaddr 00:0C:29:20:B3:27
inet addr:100.168.116.25 Bcast:100.168.116.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe20:b327/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:940 errors:0 dropped:0 overruns:0 frame:0
TX packets:936 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:443621 (433.2 KiB) TX bytes:112204 (109.5 KiB)
Interrupt:185 Base address:0x1400
eth1 Link encap:Ethernet HWaddr 00:0C:29:20:B3:31
inet addr:192.168.139.25 Bcast:192.168.139.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe20:b331/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1633 (1.5 KiB) TX bytes:630 (630.0 b)
Interrupt:169 Base address:0x1480
※上記は「eth1」のIPアドレスの設定まで終えた状態の表示。
/etc/sysconfig/network-scriptsで設定[root]
/etc/sysconfig/network-scriptsで、2つめifcfg-eth1を作成する。ifcfg-eth0をベースに修正するのが簡単だろう。
DEVICE=eth1
BOOTPROTO=static
BROADCAST=192.168.139.255
IPADDR=192.168.139.25
NETMASK=255.255.255.0
NETWORK=192.168.139.0
ONBOOT=yes
TYPE=Ethernet
設定できたら、/etc/init.d/network restart でネットワークを再起動。その後、ifconfig で設定されたことを確認する。
ハードディスクの設定
OSインストール後にハードディスクを追加する人の手順。ちなみに、OSインストール時点に既にハードディスクを追加していれば、インストールの中で設定できたと思う。
※この章の内容は、作業後に記憶を辿って書いたため、あくまで参考までに。
- dmesage で、追加したハードディスクが認識されていることを確認。
- fdisk <デバイス名> を実行。fdiskの使い方、他サイトを参考に。1号機のfdiskでパーティション状態を表示させたものは次の通り。
コマンド (m でヘルプ): p
Disk /dev/sdb: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/sdb1 1 2610 20964793+ 83 Linux
- mke2fs コマンドでext3 のファイルシステムを作成。
- fstabに追加。1号機のものは次のようになっている。
/dev/sdb1 /mnt/sdb ext3 defaults 1 2
ntpd(/etc/ntp.conf)の設定[root]
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp
VMWare対策
VMWare上のLinuxの場合、どんどん時刻がずれてしまう可能性がある。この対策として、「/boot/grub/grub.conf」にカーネル起動オプションとして、以下を記述する。
clock=pit nosmp noapic nolapic
grub.conf の記述例は、次のようになる。
title Enterprise (2.6.9-55.0.0.0.2.ELsmp)
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-55.0.0.0.2.ELsmp ro root=LABEL=/ rhgb quiet clock=pit nosmp noapic nolapic
initrd /boot/initrd-2.6.9-55.0.0.0.2.ELsmp.img
title Enterprise-up (2.6.9-55.0.0.0.2.EL)
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-55.0.0.0.2.EL ro root=LABEL=/ rhgb quiet clock=pit nosmp noapic nolapic
initrd /boot/initrd-2.6.9-55.0.0.0.2.EL.img
/etc/hostsの設定[root]
1号機は次のように記述。
127.0.0.1 ubl1.utsugi.com ubl1 localhost.localdomain localhost
100.168.116.25 ubl1.utsugi.com ubl1
100.168.116.26 ubl2.utsugi.com ubl2
#Private for InterConnect
192.168.139.25 ubl1i.utsugi.com ubl1i
192.168.139.26 ubl2i.utsugi.com ubl2i
外部通信、内部通信における1号機、2号機の定義を記載している。
swapの拡大[root]
「Oracle Database インストレーション・ガイド 10gリリース2(10.2)for Linux x86」によるとswapの最小要件は次の通り。
| RAM |
スワップ領域 |
| 1024~2048 MB |
RAMのサイズの1.5倍 |
| 2049~8192 MB |
RAMのサイズと同じ |
| 8192 MB超 |
RAMのサイズの0.75倍 |
ubl1サーバーのswap状態は次の通り。
[root@ubl1 ~]# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 2096472 0 -1
VMWareの設定でRAMは1200MBとしていおり、swapは2GBであるため要件はクリアしているが、500MBさらにswapを拡張してみる。
[root@ubl1 ~]# cd /tmp
[root@ubl1 tmp]# dd if=/dev/zero of=/tmp/swap bs=1024k count=500
読み込んだブロック数は 500+0
書き込んだブロック数は 500+0
[root@ubl1 tmp]# mkswap swap
Setting up swapspace version 1, size = 524283 kB
[root@ubl1 tmp]# swapon swap
[root@ubl1 tmp]# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 2096472 0 -1
/tmp/swap file 511992 0 -2
OS再起動後も自動でswapに割り当ててもらうように /etc/fstab に以下を追記しておく。
/tmp/swap swap swap default 0 0
NFSの設定[root]
共有ディスクがないので、1号機側のディスクをNFSマウントして共有する。
NFSサーバー側の設定(1号機のみ)
1号機のハードディスクを追加したディレクトリを共有する。
/mnt/sdb
/etc/exports ファイルに以下を記述する。このときに指定するIPアドレスはRACの内部通信側、つまり 192.168.xxx.xxx とする。
/mnt/sdb 192.168.0.0/255.255.0.0(rw)
/etc/init.d/nfs restart を実行する。
NFSクライアント側の設定(1号機、2号機両方)
RACのインストールマニュアルによると「共有記憶域にNFSを使用している場合は、NFSバッファ・サイズ・パラメータ(rsizeおよびwsize)の値を16384以上に設定する必要があります。推奨は32768です。」とのこと。今回は16384で設定してみる。
2号機に、/etc/fstab に以下を記述する。OS起動時に自動でmountする。
ubl1i:/mnt/sdb /mnt/data nfs rsize=16384,wsize=16384,hard default 0 0
手動でマウントする場合は、次のコマンドを実行する。
mount -t nfs -o rsize=16384,wsize=16384 ubl1i:/mnt/sdb /mnt/data
※1号機の場合、fstab内にディスクのマウントなどが存在し、処理の順序的にNFSクライアントをOS起動時に自動で設定するのは無理そうなのであきらめた。そのため、1号機は、手動でマウントすることにした。
グループ・ユーザの作成[root]
rootユーザでoracle用のユーザやグループを作成する。
oinstallグループ
groupadd -g 2000 oinstall
dbaグループ
groupadd -g 2001 dba
oracleユーザ
useradd -d /home/oracle -g oinstall -G dba -m -s /bin/bash -u 2000 oracle
passwd oracle <--適当に設定してね
また、nobodyユーザが必要なので、存在していなければ作成する。
/usr/sbin/useradd nobody
※グループID、ユーザIDは環境に合わせて指定。
カーネル・パラメータの構成[root]
/etc/sysctl.confを編集。以下を付け加える。
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
oracleユーザーに対するシェル制限の設定
- /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
session required /lib/security/pam_limits.so
- /etc/profile or /etc/csh.login
※oracleユーザーのデフォルト・シェルに応じて、デフォルトのシェル起動ファイルを次のように変更
Bourne、BashまたはKornシェルの場合
/etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
Cシェル(cshまたはtcsh)の場合
/etc/csh.login
if ( $USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
endif
ここで一端、OSを再起動をしておく。
jdk1.4の入手[root]
Database 10g R2にパッチは、OPatch 10.2のバージョンのためJDK1.4が必要。そのため予めJDK1.4を入手しておく。
SSHの構成[oracle]
Oracle Real Application Clustersをインストールして使用する前に、すべてのクラスタ・ノードでoracleユーザー用のセキュア・シェル(SSH)を構成する必要がある。
RSA鍵およびDSA鍵の作成
oracleでログインする。もし、homeディレクトリに .ssh ディレクトリがなければ作成して適切な権限に設定しておく。
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
そして、「/usr/bin/ssh-keygen -t rsa」「/usr/bin/ssh-keygen -t dsa」をそれぞれ実行してく。以下は、1号機で実際に実行した結果。
[oracle@ubl1 .ssh]$ /usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
b7:b5:57:d4:d4:3c:cb:80:7a:c5:96:2a:91:91:5a:e9 [email protected]
[oracle@ubl1 .ssh]$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
48:03:dd:01:e1:cb:84:36:cf:ed:48:39:98:fd:b6:5a [email protected]
[oracle@ubl1 .ssh]$ ls
id_dsa id_dsa.pub id_rsa id_rsa.pub
これを2号機でも実施する。
認証鍵ファイルへの鍵の追加
認証鍵ファイル(~/.ssh/authorized_keys)が存在していなければ、作成する。
touch ~/.ssh/authorized_keys
cd ~/.ssh/
そして、以下を実行する。
[oracle@ubl1 .ssh]$ ssh ubl1 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
oracle@ubl1's password:
[oracle@ubl1 .ssh]$ ssh ubl1 cat /home/oracle/.ssh/id_dsa.pub >> authorized_keys
[oracle@ubl1 .ssh]$ ssh ubl2 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
oracle@ubl2's password:
[oracle@ubl1 .ssh]$ ssh ubl2 cat /home/oracle/.ssh/id_dsa.pub >> authorized_keys
oracle@ubl2's password:
作成したauthorized_keysファイルを、2号機にscp等を利用して転送する。
[oracle@ubl1 .ssh]$ scp authorized_keys ubl2:/home/oracle/.ssh
oracle@ubl2's password:
authorized_keys 100% 1688 1.7KB/s 00:00
また、authorized_keys の権限を変更しておく。
[oracle@ubl1 .ssh]$ chmod 600 authorized_keys
/home/oracle/.ssh/authorized_keys があるので、権限を変更しておく。
[oracle@ubl2 .ssh]$ chmod 600 authorized_keys
クラスタ・メンバー・ノードでのSSHユーザー等価関係の有効化
パス・フレーズを求めるプロンプトが表示されることなくsshおよびscpコマンドをOracle Universal Installerで使用できるようにする。
以下のコマンドを実施する。
exec /usr/bin/ssh-agent $SHELL
/usr/bin/ssh-add
その後、「ssh <servername> date」を実行して、パスワードが尋ねられず実行できたら成功。
[oracle@ubl1 .ssh]$ ssh ubl1 date
2007年 11月 1日 木曜日 16:32:57 JST
[oracle@ubl1 .ssh]$ ssh ubl2 date
2007年 11月 1日 木曜日 16:52:04 JST
cvuqdiskパッケージのインストール[root]
Red HatまたはSUSE Linux系のOSを使用している場合は、オペレーティング・システムのcvuqdiskパッケージをダウンロードしてインストールする必要があり。
RACのメディアにcvsqdiskパッケージが入っているので、これを使用する。
rpm -i cvuqdisk-1.0.1-1.rpm
CVUを使用したネットワーク設定の検証[oracle]
oracleユーザーで「runcluvfy.sh」を使用してコマンドを入力して、クラスタが構成されているすべてのノード間のノードの接続性を検証してみる。
/mountpoint/crs/Disk1/cluvfy/runcluvfy.sh comp nodecon -n node_list [-verbose]
今回は、node_listは、1号機(ubl1)、2号機(ubl2)のため、次のコマンドを実行。結果は成功した。
[oracle@ubl1 cluvfy]$ ./runcluvfy.sh comp nodecon -n ubl1,ubl2 -verbose
ノード接続性を検証中
ノード接続性をチェック中...
ノード"ubl2"のインタフェース情報
インタフェース名 IPアドレス サブネット
------------------------------ ------------------------------ ----------------
eth0 100.168.116.26 100.168.116.0
eth1 192.168.139.26 192.168.139.0
ノード"ubl1"のインタフェース情報
インタフェース名 IPアドレス サブネット
------------------------------ ------------------------------ ----------------
eth0 100.168.116.25 100.168.116.0
eth1 192.168.139.25 192.168.139.0
チェック: サブネット"100.168.116.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
ubl2:eth0 ubl1:eth0 はい
結果: ノードubl2,ubl1を持つサブネット"100.168.116.0"のノード接続性チェックに合格しました。
チェック: サブネット"192.168.139.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
ubl2:eth1 ubl1:eth1 はい
結果: ノードubl2,ubl1を持つサブネット"192.168.139.0"のノード接続性チェックに合格しました。
サブネット"100.168.116.0"のVIPに適したインタフェース:
ubl2 eth0:100.168.116.26
ubl1 eth0:100.168.116.25
サブネット"192.168.139.0"のプライベート・インターコネクトに適したインタフェース:
ubl2 eth1:192.168.139.26
ubl1 eth1:192.168.139.25
結果: ノード接続性チェックに合格しました。
ノード接続性の検証に成功しました。
インストールディレクトリの作成[root]
次のようなディレクトリ構成とする。
| Oracle Base |
/opt/oracle/app |
| Oracle Clusterware Home |
/opt/oracle/crs/product/10.2/crs |
| Oracle Database Home |
/opt/oracle/app/product/10.2/db |
以下は、1号機での実行した例である。
[root@ubl1 opt]# mkdir -p /opt/oracle/crs/product/10.2/crs
[root@ubl1 opt]# chown -R root:oinstall /opt/oracle/crs/
[root@ubl1 opt]# mkdir -p /opt/oracle/app/product/10.2/db
[root@ubl1 opt]# chown -R oracle:oinstall /opt/oracle/app/
2号機でも同様に実施する。
環境変数ファイルの作成[oracle]
1号機、2号機で実施。
- CRS用環境設定ファイル(.crs_profile)
umask 022
stty intr ^C
ORACLE_BASE=/opt/oracle/app;export ORACLE_BASE
ORA_CRS_HOME=/opt/oracle/crs/product/10.2/crs;export ORA_CRS_HOME
ORACLE_HOME=$ORA_CRS_HOME;export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH;export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH;export LD_LIBRARY_PATH
umask 022
stty intr ^C
ORACLE_BASE=/opt/oracle/app;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2/db;export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH;export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
最終更新:2007年11月22日 19:29