この記事では、サーバーアレイにGlusterFSサーバーを追加および削除する方法について説明します。
nova boot
を使用します 前の記事のコマンドを使用して、web3というサーバーを作成します:
nova boot --image bb02b1a3-bc77-4d17-ab5b-421d89850fca --flavor performance1-4 web3
RackspaceCloudコントロールパネルを使用して新しいサーバーを作成することもできます。
前回の記事では、Rackspaceカスタムネットワークを追加しました。
-
次の
nova
を使用して、ネットワークのUniversal Unique Identifer(UUID)を取得します。 コマンド:nova network-list
-
UUIDを取得したら、新しいホストをUUIDに関連付けます。
UUID
を置き換えます 次のコマンドで実際のUUIDを使用します(たとえば、5492de89-1497-4aa0-96eb-bcdd55e1195c1
)。web03
追加するサーバーのホスト名です。nova network-associate-host UUID web03
Rackspace Cloudコントロールパネルを使用して、サーバーを既存のネットワークに関連付けることもできます。
完了すると、新しいサーバーのIPアドレスはインターフェース/dev/eth3
に192.168.0.3になります。 。これは、GlusterFSが他のサーバーとの通信に使用するアドレスです。
パーティションをフォーマットし、GlusterFSをインストールします
次の手順を使用して、サーバーパーティションをフォーマットし、GlusterFSをインストールします。
-
Secure Shell(SSH)を使用してサーバーにログインします。
-
前の記事の手順を使用して、GlusterFSをインストールし、
bricks
をフォーマットします 次のようにパーティションを作成します:apt-get update apt-get install -y glusterfs-server glusterfs-client apt-get install -y xfsprogs mkfs.xfs /dev/xvde1 mkdir /srv/.bricks echo /dev/xvde1 /srv/.bricks xfs rw 0 1 >> /etc/fstab mount /srv/.bricks ufw allow in on eth2
-
SSHを使用して、いずれかの
web01
にログインします またはweb02
。 -
次のコマンドは、新しいサーバーを信頼するようにGlusterFSボリュームに指示します。
root@web02 :~# gluster peer probe 192.168.0.3 peer probe: success
-
次のコマンドを使用して、ブリックをボリュームに追加します。
root@web02 :~# gluster volume add-brick www replica 3 192.168.0.3:/srv/.bricks/www volume add-brick: success
このコマンドには、次の部分が含まれています。
-
gluster
-コマンドはGlusterFS用です。 volume
-コマンドはボリュームに関連しています。-
add-brick
-ボリュームにブリックを追加しています。 -
www
-これはボリュームの名前です。 replica 3
-このブリックを追加すると、ボリュームは各ファイルの少なくとも3つのコピー、ブリックごとに1つのコピー、この場合はサーバーごとに1つのコピーを保持します(各サーバーにブリックが1つしかないため)。-
192.168.0.3:/srv/.bricks/www
-コマンドのこの部分は、GlusterサーバーのIPアドレスであり、その後にブリックデータが保存されている場所への絶対パスが続きます。
GlusterFSは、次のタイプのボリュームストレージ戦略を提供します。
- 分散 -1つのファイルが1つのブリックにあり、次のファイルが次のブリックにあります。ボリュームはすべてのレンガの合計であるため、この戦略ではより多くのスペースが得られます。
- 複製 (推奨 )-すべてのファイルがすべてのサーバーにコピーされます。
- ストライプ -ファイルはチャンクにカットされ、1つのチャンクが最初のブリックに書き込まれ、1つのチャンクが2番目のブリックに書き込まれます。
次の例に示すように、複製と分散などの戦略を組み合わせることもできます。
gluster volume create www replica 2 transport tcp
192.168.0.1:/srv/.bricks/www 192.168.0.2:/srv/.bricks/www
192.168.0.3:/srv/.bricks/www 192.168.0.4:/srv/.bricks/www
レプリカ番号は、レプリカセットを構成する、つまりファイルの完全なコピーを保持するブリックの数です。前の例では、192.168.0.1
および192.168.0.2
192.168.0.3
と同様に、ファイルの完全なコピーを保持します および192.168.0.4
。レンガの順序は重要です。 1,3,2,4を注文した場合、1と3および2と4は完全なファイルを保持します。 1と2がダウンした場合、ファイルの半分が失われ、残りの半分のコピーが2つあります。
複製されたボリュームと分散されたボリュームを組み合わせると、データの安全性と引き換えに、速度が少し向上し、スペースが増えます。
ストライプボリュームとレプリケートボリュームの組み合わせは、ブリックよりも大きいファイルがある場合、または多くのIO操作を受けている大きなファイルが多数ある場合にのみ推奨されます。
次のコマンドは、クラスタで何が起こっているかを調べるのに役立ちます。これらのコマンドは、後のGlusterFSの記事で使用します。
いずれかのサーバーから次のコマンドを実行すると、認識しているすべてのピアサーバーが表示されます。
root@web01:~# gluster peer status
Number of Peers: 2
Hostname: 192.168.0.3
Uuid: ba502dc2-447f-466a-a732-df989e71b551
State: Peer in Cluster (Connected)
Hostname: 192.168.0.2
Uuid: 56e02356-d2c3-4787-ae25-6b46e867751a
State: Peer in Cluster (Connected)
次のコマンドは、トラブルシューティングに役立つコマンドです。キューに入れられて進行中のすべてのGlusterFSボリュームとタスクに関する情報を提供します。
root@web03:~# gluster volume status
Status of volume: www
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick 192.168.0.2:/srv/.bricks/www 49152 Y 13673
Brick 192.168.0.1:/srv/.bricks/www 49152 Y 10249
Brick 192.168.0.3:/srv/.bricks/www 49153 Y 13783
NFS Server on localhost 2049 Y 13793
Self-heal Daemon on localhost N/A Y 13800
NFS Server on 192.168.0.2 2049 Y 13900
Self-heal Daemon on 192.168.0.2 N/A Y 13907
NFS Server on 192.168.0.1 2049 Y 10286
Self-heal Daemon on 192.168.0.1 N/A Y 10293
There are no active volume tasks
クラスタがオンラインで利用可能なときに、必要に応じてボリュームを縮小できます。次のコマンドを使用して、ブリックを削除します。
# gluster volume remove-brick <volName> <brickName> start
remove-brick
を実行しています start
で オプションを選択すると、リバランス操作が自動的にトリガーされ、削除されたブリックからボリュームの残りの部分にデータが移行されます。
次の例では、ブリック2を削除します:
root@web01:~# gluster volume remove-brick www replica 2 192.168.0.2:/srv/.bricks/www start
Removing brick(s) can result in data loss. Do you want to Continue? (y/n) y
volume remove-brick commit force: success
このコマンドは、GlusterFSにwww
ボリュームは、各ファイルの2つのコピーのみを保持するようになります。データが失われる可能性があることを警告し、続行するように促します。
分散ボリューム上のブリックを削除する場合は、代わりに次のコマンドを実行する必要があります。
root@web01:~# gluster volume remove-brick www 192.168.0.2:/srv/.bricks/www start
remove-brick
のステータスを表示できます 次のコマンドを使用して操作します:
root@web01:~# watch gluster volume remove-brick www replica 2 192.168.0.2:/srv/.bricks/www status
このセクションでは、レンガを再度追加する方法について説明します。
次のように、web02をボリュームに追加し直してみてください。
root@web02:~# gluster volume add-brick www replica 3 192.168.0.2:/srv/.bricks/www
volume add-brick: failed:
失敗しました。 web02のログを見て、コマンドが失敗した理由を確認してください。
root@web02:/srv/.bricks# tail /var/log/glusterfs/*log -f | grep E
[2014-05-25 00:19:04.954410] I [input.c:36:cli_batch] 0-: Exiting with: 0
[2014-05-25 00:19:12.958620] I [input.c:36:cli_batch] 0-: Exiting with: 0
[2014-05-25 00:40:46.923747] E [glusterd-utils.c:5377:glusterd_is_path_in_use] 0-management: /srv/.bricks/www or a prefix of it is already part of a volume
[2014-05-25 00:40:46.923789] E [glusterd-op-sm.c:3719:glusterd_op_ac_stage_op] 0-management: Stage failed on operation 'Volume Add brick', Status : -1
問題は、/srv/.bricks/www
web02がボリュームのメンバーだったときのデータがまだ含まれています。
データを保存するためのきれいな場所が必要です。クリーンアップする最も簡単な方法は、次のコマンドを使用してすべてのデータを削除することです。
root@web02:~# rm -rf /srv/.bricks/www
警告 :正しいホスト(現在ボリュームが不足しているweb02)でこのアクションを実行するように注意してください。間違えた場合は、次の記事で回復方法を説明します。別のアクションは、www
を移動することです ディレクトリを邪魔にならないようにするか、www2
などの別のディレクトリを使用してブリックを追加します 。
レンガを保管するためのきれいな場所ができたので、レンガの追加は成功しました:
root@web01:/srv# gluster volume add-brick www replica 3 192.168.0.2:/srv/.bricks/www
volume add-brick: success
- GlusterFSアレイで障害が発生したサーバーから回復する方法