DBサーバ構築 1(全体構成)

3層Webシステム

DBサーバ構成

全体構成

一般的なオンラインWebシステムでは「アプリケーション・サーバの処理能力 < DBサーバの処理能力」ではないかと思います。構築予定のアプリケーション・サーバは2台なのでDBサーバも2台で十分じゃないの? というところですがノード追加やDBサービスの動作検証をいろいろ試したいのでDBサーバは3台構成です。

ネットワーク

ネットワーク/ポートグループ

Oracle RAC環境ではサービス・ネットワークにあたるパブリック・ネットワークとノード間の通信(インターコネクト)用のプライベート・ネットワークが必要です。また、Data GuardのREDO転送に使用するネットワークも必要ですが、この通信には管理ネットワークを利用します。

ネットワーク用途ポートグループネットワーク・アドレス
管理ネットワーク管理用/DRサイトへのREDO転送Production MG Pub Network172.16.10.0/24
DBネットワーク
(パブリック・ネットワーク)
DB接続Production DB Pub Network192.168.30.0/24
インターコネクト
(プライベート・ネットワーク)
RACノード間通信Production DB Prv Network10.10.20.0/24

ホスト名/IPアドレス

RAC環境ではDBサーバのIPアドレス、DBインスタンス接続用の仮想IPアドレスに加えて3個以上の単一クライアント・アクセス(SCAN)用IPアドレスが必要です。

DBサーバの各ネットワーク・インターフェースに割り当てるホスト名とIPアドレスの一覧を以下に記載します。

ネットワークDBサーバ#1DBサーバ#2DBサーバ#3
ホスト名(system)prsdb01.exsample.lanprsdb02.exsample.lanprsdb03.exsample.lan
管理ネットワークprsdb01-mgt.exsample.lan
172.16.10.21/24
prsdb02-mgt.exsample.lan
172.16.10.22/24
prsdb03-mgt.exsample.lan
172.16.10.23/24
DBネットワークprsdb01.exsample.lan
192.168.30.21/24
prsdb02.exsample.lan
192.168.30.22/24
prsdb03.exsample.lan
192.168.30.23/24
DBネットワークprsdb01-vip.exsample.lan
192.168.30.31/24
prsdb02-vip.exsample.lan
192.168.30.32/24
prsdb03-vip.exsample.lan
192.168.30.33/24
インターコネクトprsdb01-prv.exsample.lan
10.10.20.1/24
prsdb02-prv.exsample.lan
10.10.20.2/24
prsdb03-prv.exsample.lan
10.10.20.3/24
ネットワークSCANIPアドレス
DBネットワークprsscan.exsample.lan192.168.30.121/24
192.168.30.122/24
192.168.30.123/24

名前解決

DNSを使用せずhostsファイルのみを使用してRACを構成することも可能ですが今回はSCANの名前解決にDNS、SCAN以外の名前解決にhostファイルを使用します。なお、DNSにSCANの名前解決を任せる場合はDBサーバのDNS登録も必要です。

ハードウェア

Oracle 21c「Grid Infrastructureインストレーションおよびアップグレード・ガイド」のインストール・チェックリストに記載されたサーバー構成要件は以下の通りです。

 ・ メモリ(RAM):最小8GB
 ・SWAP:RAM 16GBまでRAMと同じサイズ。RAM 16GB以上は16GB
 ・ソフトウェア・ディスクサイズ :Grid Infrastructure分 12GB以上+DB 10GB以上

DBサーバにはチェックリストの値に少し余裕を持たせてリソースを割り当てます。

設定項目設定値
CPU4
メモリ(RAM)12 GiB
SWAP12 GiB
OSその他100 GB
ソフトウェア用ディスク50 GiB

RAC/DB構成

ASMディスク・グループ

ある程度以上の規模のシステムではストレージの高速バックアップ機能(オールフラッシュ・ストレージではスナップショット)を使用してボリューム・セット単位(=ASMディスク・グループ単位)でDBのバックアップを取得するケースが多いと思います。

今回構築するシステムもこのバックアップ方式を前提にASMのディスク・グループを構成します。

ディスク・グループ用途ASMディスク(仮想ディスク)冗長性合計サイズ
DG01投票ディスク&OCR格納用storage/prsdb/disk001.vmdk(3 GB)
storage/prsdb/disk002.vmdk(3 GB)
storage/prsdb/disk003.vmdk(3 GB)
標準9GB
DG02アーカイブログ格納用storage/prsdb/disk011.vmdk(10 GB)
storage/prsdb/disk012.vmdk(10 GB)
外部20 GB
DG11REDOログ、一時ファイル格納用storage/prsdb/disk101.vmdk(10 GB)
storage/prsdb/disk102.vmdk(10 GB)
外部20 GB
DG21データファイル格納用storage/prsdb/disk201.vmdk(30 GB)
storage/prsdb/disk202.vmdk(30 GB)
外部60 GB

投票ディスク&OCR格納用ディスク・グループ

外部冗長性のディスク・グループでは単一の投票ディスク、標準冗長性のディスク・グループでは最低3個の投票ディスクが作られます。万一投票ディスクが破損するとクラスタ全体が停止してしまうことから投票ディスク、OCR及びメタデータは標準冗長性のディスク・グループに格納します。

なお、標準冗長のディスク・グループに投票ディスクを格納する場合は最低3本のASMディスクが必要です。

アーカイブログ格納用ディスク・グループ

RAC環境のアーカイブログ出力先はすべてのノードからアクセス可能な場所という制約があります。ファイル操作という面では管理サーバのNFSにアーカイブログを出力したいところですが、NFSやネットワークの障害でアーカイブログが出力できなくなるとDB処理も停止してしまいます。そこでアーカイブログの出力先はASMディスク・グループ、アーカイブログ・バックアップの保管場所を管理サーバのNFSとします。

REDOログ、一時ファイル格納用ディスク・グループ

オンライン・バックアップを使用したDBバックアップにリストアの対象外である一時ファイルやREDOログを含めることにはデメリットしかないのでデータファイル格納用のディスク・グループとREDOログ・一時ファイル格納用のディスク・グループを分けて構成します。

データファイル格納用ディスク・グループ

「Oracle Automatic Storage Management 管理者ガイド 21c」によるとディスク・グループあたりの推奨ディスク本数は「アクティブなI/Oパスの少なくとも4倍」となっています。この本数には冗長性その他の前提や具体的な根拠が書かれておらず、HDDのシークに伴うI/O分散を意識したルールのようにも思えます。

ただし、SSDを使用したオールフラッシュ・ストレージでもディスク・グループを複数ディスク(LU)で構成することでI/Oキューや優先コントローラ、I/Oパス分散の効果は見込めるようなので、データファイル格納用ディスク・グループを始めとする各ディスク・グループは投票ディスク&OCR格納用を除きすべて2本のASMディスクで構成します。

【補足】
上に書いた複数LUを使用したディスク・グループ構成の効果は本物のオールフラッシュ・ストレージを使用した場合です。今回構築する環境ではストレージ側ではなく仮想マシン側にディスク共有用のSCSIコントローラを一つ持たせるだけ(最大4個まで実装できるがそこまでやりたくない)、またESXiの仕様上仮想マシンにマルチパスを構成することもできないのでまあ、効果はまったくないかと。それでも複数LUでのディスク・グループ構成としたのはなるべく本物っぽくやりたいからということで。

OSユーザ及びグループ

Grid Infrastructure及びOracle Database用OSアカウントは以下の通りとします。

グループID用途
oinstall1100Oracle製品所有者
asmadmin1101Oracle ASM管理者グループ
asmdba1102ASM用OS DBAグループ
racdba1103OS RAC DBAグループ
dba1104Oracle DB管理者グループ
ユーザ名IDプライマリ・グループ所属グループ用途
grid1100oinstallasmadmin,asmdba,racdba,dbaGrid Infrastructureバイナリ所有者
oracle1101oinstallasmdba,racdba,dbaOracle Databaseバイナリ所有者

DBサービス

DB名及びPDB名

非常に残念なことですがOracle 20c以降、非マルチテナント構成(従来のシングル構成)はサポート対象外となりました。本番DBはマルチテナントで構成します。本番DB名及び本番PDB名は以下の通りです。

DBDB名
本番DB(Production Database)PRDB
本番PDB(Production Pluggable Database)PRPDB

DBサービス

DB構築時に作成されるデフォルト・サービスは管理用に使用するものでありプロパティの変更もできず、「Real Application Clusters管理およびデプロイメント・ガイド」でもRAC環境でアプリケーションのDB接続には使用しないように明記されていることから、本番DBのアプリケーション接続用にDBサービスを追加します。

サービス名用途設定
online_srvオンライン・アプリケーション接続用PDB:prdpdb
優先インスタンス:prddb1,prddb2
フェイルバック:NO
TAFポリシー:BASIC
サービス管理ポリシー:AUTOMATIC
高速アプリケーション通知:TRUE
接続時ロード・バランシング目標:SHORT
フェイルオーバー・タイプ:SESSION
ランタイム・ロード・バランシングの目標:THROUGHPUT
接続リトライ回数:3
再接続試行間の時間遅延(秒):5
batch_srvバッチ・アプリケーション接続用PDB:prdpdb
優先インスタンス:prddb3
使用可能インスタンス:prddb2
フェイルバック:NO
TAFポリシー:BASIC
高速アプリケーション通知:TRUE
フェイルオーバー・タイプ:SESSION
接続リトライ回数:3
再接続試行間の時間遅延(秒):5

ちなみにデフォルト・サービスを使用したDB接続のフェイルオーバー設定はインスタンスが停止した場合は機能しますが、インスタンスが起動している状態でPDBが停止した場合は機能せず、障害ノードに再接続しようとしてエラーになったりします。

ディスク・レイアウト

本番DBのディスク・レイアウトは以下の通りです。ストレージ機能を使用したDBオンライン・バックアップではDG21のASMディスク(disk201、disk202)を対象にスナップショットを取得します。

その他、細かい事項については構築の各段階に記述します。ということで、まずはDBサーバの構築から

参考情報

「DBサーバ構築」を書くにあたり、以下の情報を参考にさせていただきました。

【Device Mapper Multipath】
Device Mapper Multipath の設定 | Red Hat Product Documentation

【Grid Infrastructure】
Oracle Grid Infrastructure Grid Infrastructureインストレーションおよびアップグレード・ガイド 21c for Linux
Oracle ASMストレージに関する考慮事項の確認
Oracle Real Application Clusters Real Application Clusters管理およびデプロイメント・ガイド, 21c
動的データベース・サービスによるワークロード管理
Oracle Real Application Clusters管理およびデプロイメント・ガイド12c リリース1 (12.1)
Oracle Databaseデータベース・インストレーション・ガイド, 21c for Linux
avahi-daemon サービスとは何ですか? これを無効にすることはできますか? – Red Hat Customer Portal
仮想化環境での時間管理入門

また、このページを書くにあたり、ChatGptさんに大変助けていただきました。具体的には以下の事項でご支援いただいています。

  • オールフラッシュ・ストレージのデータ管理及びアクセス制御の仕様的傾向
  • オールフラッシュ・ストレージ主要製品のアクセス制御方法
  • ESXi ゲストOSの仮想ディスクを対象としたストレージ・スナップショットのシミュレート
  • 投票ディスク格納ディスク・グループの冗長性
  • サーバ、クライアントのDB接続役割分担とサーバ・サイドの設定

厚くお礼申し上げます。

コメント

タイトルとURLをコピーしました