2021年8月13日金曜日

(その5)Nutanix環境上にLife Keeper for Windowsを利用したOracleのHAクラスターを作成する

前回までにデーターベースインスタンスを2台のサーバーでそれぞれ作成をしました。

今回は、より調整事項やLifeKeeperでOracleインスタンスを管理するための細かい設定に入っていきます。

22.権限設定

1号機でデーターベースインスタンスを作成後、作成したDBFやCTLファイルといった共有ドライブに作成されたファイルを全て削除し、2号機で1号機で作成したパラメーターと揃えて再び共有ドライブにデーターベースを作成しました。

この2号機で作成したデーターベースファイルを1号機でもマウントし、正常に稼動させる必要があります。

まずは、現在2号機で稼動しているOracle系の全てのサービスを停止します。


LifeKeeperの管理画面で現在2号機がアクティブになっているのを、1号機をアクティブに変更します。


切り替えると「ORACLE19C-LK01」がアクティブになります。


では、1号機でOralceのインスタンスとリスナーのサービスを起動してみます。


Oracleのインスタンスが起動したら、SQLPlusで、OS認証を使ってログインします。
ここで試しに、「alter database open」コマンドを実行し、データーベースがオープンされているかを確認しておきます。こちらの画面では正常にOpenされていることが分ります。


この際にうまくデーターベースがOpen出来ないケースがあります。これは、Workgroup特有で起きる事象なのですが、1号機のoracleユーザーで作成後、2号機のoracleユーザーで再度インスタンスを再作成したため、ADではなく、Workgroupの場合、1号機と2号機で同じoracleユーザーであってもアカウントが別物であるため、2号機で再作成した後、1号機のoracleユーザーで権限が正常に設定されていないことがあります。
この場合は、Oドライブ及びPドライブを1号機で開き、oracleユーザーに対して権限を付与し、1号機、2号機のどちらのoracleユーザーでもアクセスできるようにすることで対応します。

▼Oドライブのデーターベースファイルが格納される場所に、「oracle」ユーザーのフルコントロールが必要


1号機でうまく動作しなかった場合、権限付与後再度Oracleのインスタンスサービスを再起動し、正常にデーターベースが起動したことを確認して下さい。


23.PDBの自動起動(任意)

今回コンテナデーターベースで作成をしています。フェールオーバーした際にコンテナデーターベースを手動で起動するは面倒ですので、自動起動するように設定を入れます。

具体的には以下の手順で行います。

sqlplus / as sysdba
alter pluggable databse pdb open;
alter pluggable databse all save state;


これで、フェールオーバー時もPDBも自動で起動できるようになりました。


24.リスナーの設定

LifeKeepeerの仕様で、リスナー名とSID名が同一である必要があるという仕様条件があります。現在はLISTENERという名称でリスナーができているため、リスナー名をORACLE_SIDと同じORCLに変更します。

この作業は、2台のサーバーそれぞれで2台とも行ってください。

まずNet Configuration Assistantを起動します。


ウィザードに従いリスナーの削除・追加を行います。







これで既存リスナーは削除されました。続いて新しいリスナーを作成します。


ここでは、リスナー名はORACLE_SIDと同じ名称にします。
Oraclホームユーザーは、Windowsで作成したOracleユーザーのパスワードとなります。






これでLISTNERの作成は完了です。

次にリスナーのリッスンアドレスの設定を行います。

LifeKeeprの資料を見ると、Oracleのリスナーで設定するIPアドレスは、LifeKeeperが提供する”仮想IP"を指定する必要があると記載されています。

しかし、Windows版のOracleの場合、リスナー名をホスト名しないと動作せず、IPアドレスで記載をした場合は、正常にリッスン出来ません。

▼tnsnames.oraのホストをLifeKeeperの仮想IPにした場合


▼「lsnrctl status」でリスナー状態を見たとき


▼tnsnames.oraを本来のホスト名で設定した場合

▼正常にリッスンしている


このことから、Windows版のOracleの場合、ホスト名でないと正しくLISTENERでリッスンしてくれないようです。一方で、LifeKeeperのOracleResourceKitを利用する場合、VIPのみをLISTENERで認識させるようにしないと、正常に動作しません。

そのため、hostsファイルに仮想のホスト名を付与し、そこにLifeKeeperで設定した仮想IPを付与することで、明示的にホスト名からVIPを割り出すようにさせます。

hostsファイルは2台のサーバーそれぞれで2台とも行って下さい。

編集ファイル「C:\Windows\System32\Drivers\etc\hosts」


この上で、listner.oraファイルもリッスンホストをこの仮想ホスト名にします。

listener.oraの変更は、2台のサーバーそれぞれで、2台とも行って下さい。

編集ファイル「%ORACLE_HOME%\network\admin\listener.ora」
(この場合は、d:\app\oracle\product\19.0.0\dbhome_1\network\admin\listener.ora)


このセッテを行った後、LifeKeeperのアクティブ系のホスト(この場合ORACLE19C-LK01)のリスナーを再起動し、「lsnrctl status」コマンドやOracle Net Configuration Assistantなどを利用し、正常にリッスン・接続できることを確認します。

正常に接続できたことを確認した上で、スタンバイ機に切り替え、再度Oracleインスタンスとリスナーを起動します。



切り替えてアクティブになったマシンで、再度Oracleサービスを起動し、Oracle Net Configuration Assistantなどを利用し、正常に接続できることを確認します。


これでLISTENERの設定は完了です。


24.OracleサービスをLifeKeeperで保護する

最後に、LifeKeeperでOracleサービスを保護する設定を入れます。

現在2号機がアクティブになっていますので、1号機をアクティブに切り替えます。(Oracleサービスをすべて停止したうえで1号機への切り替えを行ってください

切り替え完了後、1号機のLifeKeeperの管理画面からツールバーからリソース追加のボタンをクリックします。



プライマリは「ORACLE19C-LK01」、スタンバイは「ORACLE19C-LK02」で設定します。


保護するアプリケーションで「Oracle」を選択します。


ORACLE_HOMEを選択します。


SIDを選択します(今回はORCL)


Oracleの管理者ユーザーを入力します。(SYSTEMユーザー)


SYSTEMアカウントのパスワードを設定します。(今回は、Nutanix4u-)


オプショナルサービスが出てきますので、ScheduleORCLを選択し次に進みます。


タグ名称(表示名)の設定が表示されます。今回はSIDであるORCLのまま次に進みます。


Succesfullyになっていることを確認し次に進みます。

拡張前スクリプトもSuccessfulであることを確認し次に進みます。もしここでエラーになる場合、スタンバイクラスターのリスナー名がORACLE_SIDと同じになっているかを今一度確認します。


優先度の設定はデフォルトのまま次に進めます


設定が行われます。completedになっていることを確認し、終了します。


これでクラスターの作成は完了しました。仮想IPアドレスに紐づけていた、OドライブとPドライブがOracleインスタンスはいかにも紐づいてしまっているため、仮想IPアドレスからOドライブとPドライブの依存関係を解除します。
まず、仮想IPである「192.168.32.95」を右クリックし、依存関係の削除をクリックします。


依存関係を削除するサーバーを選択します。ここでは、サーバー「ORACLE19C-LK01」を選択し、次に進めます。


まずPドライブを依存関係から外します。


依存関係を削除します。


Successfulになっていることを確認し、完了します。


同様にOドライブも同じ操作で、依存関係を削除して下さい。
依存関係の削除が完了するとLifeKeeperの設定は以下の通りとなります。


これでLifeKeeperの設定は完了です。

クライアントから、LifeKeeprで接続した仮想IPでTNS接続識別子を作成後、アクティブになっているホストでoracle.exeを強制終了させたり、ホストを強制的にストップするなどして、クライアントから正常にOracleインスタンスに接続が出来るかのテストおをこないましょう。


次回は、LifeKeeperを稼動させるための諸設定をご紹介します。






0 件のコメント:

コメントを投稿