NFSサーバのクラスタ化
クラスタ化の概要
NFSサーバは、LinuxやUnixなどで使われるネットワーク共有のファイルシステムで、複数のサーバから同じファイルを共有することができます。近年は、ロードバランサーなどと組み合わせ、大規模なWEBシステムやメールシステムの構築でも利用されています。
NFSサーバを冗長化しないと、NFSサーバがシステム内の単一障害点になってしまいます。そのため、共有ファイルシステムを構築する時は、冗長性を確保することがとても大切です。
NFSの仕組みは、LinuxやUnixのカーネルに完全に統合されています。そのため、オープンソースの各種クラスタソフトウェアとの相性がとても良いのが特徴です。
クラスタ化のポイント
NFSサーバをクラスタ化する場合には、次のような点を考慮する必要があります。
データ共有の方法
共有ファイルシステムに保管される情報をノード間で共有する必要があります。
NFS情報の共有
NFSサーバは、portmapなどの独特のポート割り当ての仕組みを持っています。また、NFSサーバとクライアントの間のステータス情報も管理しています。そのため、クラスタノード間ではこれらの管理情報を共有する必要があります。
アカウント情報の共有
NFSサーバ上のファイルのアクセス権の管理は、ユーザ番号、グループ番号で行われます。そのため、すべてのNFSクライアントで、同じユーザ情報を共有する必要があります。
データの冗長性
共有ファイルシステムのデータのバックアップや冗長性について考慮する必要があります。
クラスタシステムの構築例
NFSサーバは、HAクラスタの仕組みを使って冗長化できます。性能が要求される場合には、共有ディスクを使ったシステム構成を取ります。しかし、多くのユーザはデータ部分も冗長化する必要があると考えるため、ネットワークミラーリングを採用するケースがほとんどです。
次は、一般的な構成例です。
- 共有データは、外部ディスクなどの大容量ストレージに保管します。
- DRBDを使ってクラスタノード間でミラーリングし、データの冗長性も確保します。
- ユーザ、パスワードなどのユーザ管理情報は、LDAPサーバを使って管理します。
- クライアントでは、NSS-LDAPなどの機能を使って、ユーザ情報を共有します。
OSSでクラスタ化するメリット
NFSサーバとしては、アプライアンス型のサーバが販売されています。NFSサーバ製品はチューニングが十分に行われていて、高速に動作するのが特徴です。しかし、一般的に、大きなディスク容量を確保する製品が多く、比較的高価である、というデメリットがあります。冗長構成を取ることができる製品は、さらに高価です。
これに対して、OSSを使ってNFSサーバをクラスタ化すると、次のようなメリットがあります。
コスト最適化ができる
IAサーバを使うことができるため、必要なディスク容量に合わせてシステムを組むことが可能です。
データの冗長性を容易に確保できる
ネットワークミラーリングを使えば、データの冗長性も容易に確保することができます。
安定性が高い
NFSは、Linuxカーネルがネイティブでサポートしているため、OSSとの親和性も高く、クラスタ化しても極めて安定して動作をします。
ベンダーロックインしない
完全にオープンな技術だけを使って動作します。NFSベンダーの製品戦略に左右されず、安定して使い続けることができます。
クラスタ化の注意事項
NFSクラスタは、システム全体のボトルネックになりやすいシステムです。そのため、次のような点に十分に注意する必要があります。
- 必要なディスク容量だけを確保
ディスクが大きいと、障害時にファイルシステムチェックなどが発生した場合のリカバリに時間がかかる可能性があります。 - チューニングが必要
大規模なシステムに適用するには、NFSの各種パラメータのチューニングが必要です。構築をベンダーに依頼する場合には、チューニングも含めて実施してもらえるかを確認します。 - スプリットブレイン
スプリットブレインが発生すると、データの復旧が難しくなります。そのため、スプリットブレインの対策を行う必要があります。