イントロ
今回はOracle RACの仕組みを説明しております。少々複雑な機能になりますが、仕組みをしっかり理解することで最適な設計およびトラブル対応ができるようになりますので、ぜひ理解を深めてもらえればと思います。
Oracle RACとは
Oracle RAC(ラック)とはOracle Real Application Clustersの略で、複数のサーバでひとつのデータベースを構成するクラスタ技術となります。2000年あたりまではActive/Standby方式が主流でDBサーバが故障したらもう一台の待機系DBサーバに切り替える設計がほとんどでしたが、最近ではOracle RACを適用した全ノードActive構成がミッションクリティカルシステムを中心に採用されています。
3台以上のサーバで構成することも可能ですが、理解しやすいように2台構成のサンプル構成図を記載します。
Oracle RACを実装するための構成要素 | 説明 |
Oracle Grid Infrastructure | Oracle RACを導入するための主要なソフトウェアとなります。11g Release 2 よりOracle ClusterwareとOracle ASMが統合されOracle Grid Infrastructure として提供されるようになっています。 |
Oracle Clusterware | Oracle RACのデータベースとアプリケーションのために高可用性とスケーラビリティを実現するプラットフォームを提供するミドルウェアとなります。 |
Oracle ASM | ASMとはAutomatic Storage Managementの略で、Oracle Databaseファイルのボリューム・マネージャ兼ファイル・システムとなります。 |
Shared Storage (共有ストレージ) | データベース・ファイルを配置するストレージ。全インスタンスからアクセス可能な共有ストレージとなります。 |
FC Switch (Fiber Channel Switch) | サーバと共有ストレージの接続のために使用するファイバチャネルスイッチとなります。機器間の結線は光ファイバーを用いることが一般的であり、高速なネットワーク通信を実現しております。 |
L2SW (L2 Switch) | Oracle RACにおいてはインスタンス間で内部通信が発生します。この内部通信のネットワークのことをインターコネクトと言い、L2SWを用いてサーバ間を接続する構成が一般的です。 |
Oracle RAC導入の目的
Oracle RAC導入の目的は可用性および拡張性の向上となります。それぞれ概要を説明いたします。
可用性の向上
Oracle RACを導入することで、インスタンス故障の際の影響を最小限にすることができます。Oracle RACでは複数サーバがすべてActive状態で稼働しているため、インスタンス故障が発生したとしても他のサーバで処理を継続することができるからです。従来のHA構成(Active/Standby構成)だとインスタンス故障時にActiveからStandby側のインスタンスにフェイルオーバしている時間帯は処理を受け付けられませんでしたが、Oracle RACでは処理が継続できるようになっているという点が大きな違いとなります。
故障時のイメージ図を記載します。Database Server#1が故障したとしても、Database Server#2、Database Server#3で処理継続が可能となります。
拡張性の向上
Oracle RACを導入することで、スケールアウトによる拡張性が向上します。従来のHA構成だとCPUやメモリ追加などのスケールアップによる拡張しか選択肢がなく、場合によってはサーバのリプレースが必要でしたが、Oracle RACでは、新規サーバを追加することで既存サーバに大きな変更を加えることなくリソース拡張を実現することができます。
スケールアウトによる拡張のイメージ図を記載します。Database Server#1~#3に大きな変更を加えることなく、Database Server#4を追加することが可能となります。
Oracle Clusterwareの機能
Oracle Clusterwareは、Oracle RACにおける高可用性とスケーラビリティを実現するミドルウェアであり、クラスター構成を実現するための各種管理機能を有しています。Oracle Clusterwareが管理するリソースは、データベース、インスタンス、サービス、リスナー、VIP、アプリケーションプロセスなど多岐にわたっており、これらのリソースをCRS(Cluster Ready Service)リソースと呼んでいます。Oracle Clusterwareは、OCR(Oracle Cluster Registry)に格納されているリソースの構成情報に基づいてCRSを管理しています。
Oracle ASMの機能
Oracle ASMは複数の物理ディスクを束ねて仮想的なストレージプールを作成する仮想化技術を用いており、本仮想化技術を適用することで性能と可用性を向上するとともに、ディスク追加・削除を容易に実現することができます。ASMを適用するためにはデータベース・インスタンスとは別にASMインスタンスを起動させる必要があり、ASMインスタンスにてディスクグループのメタデータ(ディスク、ファイル名、データ・エクステントの場所等)を管理し、データの保存場所が書かれたリストであるエクステントマップををデータベース・インスタンスのSGAに渡す役割があります。
仮想的なストレージプールの名称はASMディスクグループと呼ばれています。各レイヤで意識している物理・論理ディスクを下図に記載します。
Oracle ASMによる性能向上
Oracle ASMを適用してストライピング処理を行うことで、ストレージ、ディスクを並列化して使用することができるためDisk I/Oの性能向上を実現することができます。近年のCPU性能向上に伴いシステムのボトルネックがストレージのDisk I/Oになる傾向が強くなってきていますので、積極的に本技術を適用することを推奨します。
※ASMによるストライピングとストレージのRAID0によるストライピングは異なります。ASMによるストライピングはASMファイル(データファイル)単位で均等にしますが、ストレージのRAID0機能ではASMファイルまで認識して分散させることはできません。したがってストレージのRAID0だけだと結果的にHot spot(読み込み・書き込みの偏り)が生じてしまう可能性があります。
Oracle ASMによる可用性向上
Oracle ASMを適用してミラーリング処理を行うことで、データを二重化、三重化して格納することができ可用性を高めることができます。障害グループという単位で異なるディスクにデータが冗長化されますので、ディスク障害が発生しても継続してデータファイルを使用することができます。ディスクグループ単位でミラーリングの要否を設定できるのが特徴です。
Oracle ASMによるディスク追加・削除
Oracle ASMを適用することで、ディスク追加・削除時のリバランス処理(データ再配置処理)を行うことができます。この機能を用いることで、サービスを停止することなく故障時のデータ配置最適化であったり、ディスク追加によるボリューム拡張を行うことができます。
まとめ
ここまで読んでいただきありがとうございました。Oracle RACの仕組みをご理解いただけたでしょうか。他にもOracle RAC適用時の負荷分散であったり、キャッシュフュージョンという仕組みについても記載しようと思ってますので、そちらも読んでいただけると嬉しいです。
また、Oracle関連の記事をいくつか書いてますので、そちらもぜひご参照ください。
【Oracle】メモリ/ファイルアーキテクチャおよび管理方法についてまとめてみた。
【Oracle】SPFILEに関する情報をまとめてみた。
参考文献
https://www.oracle.com/jp/a/tech/docs/technical-resources/20100225-ord-gridinfrastructure-det.pdf
https://www.oracle.com/technetwork/jp/ondemand/db-technique/d-4-rac11gr2-1448379-ja.pdf
https://www.oracle.com/technetwork/jp/ondemand/database/db-technique/d-5-rac-1484601-ja.pdf
https://www.oracle.com/technetwork/jp/ondemand/db-technique/c-14-asmclusterware-1448430-ja.pdf
https://www.oracle.com/technetwork/jp/ondemand/db-technique/c-14-asmclusterware-1448430-ja.pdf
https://www.oracle.com/jp/a/ocom/docs/jp-db-technight-content/technight05.pdf
コメント