使用Vultr块存储和GlusterFS的高可用性共享驱动器

GlusterFS是一个网络连接的文件系统,可以有效地使您跨网络上的多个设备共享两个驱动器。该文件系统非常适合Vultr的块存储产品,因为您可以通过网络共享开箱即用的驱动器。

在功能,可扩展性和可靠性方面,GlusterFS被证明是可用的最复杂,最稳定的文件系统之一。

对一台服务器上的驱动器进行更改后,这些更改将自动实时复制到另一台服务器上。为了实现这一目标并遵循本指南,您将需要:

  • 两个Vultr云实例,最好运行相同的操作系统。
  • 两个相同大小的块存储驱动器。

订购这两个块存储驱动器后,应将它们连接到VM ​​1和VM2。由于我们将两个块存储驱动器用于同一文件系统,因此将两个驱动器的总大小除以2将得到可用的数量。的GB。例如,如果您有两个100 GB的驱动器,则可以使用100 GB(100 * 2/2)。

此外,两个VM都需要位于同一位置,以便它们位于同一专用网络上。我们将使用其内部IP地址连接到服务器。请注意,我们将擦除块存储驱动器上的数据。确保它们是全新的且未格式化的。

在本指南中,我们将分别使用storage1和和storage2私有IP地址10.0.99.10和10.0.99.11。您的服务器名称和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

对于以下三个问题,请单击“输入”(关于分区大小等,我们要使用块存储驱动器上的所有可用空间),并输入“ 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

就像on一样storage1,驱动器将在重新引导后自动安装。

安装驱动器:

mount -a

最后,让我们检查一下是否可以看到分区显示出来:

df -h

您应该看到驱动器显示在这里。如果不是这样,请尝试按照上面的步骤操作。

步骤4:在storage1和上安装GlusterFSstorage2

接下来,我们需要安装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,则可以使用servicechkconfig命令:

chkconfig glusterd on
service glusterd start

步骤5:在storage1和上禁用防火墙storage2

尽管这本身并不是最佳解决方案,但最好关闭防火墙,以消除与阻塞端口的可能冲突。如果您不愿意这样做,则可以随意更改规则,但由于GlusterFS的性质,我强烈建议禁用防火墙。考虑到私有网络实际上在Vultr上是私有的(并且您不需要防火墙屏蔽其他客户),您可以简单地阻止来自Internet的所有传入流量,并限制到私有网络的允许连接。但是,关闭防火墙并且不更改任何其他系统配置也将足够:

systemctl stop firewalld.service
systemctl disable firewalld.service

如果您使用不支持的较旧CentOS版本systemctl,请使用servicechkconfig命令:

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/

与on一样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允许在两个驱动器上保持数据最新。但是,您应注意,当同时重启两个服务器时,您将需要在两个服务器上强制安装驱动器。您必须通过执行以下命令来手动强制安装:

gluster volume start mailrep-volume force

这是因为其中一台服务器充当服务器,另一台服务器充当客户端。尽管在实践中这种区别并不容易察觉,但这意味着当您需要重新引导两个服务器时,应该重新引导一个服务器,等到它启动后再引导另一个服务器。

有关备份的重要说明

即使您的数据将跨两个驱动器复制,您也应至少复制三次数据。尽管可以更好地保护您的数据免遭数据损坏等损害,但您应注意,更改是即时的,绝不会受到人为错误的保护。当您删除一个驱动器上的所有文件时,这些更改将立即复制到另一驱动器上,这意味着您的数据将在两个实例上均被擦除。

幸运的是,有多种方法可以避免这种情况。首先,我建议在云实例本身上启用备份。尽管这些备份不包括块存储中的数据,但它将保护实例本身上的数据。

在备份块存储本身上的数据时,我建议旋转一个单独的实例(例如SATA计划),例如,您可以每晚从两个连接的服务器之一运行备份。这样,您的数据将在另一台单独的设备上安全。

常问问题

我可以增加磁盘存储量吗?

您可以从Vultr控制面板增加块存储大小。之后,您应该在操作系统内调整磁盘的大小,但这超出了本文的范围。

我可以将块存储连接到两个以上的服务器吗?

尽管本指南是针对两个服务器编写的(因此两个服务器都连接了两个块存储驱动器),但是也可以将本指南用于两个以上的服务器。对于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。换句话说,可用空间始终是单个块存储驱动器的容量。这是因为GlusterFS将一台附加了块存储的服务器视为“主服务器”,并将其复制到其他服务器上。但是,该设置是为了在没有主服务器的情况下也能够生存而设计的,这使其成为一种冗余,可靠,稳定的解决方案。



Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

使用Nethogs监视网络带宽使用情况

使用Nethogs监视网络带宽使用情况

在本教程中,我们将介绍在CentOS 6x x64上安装和使用nethogs的过程。nethogs是一种网络监视工具,它允许Networ

如何在CentOS 7上安装BoltWire CMS

如何在CentOS 7上安装BoltWire CMS

使用其他系统?简介BoltWire是一个用PHP编写的免费,轻量级的内容管理系统。与大多数其他内容管理人员相比

在CentOS 6上设置SA-MP San Andreas多人服务器

在CentOS 6上设置SA-MP San Andreas多人服务器

欢迎来到另一个Vultr教程。在这里,您将学习如何安装和运行SAMP服务器。本指南是为CentOS 6编写的。先决条件

使用Etckeeper进行/ etc的版本控制

使用Etckeeper进行/ etc的版本控制

简介/ etc /目录在Linux系统运行中起着至关重要的作用。其原因是因为几乎每个系统配置

如何在CentOS 7上安装Microweber

如何在CentOS 7上安装Microweber

使用其他系统?Microweber是一个开放源代码的拖放式CMS和在线商店。Microweber源代码托管在GitHub上。本指南将向您展示

如何在CentOS 7上安装SonarQube

如何在CentOS 7上安装SonarQube

使用其他系统?SonarQube是用于质量系统开发的开源工具。它是用Java编写的,并且支持多个数据库。它提供

如何在CentOS 7上使用Mosh进行远程服务器管理

如何在CentOS 7上使用Mosh进行远程服务器管理

使用其他系统?Mosh是Mobile Shell的缩写,是一种新兴的远程终端应用程序,旨在提供更好的连接和使用

如何在CentOS 7上安装MoinMoin

如何在CentOS 7上安装MoinMoin

MoinMoin是一个使用Python编写的基于文件系统的开源Wiki引擎。如今,MoinMoin已广泛用于开源社区。许多供应商

在CentOS 7上安装H2O Web服务器

在CentOS 7上安装H2O Web服务器

H2O是新一代HTTP服务器,它对所有当前使用的Web服务器都具有出色的,功能齐全的HTTP / 2实现。使用H2O作为您的Web服务器

如何在Debian,CentOS和FreeBSD上使用Sudo

如何在Debian,CentOS和FreeBSD上使用Sudo

在Linux和Unix系统管理员中,使用sudo用户访问服务器并在root级执行命令是一种非常普遍的做法。使用泡沫

如何在Ubuntu 16.10上安装Countly Analytics

如何在Ubuntu 16.10上安装Countly Analytics

使用其他系统?Countly是一个开源Web /移动分析和营销平台。它具有许多用于从Web收集数据的功能

如何在CentOS 7上安装MODX CMS和Nginx

如何在CentOS 7上安装MODX CMS和Nginx

MODX是一个用PHP编写的免费开放源内容管理系统。它使用MySQL或MariaDB来存储其数据库。MODX专为满足以下条件的企业而设计:

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

使用其他系统?Lychee 3.1相册是一种简单,灵活,免费和开源的照片管理工具,可在VPS服务器上运行。安装

如何在CentOS 7上安装ERPNext开源ERP

如何在CentOS 7上安装ERPNext开源ERP

使用其他系统?ERP或企业资源计划是用于管理核心业务流程的企业应用程序套件。ERPNext是免费的

如何在CentOS 7 LAMP VPS上安装Paste 2.1

如何在CentOS 7 LAMP VPS上安装Paste 2.1

使用其他系统?Paste 2.1是一个简单,灵活,免费和开源的pastebin应用程序,用于存储代码,文本等。最初是

如何在CentOS 7上安装Seafile Server

如何在CentOS 7上安装Seafile Server

使用其他系统?Seafile(社区版本)是一个免费和开源的文件同步和共享解决方案,类似于ownCloud。机智

如何在CentOS 7上安装Kolab组件

如何在CentOS 7上安装Kolab组件

使用其他系统?Kolab Groupware是一个免费的基于Web的开源组件软件。它的功能包括电子邮件通信,事件

如何在CentOS 7 LAMP VPS上安装Omeka Classic 2.4 CMS

如何在CentOS 7 LAMP VPS上安装Omeka Classic 2.4 CMS

使用其他系统?Omeka Classic 2.4 CMS是一个免费的开源数字发布平台和用于共享数字内容的内容管理系统(CMS)

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。