GlusterFS技術情報


インストール手順

Red Hat Enterprise Linux 6.3 の環境に GlusterFS 3.3 を導入して、最もシンプルな「Distributed Volume」を作成する手順を紹介します。

全体構成

  • gluster01〜gluster04の4ノードからなるGlusterFSサーバのクラスタを構成します。
  • 各サーバの/dataにマウントしたファイルシステムをストレージ領域として使用します。
  • 各サーバ/data/brick01をブリックとするDistributed Volume「vol01」を作成します。
  • client01にNativeクライアントを導入して、作成したボリュームをマウントします。

 

RHEL6.3とRPMパッケージの導入

gluster01〜gluster04 に共通の準備作業です。

RHEL6.3をインストールして、RHELリポジトリを利用可能な状態にしておきます。

ストレージ領域として利用するディスク(パーティション)にファイルシステムを作成して、/dataにマウントします。この時、ファイルシステムのi-nodeサイズは512Bを指定します。ext4ファイルシステムの場合は、次のように「-I 512」オプションを指定します。

# mkfs.ext4 -I 512 /dev/sdb

各サーバの名前解決ができるように/etc/hostsにエントリを追加します。

192.168.122.31    gluster01
192.168.122.32    gluster02
192.168.122.33    gluster03
192.168.122.34    gluster04

GlusterFS3.3のRPMパッケージを導入します。

# BASEURL=http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.0/RHEL
# yum install
    $BASEURL/glusterfs-3.3.0-1.el6.x86_64.rpm
    $BASEURL/glusterfs-fuse-3.3.0-1.el6.x86_64.rpm
    $BASEURL/glusterfs-server-3.3.0-1.el6.x86_64.rpm
    $BASEURL/RHEL/glusterfs-geo-replication-3.3.0-1.el6.x86_64.rpm

※オプション作業

iptablesによるパケットフィルタリングを設定する場合は、次のTCPポートへの接続を許可します。

  • 22, 111, 24007〜(24008 + 使用する最大ブリック数), 38465〜38467

次は、/etc/sysconfit/iptablesの設定例です。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 24007:24020 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 38465:38467 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

※オプション作業

次のスクリプトは、GlusterFSのI/O処理に特化したI/Oパラメータの設定を行います。必要に応じて、/etc/rc.localに記載してください。

sysctl -w vm.swappiness=10;sysctl -w vm.dirty_background_ratio=1;sysctl -w kernel.sched_wakeup_granularity_ns=15for i in $(ls -d /sys/block/*/queue/iosched 2>/dev/null); do iosched_dir=$(echo $i | awk '/iosched/ {print $1}') [ -z $iosched_dir ] && {
continue } path=$(dirname $iosched_dir) [ -f $path/scheduler ] && {
echo "deadline" > $path/scheduler } [ -f $path/nr_requests ] && {
echo "256" > $path/nr_requests }done

クラスタの構成

これ以降の作業は、gluster01から実施します。

gluster02〜gluster03の各ノードをpeer登録して、クラスタを構成します。

# gluster peer probe gluster02
# gluster peer probe gluster03
# gluster peer probe gluster04

peerの状態を表示して、他のノードが正しく認識できていることを確認します。

# gluster peer status
Number of Peers: 3

Hostname: gluster02
Uuid: ab460681-28f0-4d29-a4ca-1e3ac0c95a5f
State: Peer in Cluster (Connected)

Hostname: gluster03
Uuid: 2fdbf699-ca61-4580-93ec-25e7003161f6
State: Peer in Cluster (Connected)

Hostname: gluster04
Uuid: 1f054581-647d-4c92-96c4-cb5240bd647d
State: Peer in Cluster (Connected)

ボリュームの作成

各ノードのディレクトリ /data/brick01 をブリックとする Distributed Volume「vol01」を作成/起動します。

# gluster vol create vol01
    gluster01:/data/brick01
    gluster02:/data/brick01
    gluster03:/data/brick01
    gluster04:/data/brick01

# gluster vol start vol01

次のコマンドでボリュームの構成情報を確認します。

# gluster vol info
 
Volume Name: vol01
Type: Distribute
Volume ID: 0f9a1e88-eb6f-483c-a508-06373896320e
Status: Started
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: gluster01:/data/brick01
Brick2: gluster02:/data/brick01
Brick3: gluster03:/data/brick01
Brick4: gluster04:/data/brick01

次のコマンドでボリュームの起動状況を確認します。

# gluster vol status
Status of volume: vol01
Gluster process                            Port    Online  Pid
-----------------------------------------------------------------
Brick gluster01:/data/brick01              24009   Y       1812
Brick gluster02:/data/brick01              24009   Y       1719
Brick gluster03:/data/brick01              24009   Y       1690
Brick gluster04:/data/brick01              24009   Y       1703
NFS Server on localhost                    38467   Y       1818
NFS Server on gluster02                    38467   Y       1725
NFS Server on gluster04                    38467   Y       1708
NFS Server on gluster03                    38467   Y       1695

クライアントからの接続

この作業は、client01で実施します。

RHEL6.3をインストールして、RHELリポジトリを利用可能な状態にしておきます。

各サーバの名前解決ができるように/etc/hostsにエントリを追加します。

192.168.122.30    client01
192.168.122.31    gluster01

192.168.122.32    gluster02
192.168.122.33    gluster03
192.168.122.34    gluster04

GlusterFS3.3のクライアント用RPMパッケージを導入します。

# BASEURL=http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.0/RHEL
# yum install
    $BASEURL/glusterfs-3.3.0-1.el6.x86_64.rpm
    $BASEURL/glusterfs-fuse-3.3.0-1.el6.x86_64.rpm

Nativeクライアントとしてボリュームをマウントする際は、任意のGlusterFSサーバを指定してマウントします。(実際のアクセスは、ボリュームを構成する全てのGlusterFSサーバに対して行われます。)

# mkdir /mnt/vol01
# mount -t glusterfs gluster01:/vol01 /mnt/vol01

# df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/vda2              4128448   1721848   2196888  44% /
tmpfs                   510288         0    510288   0% /dev/shm
/dev/vda1               198337     28099    159998  15% /boot
gluster01:/vol01      11390720    279552  10523264   3% /mnt/vol01

※補足情報

NFSクライアントとしてマウントする際は、クライアント用RPMパッケージの導入は不要です。次のようにオプション「-o mountvers=3」を指定して、NFSv3でマウントします。

# mkdir -p /mnt/nfs/vol01
# mount -t nfs -o mountvers=3 gluster01:/vol01 /mnt/nfs/vol01
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中