LifeKeeperによるデータベースのHAクラスタ化の概要
今回はOracle Database 10gとMySQLを例に、データベース(DB)のHAクラスタ化構成の概要について紹介していく。
まず各ARKによる構築の概要を述べる前に、LifeKeeperによるDBシステムのHAクラスタ化にあたって、事前の留意事項を表1にあげる。
- アプリケーションがすでにインストールされていること
- 監視・切り替え対象のアプリケーションは、LifeKeeperの設定を行う前にインストールされている必要 がある。またLifeKeeperでは、DBの死活監視をクライアントユーティリティから行うため、クライアントコンポーネントもインストールされていな ければならない。
各アプリケーションにおけるサポートするバージョンの最新情報は、Release Notes(http://licensing.steeleye.com/support/docm.php※対象ページ閉鎖)を参照して確認していただきたい。 - データ領域の共有
- DBをHAクラスタ化の対象とする場合、切り替え時に両系のデータ領域が同一であることが必要となる。 LifeKeeperではデータ領域を共有ストレージ上に配置する構成の他に、LifeKeeperのオプションとして用意されているデータレプリケー ション領域への配置やNAS上の領域(オプションのNAS ARKが必要)への配置が可能である。
レスポンスなどの面からは共有ストレージを使用することが望ましいケースも多いが、DBの規模などによっては共有ストレージにかかるコストをかけずに構築を行えることになる。 - 運用を見据えたテスト
- HAクラスタ化の目的は可用性を高める点にある。その観点から、可能な限り構築前に、期待される性能についてテストすることが必要である。
特にDBの場合には長期の運用により肥大化し、レスポンスが劣化することもあるため、可能な限り運用を想定した実データを含む形での稼動テストを行うことを強く推奨する。
MySQL ARKによるMySQLのHAクラスタ化
では早速、MySQLをHAクラスタに組み込むための手順について説明を進める。MySQL ARKではActive-Standby構成とActive-Active構成が可能となっている。
Active-Standby構成
最もシンプルな構成として、データ領域を共有ストレージに置き、設定ファイルとMySQLのバイナリをローカルのファイルシステムに置く構成が考えられる。
切り替えるインスタンスが1つの場合は、各サーバ上にmy.cnfファイルとMySQLのバイナリが配置され、共有ストレージ上にデータ領域が配置されることになる。この構成では関連するリソースがすべて同時に切り替わることになるため、最も制約は少ない。
Active-Active構成
ここでいうActive-Activeとは、保護対象となるDBのインスタンスが複数存在し、それぞれ別サーバ上でアクティブになることが想定されるケースを指している。この構成の留意事項としては以下のような項目が考えられる。
- my.cnfファイルをインスタンスごとに用意し、データ領域上に配置する(HAクラスタに組み込む過程で、 LifeKeeperのGUI上から各インスタンス用のmy.cnfファイルのパスを読み込ませることになる。このとき、my.cnfは各インスタンスの データ領域と同じ場所に配置する)。
- インスタンスごとに異なるポート番号を使用するように指定し、そのいずれもが/etc/servicesファイル内に指定されている。
今回は、Active-Standby構成(図1、表3)を例に、構築手順を説明していく。

図1:MySQLによるActive-Standby構成例
| OS | Red Hat Enterprise Linux AS3.0 |
| MySQLのバージョン | v.4.1.10 |
| LifeKeeperのバージョン | v.5.1.1 |
| MySQL ARKのバージョン | SteelEye-lkSQL-5.1.1-1 |
| My.cnfのパス | /etc/my.cnf |
| MySQLの実行バイナリ | /usr/bin |
| MySQLデータディレクトリ | /mnt/mysqldata/mysql |
MySQLの導入に関する留意事項
MySQLのインストールについては割愛とするが、設定ファイルmy.cnfファイルの記述に関する事項を紹介しておく。
MySQL ARKでは、MySQLの起動時にmy.cnfから必要なパラメータを読み込みその後の制御を行う。そのため、my.cnfファイル内の特定セクションに必須の項目が設定されていることが必須となる。必須となる設定事項は表4の通りである。
- clientセクション
- userおよびpasswordを必ず指定する必要があり、clientセクション自体も必須項目となる。また、LifeKeeperの制御の仕様上ここで指定されたuserに対してはshutdown権限が付与されていなければならない。
- mysqldセクション
- socket、port、pid-file、userの4つを必ず指定する。mysqldセクション自体も必須項目となる。
表4:必須である記載事項