RACのノード追加

構築済みの2ノードRACにもう一つノードを追加する方法を検証する。

環境は、Linux 上の19c RAC。

クラスタ・ノードの追加および削除 (oracle.com)

LinuxおよびUNIXシステムのノードでのOracle RACの追加と削除

OS側の事前準備

新たに追加するノードにOSをインストールして必要な設定を行っておく。

追加するノードのIPアドレスを決める

今回は以下のIPアドレスのノードを1つ追加する。

種別ホスト名IPアドレス
パブリックrac19n3.dn.home192.168.100.88
VIPrac19n3-vip.dn.home192.168.100.89
プライベート192.168.1.88

DNSには上記名前解決が行えるように適宜設定を行い、追加するノードにパブリックとプライベートのIPアドレスを固定で設定する。

ファイアウォールの停止

# systemctl stop firewalld
# systemctl disable firewalld

Preinstallation RPM の実行

Preinstallation RPMをインストールして、動作要件を自動で設定する。

# yum install oracle-database-preinstall-19c.x86_64

ユーザ・グループの作成と修正

Preinstallation RPMではgridユーザは作られないので別途作成し、必要なグループも追加する。

# useradd -u 54322 -g oinstall -G dba grid
# groupadd -g 54327 asmdba
# groupadd -g 54328 asmoper
# groupadd -g 54329 asmadmin
# usermod -g oinstall -G asmdba,asmoper,asmadmin grid
# usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmdba oracle

パスワードの設定。

# passwd grid
# passwd oracle

インストール先のディレクトリ作成

# mkdir -p /u01/app/19.0.0/grid
# mkdir -p /u01/app/grid
# mkdir -p /u01/app/oracle
# chown -R grid:oinstall /u01
# chown oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/

リソース制限の設定

Preinstallation RPMを実行すると、oracleユーザに対するリソース制限は行われているが、gridユーザに対しては未設定のため、以下を追加する。

/etc/security/limits.d/oracle-database-preinstall-19c.conf

grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768

共有ディスクの接続

すでに構成済みの共有ディスクを追加するノードにも接続しておく。

Grid Infrastructureを新規ノードへ展開

既存ノードのいずれかで、gridSetup.sh を実行することで展開する。

$ $ORACLE_HOME/gridSetup.sh

「クラスタに、さらにノードを追加してください」を選択

追加するノードの情報を入力する。

次に追加したノードとの間でSSH接続を確立するのだが、ここで以下のようなエラー(INS-06003)が出る場合がある。

OSが同一であるにも関わらずこのエラーが出る場合は、事前にSSHの等価設定を手動で行わないと解消できない場合がある。私の環境では以下を手動で実行した。

追加するノードのgridユーザでRSAキーペアを作成する。passphrase を聞かれるが、何も入力せずEnter。

$ mkdir ~/.ssh 
$ chmod 700 ~/.ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa

生成された公開鍵(id_rsa.pub)を既存のノードにコピーする。

(追加するノード → 既存ノード)

scp ~/.ssh/id_rsa.pub grid@rac19n1.dn.home:/home/grid/id_rsa.pub.3
scp ~/.ssh/id_rsa.pub grid@rac19n2.dn.home:/home/grid/id_rsa.pub.3

既存のノードにはRAC構成時に公開鍵が生成されているので、それを追加するノードにコピーする。

(既存ノード1 → 追加するノード)

scp ~/.ssh/id_rsa.pub grid@rac19n3.dn.home:/home/grid/id_rsa.pub.1

(既存ノード2 → 追加するノード)

scp ~/.ssh/id_rsa.pub grid@rac19n3.dn.home:/home/grid/id_rsa.pub.2

お互いの authorized_keys に公開鍵を追記する。

(追加するノード)

cat ~/id_rsa.pub.1 ~/id_rsa.pub.2 ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

(既存ノード1,2)

cat ~/id_rsa.pub.3 >> ~/.ssh/authorized_keys

authorized_keys にドメイン名を含むエントリしか存在しない場合は、さらに以下のようにドメイン名を含まないエントリを手動で追加する必要があった。すべてのノードついて同様の設定を行う。

ssh-rsa AAAA...略...rrrn grid@rac19n1.dn.home
ssh-rsa AAAA...略...rrrn grid@rac19n1  ← これを手動で追加

この状態で、パスワードなしで接続ができることを確認しておく(known_hostsに登録する意味もある)。

以下のようなメッセージが出た場合は、known_hosts から不要なエントリを削除しておくこと。

$ ssh grid@rac19n3.dn.home
Warning: the ECDSA host key for 'rac19n3.dn.home' differs from the key for the IP address '192.168.100.88'
Offending key for IP in /home/grid/.ssh/known_hosts:6
Matching host key in /home/grid/.ssh/known_hosts:7
Are you sure you want to continue connecting (yes/no)?

known_hosts

192.168.100.88 ssh-rsa AAAA... ← 削除
rac19n3 ssh-rsa AAAA... 略     ← 削除

改めて gridSetup.sh を実行すると、SSH接続部分もクリアできるはず。

前提条件のチェックが走る。修正が必要な項目については、修正スクリプトを使うなどして修正する。

確認画面で「送信」を押すと、Grid Infrastructureの展開が始まる。

終盤に、構成スクリプトの実行画面が出るので、指示されたスクリプトを実行する。

初回の構成時と異なり、root.sh の実行にはある程度時間がかかる。また、最後に「Error 4 opening dom ASM/Self」というエラーが出るがこれは無視可能なようだ。

[root@rac19n3 ~]# /u01/app/oraInventory/orainstRoot.sh 
権限を変更中 /u01/app/oraInventory.
グループの読取り/書込み権限を追加中。
全ユーザーの読取り/書込み/実行権限を削除中。

グループ名の変更 /u01/app/oraInventory 宛先 oinstall.
スクリプトの実行が完了しました。
[root@rac19n3 ~]# /u01/app/19.0.0/grid/root.sh
root.sh        root.sh.old    root.sh.old.2  
[root@rac19n3 ~]# /u01/app/19.0.0/grid/root.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /u01/app/19.0.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]: 
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Relinking oracle with rac_on option


Using configuration parameter file: /u01/app/19.0.0/grid/crs/install/crsconfig_params
The log of current session can be found at:
  /u01/app/grid/crsdata/rac19n3/crsconfig/rootcrs_rac19n3_2023-03-26_12-34-41AM.log
2023/03/26 12:34:43 CLSRSC-594: Executing installation step 1 of 19: 'SetupTFA'.
2023/03/26 12:34:43 CLSRSC-594: Executing installation step 2 of 19: 'ValidateEnv'.
2023/03/26 12:34:43 CLSRSC-594: Executing installation step 3 of 19: 'CheckFirstNode'.
2023/03/26 12:34:43 CLSRSC-594: Executing installation step 4 of 19: 'GenSiteGUIDs'.
2023/03/26 12:34:43 CLSRSC-594: Executing installation step 5 of 19: 'SetupOSD'.
Redirecting to /bin/systemctl restart rsyslog.service
2023/03/26 12:34:45 CLSRSC-594: Executing installation step 6 of 19: 'CheckCRSConfig'.
2023/03/26 12:34:46 CLSRSC-594: Executing installation step 7 of 19: 'SetupLocalGPNP'.
2023/03/26 12:34:47 CLSRSC-594: Executing installation step 8 of 19: 'CreateRootCert'.
2023/03/26 12:34:47 CLSRSC-594: Executing installation step 9 of 19: 'ConfigOLR'.
2023/03/26 12:34:51 CLSRSC-594: Executing installation step 10 of 19: 'ConfigCHMOS'.
2023/03/26 12:34:51 CLSRSC-594: Executing installation step 11 of 19: 'CreateOHASD'.
2023/03/26 12:34:52 CLSRSC-594: Executing installation step 12 of 19: 'ConfigOHASD'.
2023/03/26 12:34:55 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'
2023/03/26 12:35:59 CLSRSC-4002: Successfully installed Oracle Trace File Analyzer (TFA) Collector.
2023/03/26 12:39:46 CLSRSC-594: Executing installation step 13 of 19: 'InstallAFD'.
2023/03/26 12:43:02 CLSRSC-594: Executing installation step 14 of 19: 'InstallACFS'.
2023/03/26 12:46:23 CLSRSC-594: Executing installation step 15 of 19: 'InstallKA'.
2023/03/26 12:46:24 CLSRSC-594: Executing installation step 16 of 19: 'InitConfig'.
2023/03/26 12:46:31 CLSRSC-594: Executing installation step 17 of 19: 'StartCluster'.
2023/03/26 12:47:31 CLSRSC-343: Successfully started Oracle Clusterware stack
2023/03/26 12:47:31 CLSRSC-594: Executing installation step 18 of 19: 'ConfigNode'.
clscfg: EXISTING configuration version 19 detected.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
2023/03/26 12:47:46 CLSRSC-594: Executing installation step 19 of 19: 'PostConfig'.
2023/03/26 12:48:10 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded
Error 4 opening dom ASM/Self in 0x55bf1d0
Domain name to open is ASM/Self 
Error 4 opening dom ASM/Self in 0x55bf1d0

インストールが完了したら、追加したノードのgridユーザの.bash_profileへの環境変数の設定を行っておく。

umask 022
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.0.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=+ASM3
export LANG=ja_JP.UTF-8
export NLS_LANG=Japanese_Japan.AL32UTF8

Databaseを新規ノードに展開

既存ノードの ORACLE_HOME/addnode ディレクトリから、addnode.sh スクリプトを実行する。

$ $ORACLE_HOME/addnode/addnode.sh

こちらもGI側と同様、以下のようにINS-06003 でSSH接続がエラーになる場合がある。

oracleユーザに関しても、gridユーザと同じように事前に等価設定が必要。

追加するノードのoracleユーザでRSAキーペアを作成する。passphrase を聞かれるが、何も入力せずEnter。

$ mkdir ~/.ssh 
$ chmod 700 ~/.ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa

生成された公開鍵(id_rsa.pub)を既存のノードにコピーする。

(追加するノード → 既存ノード)

scp ~/.ssh/id_rsa.pub oracle@rac19n1.dn.home:/home/oracle/id_rsa.pub.3
scp ~/.ssh/id_rsa.pub oracle@rac19n2.dn.home:/home/oracle/id_rsa.pub.3

既存のノードにはRAC構成時に公開鍵が生成されているので、それを追加するノードにコピーする。

(既存ノード1 → 追加するノード)

scp ~/.ssh/id_rsa.pub oracle@rac19n3.dn.home:/home/oracle/id_rsa.pub.1

(既存ノード2 → 追加するノード)

scp ~/.ssh/id_rsa.pub oracle@rac19n3.dn.home:/home/oracle/id_rsa.pub.2

お互いの authorized_keys に公開鍵を追記する。

(追加するノード)

cat ~/id_rsa.pub.1 ~/id_rsa.pub.2 ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

(既存ノード1,2)

cat ~/id_rsa.pub.3 >> ~/.ssh/authorized_keys

さらに、ドメイン名無しのエントリもauthorized_keysに追加し、パスワードなしで接続できることを確認しておく。

改めて addnode.sh を実行し、SSH接続部分がクリアできることを確認する。

事前チェックは必要に応じて修正を行う。

確認画面で「送信」を押すと、Databaseソフトウェアの展開が始まる。

構成スクリプトの実行画面が表示されたら、画面の指示に従って実行する。

完了画面が出れば終了。画面に指示があるように、追加したノードにインスタンスの追加作業が必要。

追加したノードのoracleユーザの.bash_profileへの環境変数の設定を行っておく。

umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export LANG=ja_JP.UTF-8
export NLS_LANG=Japanese_Japan.AL32UTF8
export ORACLE_SID=db193

新規ノードへのインスタンスの追加

既存ノードからDatabase Configuration Assistant(dbca)を起動して、新しいノードにインスタンスを追加する。

ポリシー管理データベースの場合、この手順は不要。

サーバープールの最大サイズを変更することで、追加したサーバでインスタンスが起動するようになる。

$ srvctl modify srvpool -serverpool サーバプール名 -max 3

「Oracle RACデータベース・インスタンスの管理」を選択する。

「インスタンスの追加」を選択。

対象のデータベースを選択する。

追加するノードを選択して、インスタンス名も指定する。

サマリー画面で「終了」を押すと、インスタンスの追加が始まる。

これで、RACへのノードの追加作業は完了。

コメント