前回Ubuntu 12.04 LTS にGlusterFS をインストールした。
今回はミラーリングを試してみる。
デフォルトの分散モードで構成しているとストレージノードが一台ダウンするとそこそこエラいことになりますが、前述のreplica等をうまくつかってストレージがダウンしても運用を続けられるような構成を組めば今回ご紹介した環境も夢ではありません(「glusterfsで仮想化サーバの余っているローカルハードディスクを分散共有ストレージにする at nkjmkzk.net」より引用)
スポンサードリンク
接続概要図
- サーバー側として
- Ubuntu 12.04 LTS Server 64bit
- HDD40G
- 192.168.1.11
- 192.168.1.12
- マウント側として
- Ubuntu 12.04 LTS Desktop 64bit
- 192.168.1.13 / 192.168.19.129 (後述参照)
サーバー側にはGlusterFS をインストール済み。
実際には画像のように3つのVMware Player 上に構築している。
インターフェイスの起動
GlusterFS のCUI インターフェイスを起動してみる。
$ sudo gluster gluster>
起動したようだ。
※sudo glaster に続けてコマンドを入力することも可能
ピアの作成
ピアの設定は通信相手を定義する。
192.168.1.11 で以下のコマンドを入力したとしたところ、応答がない(その後エラー)。
gluster> peer probe 192.168.1.12 Connection failed. Please check if gluster daemon is operational.
サービスの開始
192.168.1.12 で次のようにしたところ通信が可能だった(もちろん192.168.1.11 でもやっておいた)。なお、gluster「d」であることに注意。
$ sudo service glusterd start * Starting glusterd service glusterd [ OK ]
再度ピアの定義を行ったところ上手くいった。
gluster> peer probe 192.168.1.11 Probe successful
以下は既に定義済みの場合表示される。
gluster> peer probe 192.168.1.12 Probe on host 192.168.1.12 port 24007 already in peer list
上手くいかない場合の確認メモ
$ sudo ufw status Status: inactive
上はUbuntuFireWall の状態を確認するもの。下はiptables をoff にするもの。
$ sudo service iptables off iptables: unrecognized service
ボリュームの作成
複数のピアにまたがってボリュームを作成します。ボリュームは下記のモードで選択できます。
1.ストライピング(stripe)
2.レプリカ(replica)
の2種類のモードのいずれか、もしくは組み合わせでボリュームを作成できます。今回は、冗長化を目的として、サーバー2台のディスクで複製された、1つのボリュームを作成します。(「GlusterFSでファイルシステムクラスタを簡単作成 : アシアルブログ」より引用)
やってみたいことがそのまま記載されているので真似てみることにした。
gluster> volume create GlusterVol1 replica 2 transport tcp 192.168.1.11:/GlusterFS/brick 192.168.1.12:/GlusterFS/brick Creation of volume GlusterVol1 has been unsuccessful
「/GlusterFS/brick」という作成されていない(存在しない)ディレクトリを指定したが、エラーとはならなかった。
gluster volume createで作成したボリュームはデフォルトではデータをランダムに各VM Serverに分散させて保存します。ただしオプションがあり、replicaあるいはstripeを指定することでネットワークRAIDを行うことがで きます(「glusterfsで仮想化サーバの余っているローカルハードディスクを分散共有ストレージにする at nkjmkzk.net」より引用)
$ ls / bin etc lib media proc sbin sys var boot home lib64 mnt root selinux tmp vmlinuz dev initrd.img lost+found opt run srv usr
しかし、そのようなディレクトリは表示されなかった。良いのだろうか。それとも予めディレクトリを作成しておく必要があるのだろうか。
ボリュームの開始
gluster> volume start GlusterVol1 Volume GlusterVol1 does not exist
あら?さっき「Creation of volume GlusterVol1 has been unsuccessful」って言ったよね・・?んー・・あ!「unsuccessful」か・・。
$ sudo mkdir /GlusterFS/brick -p
赤面しつつディレクトリを慌てて作成。
gluster> volume create GlusterVol1 replica 2 transport tcp 192.168.1.11:/GlusterFS/brick 192.168.1.12:/GlusterFS/brick Creation of volume GlusterVol1 has been successful. Please start the volume to access data.
こ、今度は「successful」。
$ ls / bin etc initrd.img lost+found opt run srv usr boot GlusterFS lib media proc sbin sys var dev home lib64 mnt root selinux tmp vmlinuz
ちゃんと存在する・・当然だけど。
gluster> volume start GlusterVol1 Starting volume GlusterVol1 has been successful
改めて開始。「successful」ね・・。
ここで焦ってはいけません。というのも、感覚的には/var/gluster_brickが共有ストレージとして使えるようになっているのかな、と思ってしまうのですが、実際はそうではなく、このボリュームを一度NFSマウントしなければなりません(「glusterfsで仮想化サーバの余っているローカルハードディスクを分散共有ストレージにする at nkjmkzk.net」より引用)
確認
gluster> volume info all
Volume Name: GlusterVol1 Type: Replicate Volume ID: 7bb83c00-64c1-4b95-87ee-bd3aec937af8 Status: Started Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: 192.168.1.11:/GlusterFS/brick Brick2: 192.168.1.12:/GlusterFS/brick
ボリュームの作成は192.168.1.11 でしか命令していなかった。念のため192.168.1.12 でボリューム情報を確認したところ、正しく反映されていた(ありえないとは思うが、すべてのサーバーでコマンドを実行する必要があるかの確認を含んでいる)。
→ 次回はマウント
コメント
“http://t.co/cGERPG3s » Ubuntu 12.04 LTS で GlusterFS を使ってみる1 – 定義” http://t.co/TpF2QqZd
“http://t.co/Aw87apJO » Ubuntu 12.04 LTS で GlusterFS を使ってみる1 – 定義” http://t.co/8Xx7SPUu