3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MicroAd (マイクロアド)Advent Calendar 2024

Day 19

GlusterFS で簡単冗長構成

Last updated at Posted at 2024-12-18

はじめに

サーバ間の同期には rsync/lsyncd を使った方法がよく知られていますが、rsync/lsyncd はディレクトリの変更を検出して差分を同期するシステムなので、必ず同じデータになっていることは保証されません。
一方で、GlusterFS では自動的にデータを同期してくれるので、サーバ間のデータに差分があることを心配する必要がなく楽に運用できます。
本記事では GlusterFS の自体の説明はしませんので別の記事をご参照ください m(__)m

GlusterFS で出てくる用語

GlusterFS には「ブリック」という特有の単位が存在します。ブリックは、サーバ上のディレクトリのことで、GlusterFS は複数のブリックを束ねることで1つのボリュームを作ります。
GlusterFS のボリュームにはいくつかのタイプがあります。例えば、Replicatedタイプにすると、データを複数のサーバにコピーし冗長性を確保します(Raid 1 みたいな感じです)。他にも、Distributedタイプにすると、データを複数のサーバに分散して保存するようになります。

その他のボリュームタイムはこちらをご参照ください。

環境

IP Address OS
server01 192.168.1.11 Ubuntu24.04
server02 192.168.1.12 Ubuntu24.04

構築

構築するシステムは下図のような構成なります。

  • 各サーバの /opt/brick0 ディレクトリをブリックにして GlusterFS のボリューム vol0 を作る
  • vol0 を各サーバの /opt/app/data にマウントする
    • 各サーバのアプリケーション app は、/opt/app/data のデータを読み書きする

img.dio.png

前準備

server01,02 で GlusterFS のインストールとブリック用のディレクトリ /opt/brick0 を作ります。

sudo apt install glusterfs-server
sudo systemctl start glusterd
sudo mkdir /opt/brick0

ピアの設定とボリュームの作成

どちらかのサーバでピアの設定とボリュームを作ります。どちらでもよいので、今回は server01 で実施します。

ピア(server02)との疎通を開始

sudo gluster peer probe 192.168.1.12
# peer probe: success

server01,02 のブリックからボリューム vol0 を作成

sudo gluster volume create vol0 replica 2 192.168.1.11:/opt/brick0 192.168.1.12:/opt/brick0 force
# volume create: vol0: success: please start the volume to access data

ボリュームの提供を開始

sudo gluster volume start vol0
# volume start: vol0: success

マウント

各サーバでGlusterFSのボリュームをマウントします。

# @server01
sudo mount -t glusterfs 192.168.1.11:/vol0 /opt/app/data
# @server02
sudo mount -t glusterfs 192.168.1.12:/vol0 /opt/app/data

マウントの確認

# @server01
df -h /opt/app/data
# Filesystem          Size  Used Avail Use% Mounted on
# 192.168.1.11:/vol0  8.7G  1.8G  6.9G  21% /opt/app/data

# @server02
df -h /opt/app/data
# Filesystem          Size  Used Avail Use% Mounted on
# 192.168.1.12:/vol0  8.7G  1.8G  6.9G  21% /opt/app/data

これで、各サーバの /opt/app/data に書き込まれたデータが同期されるようになりました!

サーバが壊れた際の復旧

どちらかのサーバが壊れた時に、復旧する方法について紹介したいと思います。今回は server01 が壊れた事を想定します。

まず、生きているサーバ(今回は server02 )から、server01 のブリックをボリュームから取り外してreplica数を1に設定します。

sudo gluster volume remove-brick vol0 replica 1 192.168.1.11:/opt/brick0 force
# Remove-brick force will not migrate files from the removed bricks, so they will no longer be available on the volume.
# Do you want to continue? (y/n) y
# volume remove-brick commit force: success

次に server02 から server01 をピアから切り離します。

sudo gluster peer detach 192.168.1.11
# All clients mounted through the peer which is getting detached need to be remounted using one of the other active peers in the trusted storage pool to ensure client gets notification on any changes done on the gluster configuration and if the same has been done do you want to proceed? (y/n) y
# peer detach: success

最後に、server02 からピアリングして、ボリュームに server01 のブリックを追加します。

sudo gluster peer probe 192.168.1.11
# peer probe: success

sudo gluster volume add-brick vol0 replica 2 192.168.1.11:/opt/brick0 force
# volume add-brick: success

おわりに

GlusterFS を使うことで手軽に冗長構成を取ることができました。一般的には、GlusterFS 専用のサーバを3台以上用意してボリュームを作り、別のサーバがマウントする形となりますが、今回のようにサーバ2台だけで冗長構成を作ることもできます。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?