VultrブロックストレージとGlusterFSを使用した高可用性共有ドライブ

GlusterFSは、ネットワークに接続されたファイルシステムで、ネットワーク上の複数のデバイス間で2つのドライブを効果的に共有できます。このファイルシステムは、Vultrのブロックストレージ製品に最適です。ネットワークを介してドライブを共有できるため、そのままでは不可能です。

機能、拡張性、信頼性の観点から、GlusterFSは、最も洗練された安定したファイルシステムの1つであることが証明されています。

1つのサーバーのドライブに変更が加えられると、リアルタイムで他のサーバーに自動的に複製されます。これを達成し、このガイドに従うには、次のものが必要です。

  • 2つのVultrクラウドインスタンス。できれば同じオペレーティングシステムを実行しています。
  • 同じサイズの2つのブロックストレージドライブ。

これら2つのブロックストレージドライブを注文したら、それらをVM 1とVM 2に接続する必要があります。同じファイルシステムに両方のブロックストレージドライブを使用するため、両方のドライブの合計サイズを2で割ると、使用可能な量が得られますGBの。たとえば、2つの100 GBドライブがある場合、100 GBが使用可能になります(100 * 2/2)。

さらに、両方のVMを同じプライベートネットワークに配置するには、両方のVMを同じ場所に置く必要があります。内部IPアドレスを使用してサーバーに接続します。ブロックストレージドライブのデータをワイプすることに注意してください。それらが真新しく、フォーマットされていないことを確認してください。

このガイドでは、プライベートIPアドレス10.0.99.10および10.0.99.11をそれぞれ使用してstorage1およびを使用しstorage2ます。サーバー名とIPアドレスは異なる可能性が高いため、GlusterFSのセットアッププロセスでそれらを必ず変更してください。

このガイドは、CentOS / RHEL 7を念頭に置いて作成されました。ただし、GlusterFSは複数のLinuxディストリビューション間で比較的相互互換性があります。

GlusterFSのセットアップ

ステップ1:/etc/hostsファイルを変更する

それぞれのインスタンスにすばやく接続できるようにするには、hostsファイルに覚えやすい名前を追加する必要があります。/etc/hostsファイルを開き、次の行をその下部に追加します。

10.0.99.10 storage1
10.0.99.11 storage2

ステップ2:ディスクを追加する storage1

SSHでstorage1次のコマンドを実行します。デフォルトでは、接続されたブロックストレージドライブはとしてマウントされ/dev/vdbます。これが何らかの理由でケースで異なる場合は、以下のコマンドで変更する必要があります。

ディスクをフォーマットします。

fdisk /dev/vdb

次の3つの質問(パーティションサイズなどに関しては、ブロックストレージドライブの使用可能なすべてのスペースを使用したい)で「Enter」を押し、「w」を書き込んでこれらの変更をディスクに書き込みます。これが正常に完了したら、次のように書き込みます。

/sbin/mkfs.ext4 /dev/vdb1

Vultrはデフォルトではブロックストレージ上にファイルシステムを作成しないため、先に進んでファイルシステムを作成しました。

次に、ファイルを保存するフォルダーを作成します。この名前は変更できますが、あまり表示されないので、複雑さを解消するために、そのままにすることをお勧めします。

mkdir /glusterfs1

起動時にドライブを自動的にマウントするに/etc/fstabは、ファイルの下部に次の行を開いて追加します。

/dev/vdb1 /glusterfs1      ext4    defaults        1 2

最後に、ドライブをマウントします。

mount -a

マウントは再起動後も維持されるため、サーバーを再起動すると、ドライブは自動的に再びマウントされます。

ステップ3:ディスクを追加する storage2

これでディスクが追加されてマウントされたstorage1ので、storage2同様にディスクを作成する必要があります。コマンドはほとんど異なりません。の場合はfdisk、上記と同じ手順に従います。

fdisk /dev/sdb
/sbin/mkfs.ext4 /dev/sdb1
mkdir /glusterfs2

/etc/fstab次の行を編集して追加します。

/dev/vdb1 /glusterfs2      ext4    defaults        1 2

と同様にstorage1、ドライブは再起動後に自動的にマウントされます。

ドライブをマウントします。

mount -a

最後に、パーティションが表示されるかどうかを確認します。

df -h

ドライブがここに表示されるはずです。表示されない場合は、上記の手順に従ってください。

ステップ4:上のインストールGlusterFS storage1storage2

次にGlusterFSをインストールする必要があります。リポジトリを追加してGlusterFSをインストールします。

rpm  -ivh  http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.5/CentOS/glusterfs-epel.repo
yum -y install glusterfs glusterfs-fuse glusterfs-server

yumリポジトリの署名が正しくないためにエラーが発生する可能性があります。その場合は、GPG署名をチェックしないように強制しても安全です。

yum -y install glusterfs glusterfs-fuse glusterfs-server --nogpgcheck

両方のサーバーで、次のコマンドを実行してGlusterFSを今すぐ起動し、再起動後に自動的に起動します。

systemctl enable glusterd.service
systemctl start glusterd.service

古いバージョンのCentOSを使用している場合は、serviceおよびchkconfigコマンドを使用できます。

chkconfig glusterd on
service glusterd start

ステップ5:storage1およびでファイアウォールを無効にするstorage2

それ自体は最善の解決策ではありませんが、ブロックされたポートとの競合の可能性を排除するために、ファイアウォールをオフにすることをお勧めします。これを行うことに抵抗がある場合は、自由にルールを変更してかまいませんが、GlusterFSの性質上、ファイアウォールを無効にすることを強くお勧めします。プライベートネットワークがVultrで実際にプライベートである(そして他の顧客をファイアウォールで保護する必要がない)と考えると、インターネットからのすべての着信トラフィックをブロックし、プライベートネットワークへの許可された接続を制限できます。ただし、ファイアウォールをオフにし、他のシステム構成を変更しないことでも十分です。

systemctl stop firewalld.service
systemctl disable firewalld.service

をサポートしていない古いCentOSバージョンを使用する場合systemctlは、serviceおよびchkconfigコマンドを使用します。

service firewalld stop
chkconfig firewalld off

を使用しない場合はfirewalld、無効にしてみてくださいiptables

service iptables stop
chkconfig iptables off

ステップ6:サーバーをストレージプールに追加する

ファイアウォールをオフにすると、両方のサーバーをストレージプールに追加できます。これは、使用可能なすべてのストレージで構成されるプールです。で次のコマンドを実行しますstorage1

gluster peer probe storage2

このコマンドの機能は、storage2独自のストレージプールに追加することです。で次のコマンドを実行するとstorage2、両方のドライブが同期します。

gluster peer probe storage1

両方のサーバーでこれを実行した後、両方のサーバーのステータスを確認する必要があります。

gluster peer status

両方のサーバーが「ピア:1」の状態を表示する必要があります。よくある間違いはPeers: 2、を期待している人々ですが、同じstorage1ようにピアリングするのstorage2と同じように、自分自身をピアリングしません。したがって、Peers: 1私たちが必要とするものです。

手順7:で共有ドライブを作成する storage1

両方のサーバーがGlusterFSを介して相互に接続できるようになったので、共有ドライブを作成します。

storage1、次を実行:

gluster volume create mailrep-volume replica 2  storage1:/glusterfs1/files  storage2:/glusterfs2/files force

これでボリュームが作成されました。GlusterFSでは、ボリュームを「起動」して、複数のデバイス間でアクティブに共有する必要があります。それを始めましょう:

gluster volume start mailrep-volume

次に、ボリューム上にあり、両方のサーバー間で複製されるフォルダーを選択します。このチュートリアルでは、フォルダーを使用します/var/files���も��ろん、これはあなたが好きなものにすることができます。それstorage1 だけで作成してください:

mkdir /var/files

次に、マウントします。

mount.glusterfs storage1:/mailrep-volume /var/files/

/etc/fstabドライブが起動時に自動的にマウントされるように更新します。以下を追加します。

storage1:/mailrep-volume /var/files glusterfs defaults,_netdev 0 0

ドライブを再マウントします。

mount -a

手順8:で共有ドライブを作成する storage2

で共有ドライブを作成したので、共有ドライブもstorage1作成する必要がありますstorage2。同じ場所/パスと名前でフォルダを作成します。

mkdir /var/files
mount.glusterfs storage2:/mailrep-volume /var/files/

と同様にstorage1、次の行をに追加します/etc/fstab

storage2:/mailrep-volume /var/files glusterfs defaults,_netdev 0 0

ドライブを再マウントします。

mount -a

ステップ9:共有ストレージをテストする

/var/files上のフォルダに移動storage1して、ファイルを作成します。

cd /var/files
touch created_on_storage1

次に、storage2サーバーに向かいます。実行するls -laと、ファイルcreated_on_storage1が表示されます。

storage2/var/filesフォルダに移動してファイルを作成します。

cd /var/files
touch created_on_storage2

に戻ってstorage1実行しls -la /var/filesます。created_on_storage2ここにファイルが表示されるはずです。

手順10:すべてのサーバーを再起動する(オプション)

再起動後も設定が維持されるかどうかを再確認するには、ベストプラクティスとして、すべてのサーバーを再起動する必要があります。前述のように、共有ドライブが自動的にマウントされるまで、一方のサーバーが起動するのを待ってから、もう一方を再起動する必要があります。

storage1最初に再起動し、起動するのを待ってから再起動しstorage2ます。次に、両方のサーバーにログインして実行します。

cd /var/files
ls -la

両方のファイルが表示されるはずです。ボリュームにファイルがない状態で開始するようにしてください。作成したテストファイルを削除してください。これはstorage1storage2または両方で実行できます。変更は即座に複製されます:

cd /var/files
rm created_on_storage1
rm created_on_storage2

両方のボリュームでのアクションに関係なく、両方のサーバーで同一の共有ボリュームが必要です。

これで、100 GB(またはそれ以上)の使用可能なスペースを備えた本格的なGlusterFSセットアップがセットアップされました。将来さらに必要になる場合に備えて、セットアップは簡単に拡張可能であり、ワークロードでこれが必要になった場合に、より多くの容量やサーバーを追加できます。

読んでくれてありがとう!


再マウントに関する重要な注意

GlusterFSでは、2つのドライブでデータを最新の状態に保つことができます。ただし、両方のサーバーが同時に再起動する場合は、両方のサーバーにドライブを強制マウントする必要があることに注意してください。次のコマンドを実行して、手動でマウントを強制する必要があります。

gluster volume start mailrep-volume force

これは、一方のサーバーがサーバーとして機能し、もう一方がクライアントとして機能するためです。違いは実際にはそれほど簡単にはわかりませんが、両方のサーバーを再起動する必要がある場合は、一方を再起動し、起動するまで待ってから、もう一方を起動する必要があります。

バックアップに関する重要な注意

データが2つのドライブに複製される場合でも、データを少なくとも3回複製する必要があります。データはデータの破損などから保護されていますが、変更は瞬時に行われるため、人的エラーから保護されることは決してありません。1つのドライブ上のすべてのファイルを削除すると、これらの変更はすぐに他のドライブに複製されます。つまり、データは両方のインスタンスで消去されます。

幸いにも、これを回避するための複数のアプローチがあります。まず、クラウドインスタンス自体でバックアップを有効にすることをお勧めします。これらのバックアップにはブロックストレージ上のデータは含まれていませんが、インスタンス自体のデータは保護されます。

ブロックストレージ自体のデータをバックアップする場合は、たとえば、別のインスタンス(SATAプランなど)をスピンアップして、たとえば、接続されている2つのサーバーのいずれかから毎晩バックアップを実行できるようにすることをお勧めします。このようにして、データは別の別のデバイスで安全になります。

よくある質問

ディスクストレージを増やすことはできますか?

Vultrコントロールパネルからブロックストレージサイズを増やすことができます。その後、オペレーティングシステム内のディスクのサイズを変更する必要がありますが、それはこの記事の範囲外です。

ブロックストレージを2つ以上のサーバーに接続できますか?

このガイドは2台のサーバー(したがって、両方のサーバーに接続された2台のブロックストレージドライブ)向けに作成されていますが、このガイドを使用して、2台以上のサーバーにも使用できます。2台を超えるサーバー/ドライブを使用したセットアップは、6台のサーバーでは次のようになります。次に例を示します。

VM: storage1
VM: storage2
VM: storage3
VM: storage4
Block Storage: attached to storage1
Block Storage: attached to storage2
Block Storage: attached to storage3
Block Storage: attached to storage4

すべてのブロックストレージドライブの容量がたとえば200 GBだとすると、200 * 4/4になります。つまり、使用可能なスペースは常に単一のブロックストレージドライブの容量です。これは、ブロックストレージが接続された1つのサーバーがGlusterFSによって「マスター」として扱われ、他のサーバー間で複製されるためです。ただし、このセットアップは、マスターサーバーがなくても存続できるように構築されているため、冗長で信頼性が高く、安定したソリューションになります。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。