IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウド時代のオープンソース実践活用

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第19回 GlusterFSとCTDBで作るスケールアウト・ファイルサーバ (中井悦司) 2013年5月

はじめに

 前回に引き続き、今回もGlusterFSの話題をお届けします。そして、この話題には、またまた裏話があります。前回、LinuxCon Japan 2103の開催に合わせて、「GlusterFS Community Manager」のJohn Markが来日するという話をしました。実は、このイベントでは「Gluster Workshop」という一日コースが用意されており、そこでは、GlusterFSに関するさまざまなプレゼンが行われるという趣向になっています。

 そして、再び、Johnからメールが届きました。「よかったらGluster Workshopで何か発表しない?」―― はい。Community Managerのお誘いを断るわけにはいきません・・・。LinuxConは開発者向けのイベントと言う事もあり、何をテーマにしようかしばし悩んだのですが、「どうせなら一般ユーザも楽しめるものを」ということで決めたのが、Sambaファイルサーバでした。

SambaとGlusterFSの連携

 分散ファイルシステムのGlusterFSとSambaファイルサーバの関係と言われてもピンと来ないかも知れませんが、実は「クラスタ構成のSambaファイルサーバ」というのは以前からありました。図1のように、GFS2などの共有ファイルシステムを利用して、複数のLinuxサーバ上で共有ストレージ上のファイルシステムを同時にマウントしておき、その内容をそれぞれのLinux上のSambaで共有フォルダとして公開するのです。

 これで、Windowsクライアントからは、どのSambaサーバに接続しても同じ共有フォルダを利用することができます。多数のWindowsクライアントからのアクセスを複数のSambaサーバで負荷分散しようというわけです。

fig01

図1 複数Sambaサーバによる負荷分散構成

 ただし、この場合、バックエンドにあるストレージ装置は1つしかありませんので、ストレージ装置の性能が限界になると、それ以上Sambaサーバを増やしても意味がなくなります。大量のクライアントからのアクセスをさばくには、高性能なハイエンドストレージが必要になります。

 そこで登場するのが、GlusterFSです。GlusterFSであれば、複数サーバのローカルディスクを論理的に結合して、1つのボリューム(ファイルシステム)として見せることができますので、共有ストレージの性能限界を気にする必要がなくなります。図2のように、GlusterFSを構成するストレージノード上で、ボリュームをローカルマウントしておき、それを同じノード上のSambaで公開する形になります。

fig02

図2 GlusterFSとSambaの組み合わせ構成

 ただし、図1の場合も同じなのですが、普通のSambaサーバをLinux上に構成するだけでは、この後で説明するように、ファイルロックの情報が共有されないという問題が出てきます。これを解決するために考えだされたのが、今回のタイトルにもあるCTDBです。GlusterFS、Samba、そしてCTDBを組み合わせることで、スケールアウト型のSambaファイルサーバが完成することになります。

CTDBの生い立ち

 CTDBは、Clustered TDBの略で、その名の通り、クラスタ仕様に対応したTDBの事です。―― といわれても、TDBが何だか分かりませんね。TDBは、Trivial Databaseの略で、Sambaサーバがさまざまな管理情報を保存するためのバックエンドデータベースです。Sambaの作者であるAndrew Tridgeが、Sambaを作り始めた際に、とにかくシンプルで軽量なデータベースが欲しいということで、独自に作り上げたものです。Sambaのバージョンによって多少の違いがありますが、ユーザのパスワード情報やファイルロックの情報などが格納されます。

 みなさん、Windows PCでファイルサーバ上のエクセルファイルを開いた際に、「XXXは編集のためにロックされています。使用者は'XXXX'です。」という警告のポップアップが開いた経験があると思います。Sambaでは、どのファイルがクライント上で開かれているかという、ファイルロック情報をTDBに保存することで、このような警告の表示機能に対応しています。

 ところが、図1や図2のように複数のSambaサーバを使用する場合、各サーバのローカルにあるTDBに情報が格納されるため、異なるSmabaサーバを経由して同じファイルを開いた場合、ファイルロック情報がサーバ間で共有されず、先の警告が表示されなくなってしまいます。この問題を解決するために、TDBの機能拡張版として開発されたのがCTDBです。

 CTDBの場合は、複数のサーバ間でデータベース内の情報を共有できるようになっているので、このような問題を回避することができます。ファイルロック情報以外に、ユーザのパスワード情報なども共有できるため、外部のLDAPサーバやADサーバを利用せずに、複数サーバで同じユーザIDを使用することもできます。

 はじめにCTDBの開発に着手したのは、Sambaの作者であるAndrew Tridge自身ですが、オープンソースの世界ですので、当然のようにさまざまな開発者がCTDBの機能拡張に協力を始めました。とくに面白いのが、IPアドレスのフェイルオーバ機能です。それぞれのSambaサーバにFloating IPを割り当てておき、あるサーバが障害で停止した場合に、他のサーバにIPアドレスを引き継ぐという仕組みです。Windowsクライアントから見た場合、接続先のSambaサーバが障害で停止しても、自動的に接続先のSambaサーバが切り替わる形になります。

 現在のCTDBには、この機能が標準で実装されていますので、これで耐障害性も高めることができます。LinuxConでの発表に先駆けて、GlusterFS+Samba+CTDBの環境で、IPアドレスのフェイルオーバを実演するというデモ動画を公開しましたので、興味のある方は一度、閲覧してみてください(*1)。動画だけでは分かりにくいかも知れませんが、詳細は、LinuxConのセッションで解説したいと思います。具体的な環境構築の手順も紹介する予定です。

次回予告

 冒頭で紹介したLinuxConのGluster Workshopでは、GlusterFSの基本的な仕組みから、開発者向けの情報までさまざまなセッションが用意されているようです。LinuxConはすべてのセッションが英語で行われるため、敷居が高いように感じる方も多いようですが、この機会にぜひ一度、参加してみてはいかがでしょうか。

 次回は、最近登場した「RDO」について紹介したいと思います。「RDOって何?」と思われる方も多いかもしれませんが、詳細は次回までのお楽しみということで。

参考資料

*1)「GlusterFS-CTDB-Samba Failover Demo
 Windowsクライアントが接続したSambaサーバを再起動しても、クライアントからのファイルアクセスが継続される様子を記録した動画です。

 

++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
 CTC教育サービス Linuxのページ
 http://www.school.ctc-g.co.jp/linux/
 

Linux研修トレーニングならCTC教育サービス


 

筆者書籍紹介

Software Design plusシリーズ
「独習Linux専科」サーバ構築/運用/管理
  ――あなたに伝えたい技と知恵と鉄則

本物の基礎を学ぶ!新定番のLinux独習書

中井悦司 著
B5変形判/384ページ
定価3,129円(本体2,980円)
ISBN 978-4-7741-5937-9
詳しくはこちら(出版社WEBサイト)
「独習Linux専科」サーバ構築/運用/管理

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes