ニフクラ ブログ

ニフクラ/FJ Cloud-Vやクラウドの技術について、エンジニアが語るブログです。

LifeKeeperを使ってニフクラOVM環境でOracleデータベースを冗長化しました

こんにちは、サイオステクノロジーの高正です。

この度、ニフクラOVM環境においてLifeKeeper for Linuxがご利用いただけるようになりましたので、ご紹介させていただきます。

本記事ではニフクラOVM環境におけるHAクラスターシステムを構築する方法の一例をご紹介します。具体的にはLifeKeeperを使ってニフクラOVM環境でOracleデータベースを冗長化した検証内容をご紹介します。なお、OSはOracle Linuxを使用しています。

f:id:mtakasho:20211115160703p:plain
LifeKeeperで2ノードのクラスター構成を構築

※本記事の内容は2021年10月時点のニフクラOVM上で検証した結果に基づいています。将来におけるニフクラおよびLifeKeeperの仕様変更について動作を保証するものではありませんので、HAクラスターシステムを構築する際は、本ブログ記事の内容や、最新のドキュメントを参考に、動作確認を十分に行うようにしてください。

ニフクラOVMの概要

ニフクラOVMは、富士通クラウドテクノロジーズ株式会社が提供するOracle DatabaseライセンスのBYOL(Bring Your Own License)が可能な環境を利用できるサービスです。

f:id:sameshima_fjct:20211117164516g:plain
ニフクラOVM
ニフクラOVMの詳しい内容につきましては、以下の内容をご参照ください。

ニフクラOVM機能紹介ページ

構成情報

LifeKeeperを使って以下の2ノード構成のActive/Standbyクラスターを構築します。

f:id:mtakasho:20211115160703p:plain
システム構成図

今回の検証ではシングルリージョン・シングル構成のサーバーを2台使用します。その2台でDataKeeperを使用してデータレプリケーションをするHAクラスター構成を組みます。ニフクラOVMの構成パターンの詳細につきましてはOVM適用指針をご参照ください。

本検証は以下のサーバータイプ、ソフトウェアでプライマリサーバー・バックアップサーバー両方とも同じバージョンを使用しています。

種類 バージョン
サーバータイプ ovm.medium16
OS Oracle Linux 7.6 (RHCK)
Oracle Oracle 19c 19.3.0.0.0
SIOS Protection Suite for Linux v9.5.1

ニフクラOVM環境の構築と設定

ニフクラの設定

ニフクラOVM上に構築するサーバーに接続するために、ニフクラドに以下を作成する必要があります。

  • プライベートLAN
  • 踏み台サーバー

ニフクラOVM上のサーバーのアップデートやニフクラOVM上にインターネット経由でソフトウェアをインストールするために、以下が必要になります。

  • WebプロキシまたはNATサーバー

それぞれの環境はニフクラのコンソールから作成します。今回作成した環境は以下のとおりです。

f:id:mtakasho:20211101151131p:plain
ニフクラで自動的に生成される構成図

踏み台サーバーの構成は以下のとおりです。

f:id:mtakasho:20211101151206p:plain
踏み台サーバー構成

クライアント端末からSSH接続するために、ファイアウォール(FWJumpHost)の設定でINルールでポート22番を許可します。

f:id:mtakasho:20211101151700p:plain
ファイアウォール(INルール)

OUTルールではすべての通信を許可します。

f:id:mtakasho:20211101151944p:plain
ファイアウォール設定(OUTルール)

NATサーバーはニフクラのルーターの機能を利用してNATサーバーとして構成しています。

f:id:mtakasho:20211101152209p:plain
NATサーバー設定(基本情報)

f:id:mtakasho:20211101152236p:plain
NATサーバー設定(ネットワーク)

f:id:mtakasho:20211101152259p:plain
NATサーバー設定(SNAT)

f:id:mtakasho:20211101152319p:plain
NATサーバー設定(DNAT)

ニフクラOVM内のサーバーからyumを実行するため、DNATでhttp(80)とhttp(443)の通信を許可しています。
ニフクラでのルーターのNATテーブルの詳細については、以下をご参照ください。

クラウドヘルプ(ルーター:NATテーブル作成) | ニフクラ

ニフクラOVMの申請

ニフクラOVM上にHAクラスター用に使用するプライマリサーバーとバックアップサーバーを用意します。以下をご参照のうえ、ニフクラOVMのサーバーを申請をしてください。

クラウド 機能・サービス(ニフクラOVM)| ニフクラ

ニフクラOVM申請時にニフクラOVMのサーバーに接続するネットワーク(ニフクラの設定で作成したプライベートLAN)のIPアドレス(CIDR表記)が必要です。そのため、ニフクラのプライベートLANはニフクラOVMの申請前に作成しておく必要があります。踏み台サーバーやNATサーバーの作成は申請前後のいずれのタイミングで行っても問題ありません。

申請からサーバー作成および引き渡しの手順の詳細は、ニフクラOVMスタートアップガイド(PDF)をご参照ください。 申請が下りると、ニフクラOVMから利用者宛てに初期パスワードがメールで届きます。そのメールの情報をもとに、踏み台サーバーからOVMサーバーにSSH接続できるようになります。

ニフクラOVM内のプライマリサーバーとバックアップサーバーの設定

以降のパートでは2ノードのクラスター構成をセットアップ方法を説明していきます。

f:id:mtakasho:20211115144505p:plain
ニフクラOVM環境のサーバー構成

Oracle Databaseのインストールと設定

プライマリサーバーの増設ディスク内にOracle Databaseをインストールし、増設ディスク内にユーザーデータ・テーブルを作成します。
※プライマリサーバーの専有ディスク内にOracle Databaseをインストールし、ユーザーデータ・テーブルのみ増設ディスク内に配置する構成も可能です。

プライマリサーバーでは増設ディスク/dev/xvdb1をディレクトリ /u01にmountし、/u01にOracle Databaseをインストールしています。Oracle Databaseのインストール、リスナーの設定、Databaseの作成などのOracleのセットアップの詳細につきましては、Oracle社の公式マニュアル等をご参照ください。また、 LifeKeeperのドキュメントでご紹介しているケースがありますので、必要に応じてご参照ください。

LifeKeeperのインストールと設定

LifeKeeperをプライマリサーバー、バックアップサーバーにインストールし、セットアップします。次節以降で本書の検証での設定内容を記載します。

設定項目および手順の詳細につきましてはLifeKeeper for LinuxスタートアップガイドLifeKeeper for Linux Oracle Recovery Kit管理ガイドをご参照ください

コミュニケーションパスの作成

プライベートLANにコミュニケーションパスを作成します。ニフクラOVMのサーバーのシングル構成では、LANは1系統のため、コミュニケーションパスは1本です。なお、プライベートLANはニフクラ内で冗長化されています。

コミュニケーションパスは1本であるため、ニフクラにQuorum Server(tcp_remoteモード)を用意し、コミュニケーションパス切断時のsplit brainによるデータ破壊の問題を対策しています。

Quorum Serverの詳細については、テクニカルドキュメントのQuorum/Witnessの箇所をご参照ください。

Quorum(tcp_remote)の設定

プライマリ・バックアップ両サーバーの /etc/default/LifeKeeperに以下の設定を追加します。

# Setting for Quorum(tcp_remote)
QUORUM_MODE=tcp_remote
QUORUM_HOSTS=172.16.0.5:22 # ニフティクラウド内のQuorumサーバー
WITNESS_MODE=none
QUORUM_TIMEOUT_SECS=20
QUORUM_LOSS_ACTION=fastboot

tcp_remoteモードの場合は、QuorumサーバーにLifeKeeperをインストールする必要はありません。

IPリソースの作成

LifeKeeper GUI管理画面より Create Resource Hierarchy を選択し、IP リソースを作成します。本構成でのリソース作成ウィザードでの設定内容は以下の通りです。

設定項目 設定値
Select Recovery Kits IP
Switchback Type Intelligent
Server プライマリサーバーのホスト名
IP Resource 172.16.0.201
Netmask 255.255.0.0
Network Interface eth0
IP Resource Tag Ip-172.16.0.201

バックアップサーバーへのExtend時の内容は以下の通りです。

設定項目 設定値
Target Server バックアップサーバーを選択
Switchback Type Intelligent
Template Priority 1
Target Priority 10
IP Resource 172.16.0.201
Netmask 255.255.0.0
Network Interface eth0
IP Resource Tag Ip-172.16.0.201

Data Replicationリソースの作成

LifeKeeper GUI管理画面より Create Resource Hierarchy を選択し、Data Replicationリソースを作成します。本構成でのリソース作成ウィザードでの設定内容は以下の通りです。

設定項目 設定値
Select Recovery Kits Data Replication
Switchback Type Intelligent
Server プライマリサーバーのホスト名
Hierarchy Type Replicate Existing Filesystem
Existing Mount Point /u01
DataKeeper Resource Tag datarep-data
Filesystem Resource Tag /u01
Bitmap File /opt/LifeKeeper/bitmap__u01
Enable Asynchronous Replication No(同期モード)

バックアップサーバーへのExtend時の内容は以下の通りです。

設定項目 設定値
Template Server プライマリサーバーを選択
Target to Extend datarep-data
Target Server バックアップサーバーを選択
Switchback Type Intelligent
Template Priority 1
Target Priority 10
Mount Point /u01
Target Disk or Partition /dev/xvdb1
DataKeeper Resource Tag datarep-data
Bitmap File /opt/LifeKeeper/bitmap__u01
Replication Path 172.16.0.10/172.16.0.20
Replication Type Synchronous

Oracleリソース階層の作成

Oralcle DatabeseリソースとOracle Database Listenerリソースを作成します。

Oracle Database Listenerリソース

LifeKeeper管理画面より、 Create Resource Hierarchy を選択し、 Oracle Database Listener リソースを作成します。本構成でのリソース作成ウィザードでの設定内容は以下の通りです。

設定項目 設定値
Select Recovery Kits Oracle Database Listener
Switchback Type Intelligent
Server プライマリサーバーのホスト名
Listener Configuration File Path /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
Listener Name LISTENER
Listener Executable /u01/app/oracle/product/19.3.0/dbhome_1/bin
Listener Protection Level Full Control(Start,Stop,Monitor,&Recover)
Listener Recovery Level Standard,(On)
IP Address Name Ip-172.16.0.201
Listener Tag LSNR.LISTENER

バックアップサーバーへのExtend時の内容は以下の通りです。

設定項目 設定値
Target Server バックアップサーバーのホスト名
Switchback Type Intelligent
Template Priority 1
Target Priority 10
Listener Configuration File Path /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
Listener Executable /u01/app/oracle/product/19.3.0/dbhome_1/bin
Listener Tag LSNR.LISTENER

Oracle Databaseリソース

LifeKeeper管理画面より、 Create Resource Hierarchy を選択し、 Oracle Databaseリソースを作成します。本構成でのリソース作成ウィザードでの設定内容は以下の通りです。

設定項目 設定値
Select Recovery Kits Oracle Database
Switchback Type Intelligent
Server プライマリサーバーのホスト名
Oracle_SID for Database oracle
User Name Oracle
Password パスワード
Filesystem Resource Tag /u01
Select the Oracle Listener LSNR.LISTENER
Database Tag oracle

バックアップサーバーへのExtend時の内容は以下の通りです。

設定項目 設定値
Template Server プライマリサーバーのホスト名
Tag to Extend oracle
Target Server バックアップサーバーのホスト名
Switchback Type Intelligent
Template Priority 1
Target Priority 10
Database Tag Oracle

以下のようなリソース階層となります。

f:id:mtakasho:20211104111034p:plain
LifeKeeper管理画面でリソース階層を参照

リソース階層の図ではサーバーのアイコンが黄色になっています。コミュニケーションパスが1系統の場合は黄色で表示されます。 今回の構成では異常を示す表示ではありません。コミュニケーションパスのステータスの詳細については下記のマニュアルをご参照ください。

さらに、GUI の右ペインのサーバアイコンをチェックしてください。これが、作成済みの 1 つ目のコミュニケーションパスである場合は、1 つのコミュニケーションパスが [ALIVE] であるが、冗長コミュニケーションパスがないことを示す黄色のハートビートがサーバアイコンに表示されます。 docs.us.sios.com

LifeKeeperの動作確認

LifeKeeperが期待する動作をするかを確認するため、以下の内容を実施しました。各項目で期待する動作になることを確認しました。

1.システム起動確認
 1.コミュニケーションパスがすべてALIVEである
 2.アクティブノードですべての保護対象がISP(Active)である
 3.アクティブノード上で仮想IPアドレスが起動している
 4.スタンバイノード上で仮想IPアドレスが停止している
 5.アクティブノード上で保護対象の共有ファイルシステムにアクセスできる
 6.スタンバイノード上で共有ファイルシステムにアクセスできない
 7.両ノードでLifeKeeper GUIが起動できる
 8.アクティブノード上でOracle Databaseのサービスが起動している
 9.スタンバイノード上でOracle Databaseのサービスが停止している

2.LifeKeeper停止、起動確認
 1.コマンドを実行してLifeKeeperのサービスと保護サービスが正常に停止する
 2.コマンドを実行してLifeKeeperのサービスと保護サービスが正常に起動する

3.ノード停止ならびにスイッチオーバー確認
 1.スタンバイノードを停止し、アクティブノード側の保護サービスの動作に影響を及ぼさない
 2.アクティブノードからスタンバイノードにスイッチオーバーできて、保護サービスが正常に動作する
 3.アクティブノードを正常にシャットダウン後、スタンバイノードにフェイルオーバーが発生しない

4.コミュニケーションパス切断確認
 1.コミュニケーションパスの通信障害を発生さえ、通信障害が発生した状態のままサービスが継続する
 2.通信障害が解消がされたとき(今回の検証では切断したNICの再接続)、コミュニケーションパスの状態が回復する

5.アプリケーションリソース障害時のフェイルオーバー確認
 1.アクティブノードでOracle Databaseのサービスに疑似障害を発生させ、スタンバイノードにフェイルオーバーする
 2.フェイルオーバー先のスタンバイノードのOracle Databaseに対し、SQLクエリーを発行し正常な応答が得られる
 3.フェイルオーバー元のアクティブノードでOracle Databaseのサービスが停止している

6.ノード障害によるフェイルオーバー確認
 1.アクティブノード側の電源を強制的に停止する
 2.スタンバイノードがアクティブノードの障害を検知しスタンバイノードへリソースがフェイルオーバーする
 3.フェイルオーバー先のスタンバイノードで正常に保護サービスが動作する
 4.フェイルオーバ元のアクティブノードが再起動後にLifeKeeperサービスが正常に起動している

まとめ

今回はニフクラOVM環境でSIOS Protection Suite for Linux(LifeKeeperとDataKeeperがセットになった製品)を使ったOracleのレプリケーション構成についてご紹介しました。
現時点では検証した構成は1パターンのみですが、今後、状況によっては構成パターンが増える可能性はあります。

ニフクラOVMにOracleの移行やOracleの新規導入を考えている方は是非ご利用をご検討ください。

参考情報

本記事の元になっている検証レポートは動作検証済みクラウド|サイオステクノロジー株式会社 のニフクラOVMのリンクから入手できます。検証レポートも合わせてご参照ください。