※ 本記事は、Philippe Fierensによる”More than Just Redundant Hardware: Exadata MAA and HA Explained part I, the compute node“を翻訳したものです。
2024年4月9日
前のブログ記事では、Oracle Exadataが提供する世界クラスの可用性(HA)を取得するために、冗長コンポーネントを持つだけにとどまらないことを説明しました。
この記事では、Exadataがコンポーネント・レベルでコンピュート・ノードにもたらす機能について詳しく説明します。
コンピュート・ノードは、オペレーティング・システム(ベアメタルまたは仮想化)を実行し、最終的にはデータベースを実行します。

コンピュート・ノードは様々なコンポーネントで構成されます。
- オペレーティングシステムまたはハイパーバイザとVM、Oracleバイナリなどを含む、2つまたはオプションで4つのNVMEフラッシュドライブ
- 最大3TBのRAM
- 2 CPU
- RDMAネットワークファブリックへの接続を提供するホストチャネルアダプタ
これらの強調表示されたコンポーネントを1つずつ調べて、Exadataの違いを示します。
まずは基本から始めましょう。
ミラー化されたフラッシュ・ドライブのいずれかで障害が発生した場合はどうなりますか?
組込みRAIDがカバーされています。さらに、システムをオフにせずにNVMEフラッシュドライブを変更できます。NVMEフラッシュドライブはホットプラグ対応です。
コンピュート上(およびExadata Storageサーバー上)で実行されている管理サービス(MS)は、障害を警告を出し、交換時に通知します。
デッドデバイスは最も簡単なケースです。問題があるデバイスが、継続的に問題を示していないが断続的に問題を示しているときは、より困難です。
問題があるフラッシュドライブやファイルシステムが一杯になったり、破損した場合はどうなりますか? Exadataはこの問題点をどのように解決しますか。
Exadataには、防止、検出および修復を行うためのソフトウェア・エンジニアリングが多数のレイヤーにまたがっています。たとえば、Clusterware Synchronisation Service (CSS)クラスタウェア・プロセスはマルチスレッドで、2つのスレッドはファイルシステムに診断データを書き出す責任を負い、他のスレッドはCSSの中核的な責任を負います。ノード・モニタリングとグループ・メンバーシップは、これらのスレッドは独自のビジネスを念頭に置いており、干渉しません。
フラッシュ・ディスクには予測障害機能があり、特定のしきい値が満たされると事前に失敗します。
管理サービスは、領域の問題について警告するだけでなく、誰が領域を満たしているかを通知し、それ自体の後にクリーンアップします。
メモリーの場合はどうでしょうか。Exadata以外のシステムと同様に、修正不可能なエラーが発生した場合、Exadataは再起動しますか。
メモリーの破損/修正不可能なエラーの影響を受けるプロセスのみが影響を受け、SIGBUSを受信して強制終了されます。
それに加えて、管理サービスはアラートを送信します。
組み込みのSMART Integrated Lights Out Management (Ilom)機能は、修正可能で修正不可能なエラーを追跡し、事前定義されたしきい値に基づいて交換用のメモリーにフラグを付けます。
Exadataでは、どのようにしてメモリーが最適に使用されていることを確認しますか?
ここでも、ハードウェアとソフトウェアの緊密な統合によって違いが生じます。
管理サービスでは、一般的なメモリー使用量が高すぎる場合に警告しますが、個々のプロセスに対しても警告します。
Oracle Exadata Deployment Assistant (OEDA)を使用してExadataに作成されたOracle Databasesでは、デフォルトでhugepagesが強制されます。
hugepagesはOSレベルで予約されており、データベースはhugepagesを使用する必要があります。hugepagesを使用すると、パフォーマンスが向上するだけでなく、可用性も大幅に向上します。
お客様がhugepagesを有効にすることを忘れないように、Exachkはこれを確認し、オーバーサブスクリプションやその他の多くのベスト・プラクティスも確認します。
紹介ブログの投稿で説明したExachkは、Autonomous Health Framework (AHF)の一部であり、Exadataのベスト・プラクティスがバンドルされています。
データベース・サービス・アプリケーションが適切な数のコアを使用していることを確認する方法と、必要に応じてこれを簡単に変更する方法を教えてください
Exadataは、Exadataデータベース・サーバーのアクティブ・コアの数を減らし、初期ソフトウェア・ライセンス・コストを削減するために、Capacity on Demandを提供しています。Resource Managementとインスタンス・ケージングを使用すると、CPUのオーバーサブスクリプションを回避できます。Exadataでは、動的CPUスケーリングを実行し、仮想マシンに割り当てられたvCPUsの数をその場で変更することもできます。
ここまでの項では個々のコンポーネントについて説明していますが、Exadataではこれをシステム・レベルでどのように処理しますか。また、メジャー・バージョンのシステム・ソフトウェア更新をどのように処理しますか。
クラスタ・リソースは、障害発生時に自動的に再起動されます。
従来のシステムではソフトウェアを使用し、到達不可能なノードを検出するためにTCPタイムアウトに依存するため、システムの負荷が大きい場合に予期しない結果が発生する可能性があります。
Exadata with Instant Failure Detection (IFD)では、頻繁なRDMAハートビート・メッセージが送信されます。RDMAはハードウェアを使用するため、システムの負荷が高い場合にも機能します。これにより、数分ではなく数秒でノードが削除され、スプリットブレインの状況を回避できます。
以前のLinuxバージョンを新しいメジャー・バージョンにインプレース・アップグレードしようとしたことがある場合は、これがどれほど難しく、どれだけテストを適切に行う必要があるかがわかります。Exadataシステムは、Oracle Enterprise Linux(OEL)に同梱されています。Exadataシステムに何がインストールされているかを正確に把握しているため、将来のメジャー・バージョンにシームレスにアップグレードできます。Exadataバージョン23.1では、Oracle Enterprise Linux 8.7およびUEK6カーネルへのアップグレードがすべて、再インストールされません。UEK6カーネルはExadata用に高度に最適化されています。詳細はこちらの記事をご覧ください。
一般的なベスト・プラクティスとして、これを十分に繰り返すことはできません。カスタム・データベース・サービスを作成することが不可欠です。アプリケーションは、高可用性機能(FAN、ドレインおよびアプリケーション・コンティニュイティ)を使用するには、サービスに接続する必要があります。デフォルトのデータベース・サービスまたはデフォルトのPDBサービスにはできません。Exadataでは、RHPhelperによってドレイン接続が調整されます。
MAAアプリケーションのチェックリストおよび高可用性の概要とベスト・プラクティスに示されているガイドラインに従ってください。
参考
本シリーズの記事
冗長ハードウェアだけではない : Exadata MAA および HA の説明 – はじめに
