忘れかけのIT備忘録

今まで学んできた知識や小技、なるほど!と思ったことをメモするブログです。

RACのノード追加・削除検証

RACのノード追加・削除について、机上の知識はあるものの、実務経験が無いため、実際の動きを検証してみました。

■検証環境
OS:Oracle Linux 6.5
GI:Oracle Grid Infrastructure 12c Release 1 (12.1.0.2.0) Enterprise Edition
DB:Oracle Database 12c Release 1 (12.1.0.2.0) Enterprise Edition
※2ノードRAC(管理者管理型DB)

■前提
・SCANを使用しています
DNSサーバはdnsmasqを使用しています

■設定情報

クラスタリソース情報
[root@node1 ~]# /u01/app/12.1.0/grid/bin/crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details      
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.CRS.dg
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.DATA.dg
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.FRA.dg
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.asm
               ONLINE  ONLINE       node1                    Started,STABLE
               ONLINE  ONLINE       node2                    Started,STABLE
ora.net1.network
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.ons
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       node1                    169.254.243.236 192.
                                                                                 168.100.101,STABLE
ora.cvu
      1        ONLINE  ONLINE       node2                    STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       node1                    Open,STABLE
ora.node1.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.node2.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.oc4j
      1        ONLINE  ONLINE       node2                    STABLE
ora.orcl.db
      1        ONLINE  ONLINE       node1                    Open,STABLE
      2        ONLINE  ONLINE       node2                    Open,STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       node1                    STABLE
--------------------------------------------------------------------------------

 

■検証パターン
①ノード3を追加
②ノード3を削除

■検証
①ノード3を追加
2ノードRAC構成にノード3を追加して、3ノードRAC構成にできるか検証します

【検証手順】
1. 追加対象ノード(ノード3)を準備
2. DNSサーバ、ノード1、ノード2のhosts情報修正
3. SSH接続設定
4. CVUでノード3のハードウェア、ネットワークなど要件チェック
5. CVUでノード3の互換性チェック
6. CVUでノード3へGIホーム追加前の事前チェック
7. addnode.shスクリプトでノード3にGIホーム追加
8. CVUでノード3へGIホーム追加後の事後チェック
9. CVUでノード3へRACホーム追加前の事前チェック
10. addnode.shスクリプトでノード3にRACホーム追加
11. DBCAでクラスタデータベース追加

【想定】
3ノードRAC構成で稼働するはず

【検証結果】
3ノードRAC構成で稼働できた

【作業ログ】

1. 追加対象ノード(ノード3)を準備
ネットワーク、OSユーザー、カーネルパラメータなどGIホーム・RACホーム追加前までの必要な情報を設定する

2. DNSサーバ、ノード1、ノード2のhosts情報修正
各サーバの/etc/hostsにノード3のパブリックIP・パブリックVIPを追加する

3. SSH接続設定
3ノード間でパスワードレスでSSH接続できるように接続設定する
※今回はノード1のauthorized_keysをノード3へ転送し、ノード3で生成した秘密鍵・公開鍵ペアの公開鍵をauthorized_keysに追記後、ノード1・2へそれぞれ転送します。3ノード間で共通のauthorized_keysを使用できるようにします

4. CVUでノード3のハードウェア、ネットワークなど要件チェック
[grid@node1 ~]$ cluvfy stage -post hwos -n node3

ハードウェアとオペレーティング・システム設定の事後チェックを実行しています 

ノード到達可能性をチェック中...
ノード"node1"からのノード到達可能性チェックに合格しました


ユーザー等価をチェック中...
ユーザー"grid"のユーザー等価チェックに合格しました

(中略)

ノード"node3"で共有記憶域チェックが失敗しました

名前サービス・スイッチ構成ファイル"/etc/nsswitch.conf"の整合性をチェック中...
名前サービス・スイッチ構成ファイル"/etc/nsswitch.conf"の整合性のチェックに合格しました


ハードウェアとオペレーティング・システム設定の事後チェックはすべてのノードで失敗しました。 
★失敗で終了していますが、いったんこのまま進めます
 原因は後日調査してみようと思います(CVUQDISK関係?)

5. CVUでノード3の互換性チェック
[grid@node1 ~]$ cluvfy comp peer -n node3

ピア互換性を検証中 

ピア互換性をチェック中...

ピア比較: 物理メモリー 
  ノード名                                  ステータス                   
  ------------------------------------  ------------------------
  node3                                 3.8609GB (4048484.0KB)  

(中略)

  ノード名                                  ステータス                   
  ------------------------------------  ------------------------
  node3                                 libaio-devel-0.3.107-10.el6 (x86_64)

ピア比較: "nfs-utils"のパッケージの存在 
  ノード名                                  ステータス                   
  ------------------------------------  ------------------------
  node3                                 nfs-utils-1.2.3-39.el6  

ピア互換性の検証に成功しました。

6. CVUでノード3へGIホーム追加前の事前チェック
[grid@node1 ~]$ cluvfy stage -pre nodeadd -n node3 -fixup

ノードの追加の事前チェックを実行しています 

ノード到達可能性をチェック中...
ノード"node1"からのノード到達可能性チェックに合格しました


ユーザー等価をチェック中...
ユーザー"grid"のユーザー等価チェックに合格しました
"cvuqdisk"のパッケージの存在チェックに合格しました

(中略)

"/etc/resolv.conf"のすべてのサーバーからのDNSレスポンスをチェックしています

ファイル"/etc/resolv.conf"の整合性のチェックに失敗しました


名前サービス・スイッチ構成ファイル"/etc/nsswitch.conf"の整合性をチェック中...
名前サービス・スイッチ構成ファイル"/etc/nsswitch.conf"の整合性のチェックに合格しました


ノードの追加の事前チェックはすべてのノードで失敗しました。 
******************************************************************************************
このセッションで修正するように選択された修正可能な前提条件のリストは、次のとおりです
******************************************************************************************

------------                  ----------          ----------          
チェックが失敗しました。                  ノードで失敗しました          再起動が必要ですか。          
------------                  ----------          ----------          
パッケージ: cvuqdisk-1.0.9-1       node3               いいえ                 
OSカーネル・パラメータ: panic_on_oops   node3               いいえ                 

ノード"node3"でrootユーザーとして"/home/grid/tmp/CVU_12.1.0.2.0_grid/runfixup.sh"を実行し、修正操作を手動で実行します
ノード"node3"で"/home/grid/tmp/CVU_12.1.0.2.0_grid/runfixup.sh"の実行が完了したら、[ENTER]キーを押して続行します

修正: パッケージ: cvuqdisk-1.0.9-1
該当するすべてのノードで、"パッケージ: cvuqdisk-1.0.9-1"は正常に修正されました
修正: OSカーネル・パラメータ: panic_on_oops
該当するすべてのノードで、"OSカーネル・パラメータ: panic_on_oops"は正常に修正されました
★ノード3で修正スクリプト(/home/grid/tmp/CVU_12.1.0.2.0_grid/runfixup.sh)を実行します

7. addnode.shスクリプトでノード3にGIホーム追加
[grid@node1 ~]$ cd /u01/app/12.1.0/grid/addnode
[grid@node1 addnode]$ ./addnode.sh -silent "CLUSTER_NEW_NODES={node3}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={node3-vip}"
Oracle Universal Installerを起動中です...

一時領域の確認中: 120MBを超えている必要があります.   実際 11392MB    問題なし
スワップ領域の確認中: 150MBを超えている必要があります.   実際 3397MB    問題なし
[FATAL] [INS-30160] addnode操作用に指定したノード[node3]のインベントリがクリーンアップされていないことがインストーラにより検出されました。
   アクション: addnode手順を実行する前に、インベントリの場所/u01/app/oraInventoryがクリーンアップされていることを確認してください。
事前にoraInventoryがあると失敗するみたいなので、oraInventoryを削除して再実行しました

[grid@node1 addnode]$ ./addnode.sh -silent "CLUSTER_NEW_NODES={node3}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={node3-vip}"
Oracle Universal Installerを起動中です...

一時領域の確認中: 120MBを超えている必要があります.   実際 11392MB    問題なし
スワップ領域の確認中: 150MBを超えている必要があります.   実際 3397MB    問題なし
[FATAL] [INS-13013] ターゲット環境は、いくつかの必須要件を満たしていません。
   原因: 一部の必須前提条件が満たされていません。詳細はログを参照してください。/u01/app/oraInventory/logs/addNodeActions2022-09-08_02-16-28PM.log
   アクション: ログから失敗した前提条件チェックのリストを確認します: /u01/app/oraInventory/logs/addNodeActions2022-09-08_02-16-28PM.log。次に、ログ・ファイルまたはインストレーション・マニュアルのいずれかから、前提条件を満たす適切な構成を見つけ、手動で修正してください。

[grid@node1 addnode]$ tail -n 30 /u01/app/oraInventory/logs/addNodeActions2022-09-08_02-16-28PM.log
INFO: Waiting for completion of background operations
INFO: Completed background operations
INFO: Validating state <performChecks>
INFO: Using default Validator configured in the Action class oracle.install.ivw.crs.action.CRSNodeScalerPrereqAction
INFO: ------------------List of failed Tasks------------------
INFO: *********************************************
INFO: 物理メモリー: これは、システムに少なくとも4GB (4194304.0KB)の合計物理メモリーがあるかどうかをテストする前提条件です。
INFO: Severity:IGNORABLE
INFO: OverallStatus:VERIFICATION_FAILED
INFO: *********************************************
INFO: スワップ・サイズ: これは、十分な合計スワップ領域がシステムで使用可能かどうかをテストする前提条件です。
INFO: Severity:IGNORABLE
INFO: OverallStatus:VERIFICATION_FAILED
INFO: *********************************************
INFO: タスクresolv.confの整合性: このタスクは、ノード全体でのファイル/etc/resolv.confの一貫性をチェックします
INFO: Severity:CRITICAL
INFO: OverallStatus:OPERATION_FAILED
INFO: -----------------End of failed Tasks List----------------
INFO: Adding ExitStatus PREREQUISITES_NOT_MET to the exit status set
SEVERE: [FATAL] [INS-13013] ターゲット環境は、いくつかの必須要件を満たしていません。
   原因: 一部の必須前提条件が満たされていません。詳細はログを参照してください。/u01/app/oraInventory/logs/addNodeActions2022-09-08_02-16-28PM.log
   アクション: ログから失敗した前提条件チェックのリストを確認します: /u01/app/oraInventory/logs/addNodeActions2022-09-08_02-16-28PM.log。次に、ログ・ファイルまたはインストレーション・マニュアルのいずれかから、前提条件を満たす適切な構成を見つけ、手動で修正してください。
INFO: Advice is ABORT
INFO: Adding ExitStatus INVALID_USER_INPUT to the exit status set
INFO: Completed validating state <performChecks>
INFO: Terminating all background operations
INFO: Terminated all background operations
INFO: Finding the most appropriate exit status for the current application
INFO: Exit Status is -3
INFO: Shutdown Oracle Grid Infrastructure 12cリリース1インストーラ
★再実行しましたが、/etc/resolv.confの一貫性チェックでエラー(CRITICAL)になりました
 原因不明ですが同様の事象で悩んでいる人もおり、addnode.shだけ実行してGUIでインストールを進めることができたという事例があったため、本検証も同様の回避策で進めます

[grid@node1 addnode]$ ./addnode.sh
Oracle Universal Installerを起動中です...

一時領域の確認中: 120MBを超えている必要があります.   実際 11390MB    問題なし
スワップ領域の確認中: 150MBを超えている必要があります.   実際 3397MB    問題なし
モニターの確認中: 少なくとも256色表示するよう設定されている必要があります.    実際 16777216    問題なし
このインストール・セッションのログは次の場所にあります:
 /u01/app/oraInventory/logs/addNodeActions2022-09-08_02-19-30PM.log

追加対象のノードを確認後、次へで前提条件チェックが始まります

前提条件チェック結果で「すべて無視」にチェックして次へ

サマリーを確認してインストール

インストールが始まります。途中でノード3でorainstRoot.sh、root.shの実行を求められます。

インストール完了

8. CVUでノード3へGIホーム追加後の事後チェック
[grid@node1 addnode]$ cluvfy stage -post nodeadd -n node3

ノードの追加の事後チェックを実行しています 

ノード到達可能性をチェック中...
ノード"node1"からのノード到達可能性チェックに合格しました


ユーザー等価をチェック中...
ユーザー"grid"のユーザー等価チェックに合格しました

(中略)

CTSSリソースのチェックに合格しました
時間オフセットについてのCTSSの問合せに合格しました

CTSSはアクティブ状態です。すべてのノードでクロック時間オフセットのチェックを続行中...
クロック時間オフセットのチェックに合格しました


Oracle Cluster Time Synchronization Servicesのチェックに合格しました

ノードの追加の事後チェックは成功しました。

9. CVUでノード3へRACホーム追加前の事前チェック
[oracle@node1 addnode]$ cluvfy stage -pre dbinst -n node3 -fixup

データベース・インストールの事前チェックを実行しています 

ノード到達可能性をチェック中...
ノード"node1"からのノード到達可能性チェックに合格しました


ユーザー等価をチェック中...
ユーザー"oracle"のユーザー等価チェックに合格しました

(中略)

/dev/shmは、一時ファイルシステムとしてマウントされていますのチェックを開始中...

/dev/shmは、一時ファイルシステムとしてマウントされていますのチェックに合格しました

Maximum locked memory checkのチェックを開始中...

Maximum locked memory checkのチェックに合格しました

データベース・インストールの事前チェックはすべてのノードで失敗しました。 
******************************************************************************************
このセッションで修正するように選択された修正可能な前提条件のリストは、次のとおりです
******************************************************************************************

------------                  ----------          ----------          
チェックが失敗しました。                  ノードで失敗しました          再起動が必要ですか。          
------------                  ----------          ----------          
Maximum locked memory check   node3               いいえ                 

ノード"node3"でrootユーザーとして"/home/oracle/tmp/CVU_12.1.0.2.0_oracle/runfixup.sh"を実行し、修正操作を手動で実行します
ノード"node3"で"/home/oracle/tmp/CVU_12.1.0.2.0_oracle/runfixup.sh"の実行が完了したら、[ENTER]キーを押して続行します

修正: Maximum locked memory check
該当するすべてのノードで、"Maximum locked memory check"は正常に修正されました
★ノード3で修正スクリプト(/home/oracle/tmp/CVU_12.1.0.2.0_oracle/runfixup.sh)を実行します

10. addnode.shスクリプトでノード3へRACホーム追加
[oracle@node1 addnode]$ cd /u01/app/oracle/product/12.1.0/dbhome_1/addnode
[oracle@node1 addnode]$ ./addnode.sh -silent "CLUSTER_NEW_NODES={node3}"
Oracle Universal Installerを起動中です...

一時領域の確認中: 120MBを超えている必要があります.   実際 11056MB    問題なし
スワップ領域の確認中: 150MBを超えている必要があります.   実際 3344MB    問題なし
[FATAL] [INS-13013] ターゲット環境は、いくつかの必須要件を満たしていません。
   原因: 一部の必須前提条件が満たされていません。詳細はログを参照してください。/u01/app/oraInventory/logs/addNodeActions2022-09-08_02-42-00PM.log
   アクション: ログから失敗した前提条件チェックのリストを確認します: /u01/app/oraInventory/logs/addNodeActions2022-09-08_02-42-00PM.log。次に、ログ・ファイルまたはインストレーション・マニュアルのいずれかから、前提条件を満たす適切な構成を見つけ、手動で修正してください。

[oracle@node1 addnode]$ tail -n 30 /u01/app/oraInventory/logs/addNodeActions2022-09-08_02-42-00PM.log
INFO: *************** End of CVU Error logs ***************
INFO: All forked task are completed at state performChecks
INFO: Completed background operations
INFO: Moved to state <performChecks>
INFO: Waiting for completion of background operations
INFO: Completed background operations
INFO: Validating state <performChecks>
INFO: Using default Validator configured in the Action class oracle.install.ivw.db.action.DBNodeScalerPrereqAction
INFO: ------------------List of failed Tasks------------------
INFO: *********************************************
INFO: スワップ・サイズ: これは、十分な合計スワップ領域がシステムで使用可能かどうかをテストする前提条件です。
INFO: Severity:IGNORABLE
INFO: OverallStatus:VERIFICATION_FAILED
INFO: *********************************************
INFO: タスクresolv.confの整合性: このタスクは、ノード全体でのファイル/etc/resolv.confの一貫性をチェックします
INFO: Severity:CRITICAL
INFO: OverallStatus:OPERATION_FAILED
INFO: -----------------End of failed Tasks List----------------
INFO: Adding ExitStatus PREREQUISITES_NOT_MET to the exit status set
SEVERE: [FATAL] [INS-13013] ターゲット環境は、いくつかの必須要件を満たしていません。
   原因: 一部の必須前提条件が満たされていません。詳細はログを参照してください。/u01/app/oraInventory/logs/addNodeActions2022-09-08_02-42-00PM.log
   アクション: ログから失敗した前提条件チェックのリストを確認します: /u01/app/oraInventory/logs/addNodeActions2022-09-08_02-42-00PM.log。次に、ログ・ファイルまたはインストレーション・マニュアルのいずれかから、前提条件を満たす適切な構成を見つけ、手動で修正してください。
INFO: Advice is ABORT
INFO: Adding ExitStatus INVALID_USER_INPUT to the exit status set
INFO: Completed validating state <performChecks>
INFO: Terminating all background operations
INFO: Terminated all background operations
INFO: Finding the most appropriate exit status for the current application
INFO: Exit Status is -3
INFO: Shutdown Oracle Database 12cリリース1インストーラ
★GIホーム追加時と同様、/etc/resolv.confの一貫性チェックでエラー(CRITICAL)になりました
 ここもaddnode.shだけ実行してGUIでインストールを進めます

[oracle@node1 addnode]$ ./addnode.sh 
Oracle Universal Installerを起動中です...

一時領域の確認中: 120MBを超えている必要があります.   実際 11056MB    問題なし
スワップ領域の確認中: 150MBを超えている必要があります.   実際 3344MB    問題なし
モニターの確認中: 少なくとも256色表示するよう設定されている必要があります.    実際 16777216    問題なし
このインストール・セッションのログは次の場所にあります:
 /u01/app/oraInventory/logs/addNodeActions2022-09-08_02-43-22PM.log

追加対象のノードを確認後、次へで前提条件チェックが始まります

前提条件チェック結果で「すべて無視」にチェックして次へ

サマリーを確認してインストール

インストールが始まります。途中でroot.shの実行が求められます

インストール完了

11. DBCAでクラスタデータベース追加
[oracle@node1 addnode]$ #クラスタデータベースインスタンス
[oracle@node1 addnode]$ /u01/app/oracle/product/12.1.0/dbhome_1/bin/dbca

インスタンス管理」を選択

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

インスタンスを追加するデータベースを選択して次へ

既存インスタンスを確認して次へ

追加対象のインスタンス名とノード名を確認して次へ

サマリーを確認してインスタンス追加

インスタンス追加完了

※DBCAではなく、コマンドでインスタンスを追加することもできます。
./dbca -silent -addInstance -nodelist node3 -gdbname orcl -sysDBAPassword password

ノード3追加後のクラスタリソース情報
[root@node1 ~]# /u01/app/12.1.0/grid/bin/crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.CRS.dg
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
               ONLINE  ONLINE       node3                    STABLE
ora.DATA.dg
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
               ONLINE  ONLINE       node3                    STABLE
ora.FRA.dg
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
               ONLINE  ONLINE       node3                    STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
               ONLINE  ONLINE       node3                    STABLE
ora.asm
               ONLINE  ONLINE       node1                    Started,STABLE
               ONLINE  ONLINE       node2                    Started,STABLE
               ONLINE  ONLINE       node3                    Started,STABLE
ora.net1.network
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
               ONLINE  ONLINE       node3                    STABLE
ora.ons
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
               ONLINE  ONLINE       node3                    STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       node3                    STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       node1                    169.254.243.236 192.
                                                                                 168.100.101,STABLE
ora.cvu
      1        ONLINE  ONLINE       node2                    STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       node1                    Open,STABLE
ora.node1.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.node2.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.node3.vip
      1        ONLINE  ONLINE       node3                    STABLE
ora.oc4j
      1        ONLINE  ONLINE       node2                    STABLE
ora.orcl.db
      1        ONLINE  ONLINE       node1                    Open,STABLE
      2        ONLINE  ONLINE       node2                    Open,STABLE
      3        ONLINE  ONLINE       node3                    Open,STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       node3                    STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       node1                    STABLE
--------------------------------------------------------------------------------

 

■おわりに
ノードの追加は主にスケールアウトとワークロードのスピードアップが目的だと思いますが、通常は事前に要件を見積もってハードウェアを準備するため、ノードを追加する状況は少ないとは思います。

(9/16追記)
ノード削除も検証しようと思いましたが、その前にせっかく奇数ノード(3ノード)あるので先にスプリットブレインの検証をしようと思います。
ノード削除は別記事で書きます。