OSSで構築するNFSクラスタサーバー
[PR]
なぜ今さら、NFSサーバーのようなレガシーなものを? とお考えの方も多いことと思われます。私の考えでは、レガシーなものが今までどおり使えることこそが、パブリッククラウド利用促進の原動力です。リレーショナル・データベースが不要になるでしょうか。ファイルサーバーはどうでしょうか。仕様が多少変わりながらも、末永く利用されるものだと思われます。
ネットワーク
24×365運営、商用利用を視野に入れた場合、冗長化構成が必須となります。SoftLayerでは、既存の技術がそのまま利用可能です。VLAN上のL2通信がブロックされていません。VLANにPortable IP Addressを割り当てれば、VIPも利用可能となります。SoftLayerが標準で用意しているルーター経由でルーティングしなくてもよいということであれば、自由にプライベートIPアドレスを割り振ることもできます。
物理サーバーも利用可能なので、通常のライセンス体系のままで、Oracle RACのサポートが受けられる構成で構築可能です。
【参考】SoftLayer で学ぶ Oracle RAC 入門、ワン・コインの自己投資(その1)
物理サーバーを利用すれば、VMware社のESXiを動かすことも可能です。この自由度こそが、パブリッククラウドに求められていたものであり、私がSoftLayerを一押しする理由です。
閉域ネットワーク
SoftLayerでは、プライベートネットワーク内で利用できるサービスがいろいろと用意されています。NTPを利用するために、インターネット上のサーバーへアクセスする必要はありません。管理コンソールやAPI発行も、プライベートネットワーク内で完結させることができます。Windows Updateやアンチウイルス用のパターン定義ファイル更新もできます。疑似VIP利用のためにインターネット接続が必要となるAWSのような弱点は、持ち合わせていません。パブリッククラウドをセキュアに利用するための基盤が整っています。データベースやファイルサーバーを、閉じたプライベートネットワーク内に配置することができます。
共有ディスク
システムの冗長化を考えた場合には、共有ディスクも必要となります。SoftLayerでは、共有ディスクがサービスとして用意されています。ブロックデバイスとしてはiSCSIが利用可能です。ファイルシステムとしては、NFS、CIFSが利用可能です。
IaaSの部分については、競合他社との競争原理が働き、特にSoftLayerの仮想サーバーは、コストパフォーマンスの良さが光ります。有名どころのパブリッククラウドで実測すれば、その優秀さが際立っています。PaaSの部分は、どのクラウドでも言えることですが、望む仕様と用意されている仕様が合致している場合には、そのお手軽さがとてもうれしいものです。そうでない場合は、IaaS上に独自構築することになります。
IaaS上に共有ディスクを構築しようとした場合、SoftLayerでは、OSとしてQuantaStorを選択可能です。数十TBクラスのストレージが必要な場合や、複数のストレージを束ねたい場合に利用すると便利だと思われます。
本稿では、OSSのDRBDを紹介します。本家Linux Kernelにも組み込まれています。ネットワーク越しのRAID1を実現するソフトウェアと考えていただければよいでしょう。LINBIT社によるオフィシャルサポートが必要な場合は、こちらよりお問い合わせください。
DRBDは、ブロックデバイスです。DRBDの上にファイルシステムを構築し、その上にデータベースを配置すれば、シェアードナッシング型HAクラスタ・データベースを構築可能です。今回は、NFSサーバーがエクスポートする領域として利用します。
DRBDを共有ディスクとするクラスタ構築は、OSSのPacemakerを利用します。専用のリソース・エージェントが用意されています。
構築手順
本稿で紹介する構築方法は、構築スクリプトをGitHubに用意しているので、クラスタの構築としてはとても簡単です。
- CentOS 6.xの最小構成を選ぶ
- Diskを2台以上選ぶ
- 2台のサーバーが同じDisk構成となっていること
- 2台のサーバーが同じVLANを利用すること
- 1Gbps Uplinkを選択する
- SSH Keysを指定する
- Provisioningスクリプトにhttps://raw.githubusercontent.com/pcserver-jp/SoftLayer/master/co6.shを指定する
手順はまず、無料の64 Portable Private IP Addressesを発注します。
SSL VPN等を用意し、プライベートネットワーク内で、SSH Keysに指定した鍵を使い、ユーザーsl-admin(パスワード:sl-admin)で1号機にログインし、パスワード変更後、再ログインします。
設定ファイルを編集(sudo vi /etc/ha.d/param_cluster)します。IPアドレスは、Portable Private IP Addressesから3つ選んで指定してください。ホスト名、ドメイン名を指定します。DRBD_SIZEは、2台目のディスクサイズの80%ほどを指定してください。他は変えなくても動きます。
/etc/ha.d/mk_nfsserver_for_backupを実行します。再ログイン指示に従い、ログをチェック(sudo tail -n 1000 -f nohup.out)します。完了メッセージが出力されたら、2号機にログインします。この際、sl-adminアカウントにて2号機から1号機にsshでログインできるように、sshエージェントを起動し、秘密鍵を登録し、エージェント転送を有効化してログインします。
2号機では、VIPを引数に指定して同コマンドを実行(/etc/ha.d/mk_nfsserver_for_backup 10.110.88.62)します。再ログイン指示に従い、ログをチェック(sudo tail -n 1000 -f nohup.out)します。完了メッセージが表示されたら構築完了です。同期処理を行いますので、DRBD領域のサイズに応じた時間がかかります。