#topicpath
----
Xen 3.0.4 上に domU として構築した 2 つの CentOS 4.4 にて、
Oracle 10g R1 RAC (Real Application Clusters) を
インストールしてみます。

しかしまだうまくいきません。

#contents

Xen についてはこちらをご覧ください。

- [[技術文書/Linux/CentOS4.4にXen3.0.4をインストール]]

* domU としての設定 [#d84920a2]

** ディスクの設定 [#p57759cf]
 
ディスクを5つ用意しました。

|dom0 でのデバイス名/ファイル名|用途|容量|domU に見せるデバイス名|h
|/dev/Volume00/rac1|OSをインストール|15GB|sda1|
|/opt/rac1-swap.img|swap|1GB|sda2|
|/dev/Volume00/racshare|共有ディスク|5GB|sdb1|

ノード間で共有するものについては、
domU の設定ファイルで書き込み権限を付けるときに
w ではなく w! とする必要があります。

rac1 の起動ファイルの /opt/rac1.conf はこのようにしています。

 kernel = "/boot/vmlinuz-2.6.16.33-xenU"
 ramdisk = "/boot/initrd-2.6.16.33-xenU.img"
 memory = 882
 name = "rac1"
 vif = [ 'mac=XX:YY:ZZ:1F:63:DA, bridge=xenbr0',
         'mac=XX:YY:ZZ:1F:63:DB, bridge=xenbr1' ]
 disk = [ 'phy:Volume00/rac1,sda1,w',
          'file:/opt/rac1-swap.img,sda2,w',
          'phy:Volume00/racshare,sdb1,w!' ]
 root = "/dev/sda1 ro"
 extra = "4"

rac2 も同様に書いて、別々の端末ウィンドウでそれぞれ起動しておきます。

 [root@centos4 opt]# xm create -c /opt/rac1.conf

 [root@centos4 opt]# xm create -c /opt/rac2.conf

* OS の準備 [#p805c351]

カーネルパラメータやユーザの設定は DB のインストールと同様です。

- [[技術文書/Oracle/CentOS4.4にOracle10gR1をインストール]]

ネットワークは2つのNICを設定しておきます。

- rac1
-- eth0 192.168.1.21
-- eth1 192.168.10.21
- rac2
-- eth0 192.168.1.22
-- eth1 192.168.10.22

/etc/hosts の設定をします。
rac1 と rac2 は FQDN で書いておかないと、
OS の起動が遅くなります。

 127.0.0.1 localhost localhost.localdomain
 192.168.1.2 centos4
 192.168.1.21 rac1 rac1.localdomain
 192.168.1.22 rac2 rac2.localdomain
 192.168.1.121 rac1-vip
 192.168.1.122 rac2-vip
 192.168.10.21 rac1-priv
 192.168.10.22 rac2-priv

oracle ユーザでログインして、
SSH でお互いにパスワードなしで入れるように設定しておきます。

まず rac1 で鍵ペアを作ります。パスフレーズは空にします。

 [oracle@rac1 ~]$ ssh-keygen -t dsa
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
 Created directory '/home/oracle/.ssh'.
 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:
 87:81:8d:03:f9:83:ac:40:27:bc:cf:a9:54:bb:e7:94 oracle@rac1

rac2 でも作ります。

 [oracle@rac2 ~]$ ssh-keygen -t dsa

公開鍵をお互いにコピーします。

 [oracle@rac1 ~]$ scp .ssh/id_dsa.pub rac2:~/.ssh/authorized_keys2
 The authenticity of host 'rac2 (192.168.1.22)' can't be established.
 RSA key fingerprint is ec:91:64:10:cc:c0:09:b2:b6:8d:6e:3f:03:cf:6b:5c.
 Are you sure you want to continue connecting (yes/no)? yes
 Warning: Permanently added 'rac2,192.168.1.22' (RSA) to the list of known hosts.
 oracle@rac2's password:
 id_dsa.pub                                    100%  601     0.6KB/s   00:00

 [oracle@rac2 ~]$ scp .ssh/id_dsa.pub rac1:~/.ssh/authorized_keys2

自ホストの分も登録しておきます。

 [oracle@rac1 ~]$ cd .ssh
 [oracle@rac1 .ssh]$ cat id_dsa.pub >> authorized_keys2

 [oracle@rac2 ~]$ cd .ssh
 [oracle@rac2 .ssh]$ cat id_dsa.pub >> authorized_keys2

authorized_keys2 の権限を 600 にしておきます。

 [oracle@rac1 ~]$ chmod 600 .ssh/authorized_keys2

 [oracle@rac2 ~]$ chmod 600 .ssh/authorized_keys2

一度ログインして、すべてパスワードが不要なことを確認します。

 [oracle@rac1 ~]$ ssh rac1
 [oracle@rac1 ~]$ ssh rac1-priv
 [oracle@rac1 ~]$ ssh rac2
 [oracle@rac1 ~]$ ssh rac2-priv

 [oracle@rac2 ~]$ ssh rac2
 [oracle@rac2 ~]$ ssh rac2-priv
 [oracle@rac2 ~]$ ssh rac1
 [oracle@rac2 ~]$ ssh rac1-priv

これで rac1 と rac2 の間で透過的にコマンドが通るようになりました。

 [oracle@rac1 ~]$ ssh rac2 hostname
 rac2

また、インターコネクト用の送受信バッファの設定をするため、
/etc/sysctl.conf に追記します。

 net.core.rmem_max = 262144
 net.core.wmem_max = 262144
 net.core.rmem_default = 262144
 net.core.wmem_default = 262144

これは sysctl -p で有効にします。

* 共有ディスクの OCFS2 の設定 [#qc62c65b]

/dev/sdb1 を共有ディスクとして使います。
rac1 と rac2 の両方で作業を行います。

まず、selinux が無効になっていることを
確認してください。/etc/selinux/config です。

必要なツールをダウンロードしてきます。最新版は
http://oss.oracle.com/projects/ocfs2-tools/
で確認できます。

 [root@rac1 ~]# wget http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL4/i386/1.2.2-1/ocfs2-tools-1.2.2-1.i386.rpm
 [root@rac1 ~]# wget http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL4/i386/1.2.2-1/ocfs2-tools-debuginfo-1.2.2-1.i386.rpm
 [root@rac1 ~]# wget http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL4/i386/1.2.2-1/ocfs2-tools-devel-1.2.2-1.i386.rpm
 [root@rac1 ~]# wget http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL4/i386/1.2.2-1/ocfs2console-1.2.2-1.i386.rpm

依存するパッケージをインストールします。

 [root@rac1 ~]# yum install  e2fsprogs-devel glib2-devel vte pygtk2

これらがインストールできたら、OCFS2のツールもすんなり入ります。

 [root@rac1 ~]# rpm -Uvh ocfs2*
 Preparing...                ########################################### [100%]
    1:ocfs2-tools            ########################################### [ 25%]
    2:ocfs2-tools-debuginfo  ########################################### [ 50%]
    3:ocfs2-tools-devel      ########################################### [ 75%]
    4:ocfs2console           ########################################### [100%]

rac2 でも同様にインストールします。

ocfs2console でクラスタの設定を行うのですが、
うまくいきませんでした。
/etc/ocfs2/cluster.conf を自分で書きます。
ネットワークはインターコネクト側(eth1)を指定します。

 cluster:
         node_count = 2
         name = ocfs2
 
 node:
         ip_port = 7777
         ip_address = 192.168.10.21
         number = 0
         name = rac1
         cluster = ocfs2
 
 node:
         ip_port = 7777
         ip_address = 192.168.10.22
         number = 1
         name = rac2
         cluster = ocfs2

起動時に有効になるように設定します。

 [root@rac1 ~]# /etc/init.d/o2cb configure
 Configuring the O2CB driver.
 
 This will configure the on-boot properties of the O2CB driver.
 The following questions will determine whether the driver is loaded on
 boot.  The current values will be shown in brackets ('[]').  Hitting
 <ENTER> without typing an answer will keep that current value.  Ctrl-C
 will abort.
 
 Load O2CB driver on boot (y/n) [n]: y
 Cluster to start on boot (Enter "none" to clear) [ocfs2]:
 Specify heartbeat dead threshold (>=7) [7]:
 Writing O2CB configuration: OK
 Loading module "configfs": OK
 Mounting configfs filesystem at /sys/kernel/config: OK
 Loading module "ocfs2_nodemanager": OK
 Loading module "ocfs2_dlm": OK
 Loading module "ocfs2_dlmfs": OCFS2 User DLM kernel interface loaded
 OK
 Mounting ocfs2_dlmfs filesystem at /dlm: OK
 Starting O2CB cluster ocfs2: OK

rac2 でも同様に設定して、一度 OS を再起動します。

起動したら、ocfs2console を起動します。

 [root@rac1 ~]# export DISPLAY=192.168.1.2:0 
 [root@rac1 ~]# ocfs2console

- Tasks
-- Format ...

にて、/dev/sdb1 をフォーマットします。

フォーマットできたら、mount するために /etc/fstab に1行追加します。
/u02 は空のディレクトリを作っておきます。

 /dev/sdb1 /u02 ocfs2 _netdev 0 0

 [root@rac1 ~]# mount /u02
 (3053,0):ocfs2_initialize_super:1326 max_slots for this device: 4
 (3053,0):ocfs2_fill_local_node_info:1019 I am node 0
 (3053,0):__dlm_print_nodes:377 Nodes in my domain ("624F813F3D9740B8BD65980A43C3BCC3"):
 (3053,0):__dlm_print_nodes:381  node 0
 (3053,0):ocfs2_find_slot:267 taking node slot 0
 ocfs2: Mounting device (8,17) on (node 0, slot 0) with ordered data mode.
 [root@rac1 ~]# df /u02
 Filesystem           1K-blocks      Used Available Use% Mounted on
 /dev/sdb1              5120000    268280   4851720   6% /u02

rac2 でも同様に mount して、ファイルが共有できていることを確認します。

 [root@rac1 u02]# cd /u02
 [root@rac1 u02]# ls
 lost+found
 [root@rac1 u02]# dd if=/dev/zero of=sharedfile bs=1M count=1
 1+0 records in
 1+0 records out

 [root@rac2 u02]# cd /u02
 [root@rac2 u02]# ls -l
total 1028
 drwxr-xr-x  2 root root    4096 Feb  4 15:18 lost+found
 -rw-r--r--  1 root root 1048576 Feb  4 15:28 sharedfile

以上で OCFS2 の設定が完了です。

いま /u02 は root でしか書き込めないので、
oracle ユーザで書き込めるディレクトリを作っておきます。

 [root@rac1 ~]# mkdir /u02/crs/
 [root@rac1 ~]# chown oracle:oinstall /u02/crs/

* CRSのインストール [#ie39574c]

rac1 にて、CRS (Cluster Ready Service) をインストールします。
まずはソフトウェアを展開します。

 [oracle@rac1 ~]$  gunzip ship.crs.lnx32.cpio.gz
 [oracle@rac1 ~]$ mkdir CRS
 [oracle@rac1 ~]$ cd CRS
 [oracle@rac1 CRS]$ cpio -idmv < ../ship.crs.lnx32.cpio

192.168.1.2 の X を使って、そちらに画面を飛ばす設定をします。
192.168.1.2 側では xhost + しておきます。

 [oracle@rac1 CRS]$ export DISPLAY=192.168.1.2:0
 [oracle@rac1 CRS]$ export LANG=ja_JP.eucJP

runInstaller を起動します。

 [oracle@rac1 CRS]$ Disk1/runInstaller

注意点は下記の通りです。

- インストール先を /u01/app/oracle/product/10.1.0/crs にする
- クラスタ構成は下記のように入力する
-- Public Node Name : rac1, rac2
-- Private Node Name : rac1-priv, rac2-priv
- インタフェースの設定は eth0 を Public にして、eth1 を Private にする
- OCRファイルは /u02/crs/ocrfile にする
- 投票ディスクは /u02/crs/votedisk にする

(root.sh でエラーになる)


トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS