我正在尝试确定用于共享存储设备的文件系统的“最佳选择”,该共享存储设备将通过 iSCSI 安装在不确定数量的服务器上。
设置:
从本质上讲,我需要能够在许多网络服务器上安装这个大的共享卷,而且这个数字有望随着时间的推移而继续增长。我们过去一直在使用 NFS,但性能问题迫使我们寻找其他方法。(阅读:NFS 调优有时感觉像是黑魔法,尤其是在处理数百万个小图像时)。
通常情况下,设备上的写冲突不应该有问题,因为只有少数中央机器能够更改内容,但我知道如果我们这样安装它们,我们需要一些方法来在使用文件时锁定文件,这样我们就不会以损坏而告终。过去,我们依靠 NFS 来处理这个问题。所以现在我正在研究集群感知文件系统(除非我遗漏了一些东西,因此这篇文章)。
到目前为止,我为此找到了 2 个主要选择,但我不确定它们是否非常合适:
RHEL Clustering 和 GFS2 -- 似乎很适合我的环境,但是以这种方式“锁定”到发行版确实让我有点担心。如果我需要添加不同风格的服务器,会迫使我提出其他选项。不是表演障碍,而是在我的脑海中。最大的担忧是从 RHEL 文档中反复阅读他们的集群仅支持 16 个节点。如果是这样的话,它对我来说肯定不够好。这是准确的还是我读错了?
OCFS - Oracle 的集群文件系统我google的时候也很受关注,但是我对它了解不多。最麻烦的方面是我必须运行他们的 Unbreakable Enterprise Kernel,这会在将我的所有服务器迁移到该内核时造成大量中断。再一次,不是表演障碍,但我需要令人信服的证据来走这条路,尤其是在尝试这种方法时。
我错过了什么吗?我应该使用更好的方法吗?我什至考虑过完全改变架构以允许一些“前端”服务器挂载 iSCSI 分区,然后根据需要从它们进行 NFS 共享,和/或使用 nginx 反向代理将媒体分发给网络服务器.
在这种情况下,您有任何值得信赖的聪明想法吗?
一堆具有唯一文件名的新文件定期在一台服务器上“出现” 1。(就像每天数百 GB 的新数据一样,解决方案应该可扩展到 TB。每个文件都有几兆字节大,最多几十兆字节。)
有几台机器可以处理这些文件。(十个,解决方案应该可以扩展到数百个。)应该可以轻松添加和删除新机器。
有备份文件存储服务器,必须在其上复制每个传入文件以进行存档存储。数据不能丢失,所有传入的文件必须最终交付到备份存储服务器上。
每个传入的文件都被传送到单个机器进行处理,并且应该复制到备份存储服务器。
接收服务器在发送文件后不需要存储文件。
请建议一个强大的解决方案,以上述方式分发文件。解决方案不得基于 Java。Unix 方式的解决方案是可取的。
服务器基于 Ubuntu,位于同一个数据中心。所有其他事情都可以根据解决方案要求进行调整。
1请注意,我有意省略了有关文件传输到文件系统的方式的信息。原因是第三方现在通过几种不同的传统方式发送文件(奇怪的是,通过 scp 和 ØMQ)。在文件系统级别削减跨集群接口似乎更容易,但如果一个或另一个解决方案实际上需要一些特定的传输 - 传统传输可以升级到那个。
Powershell cmdlet 会Test-Cluster查询大量数据并执行验证测试,然后将这些测试打包成一份漂亮的报告。如果您运行,Test-Cluster -List您将获得一个项目列表,您可以使用 cmdlet 单独查询。当您阅读DisplayName's时,有一个通用的命名方案。它们都以"List"或"Validate"开头。
显然,“验证”将通过失败来实际测试故障转移。但是将某些东西命名为“列表”让我认为它只是对数据运行时的查询。我已经使用以下脚本对此进行了测试:
$TestList = Test-Cluster -List | Where-Object {$_.DisplayName -like "List*"}
Test-Cluster -Include $TestList.DisplayName -ReportName "c:\cluster reports\report"
Run Code Online (Sandbox Code Playgroud)
在生成此报告时,我没有看到任何记录的集群错误或注意到任何故障转移活动。Microsoft technet 对此也不是很清楚,但他们确实推断这种行为与我的想法一致。请参阅此摘录(强调我的):
测试结果以您指定的文件名记录在一个文件中。通过运行验证测试,您可以确认您的硬件和设置与故障转移群集兼容。有多种类型的测试,包括集群、库存、网络、存储、系统和其他类型的测试。存储测试不会测试集群角色正在使用的联机磁盘或存储池。要测试此类磁盘,请先运行 Stop-ClusterGroup 以停止群集角色,然后运行 Test-Cluster。测试完成后,再次启动集群角色,也称为资源组。
我想提醒您注意他们对“验证”一词的使用。此外,在运行该脚本时,作为输出的一部分,它说:
Test Result:
ClusterSkippedTestsCompleted
Run Code Online (Sandbox Code Playgroud)
如果包括验证测试,结果是:
Test Result:
ClusterConditionallyApproved
Run Code Online (Sandbox Code Playgroud)
在我的测试环境中,网络测试生成了一些触发条件批准的警告。我在谷歌上搜索了很多,以找到描述“验证”与“列表”拆分背后逻辑的文档,但我没有找到任何东西。这就引出了一个问题......
列表请求会触发故障转移事件吗?
我使用 Redis 有一段时间了,现在我们想迁移到一个容错、高可用和负载均衡的冗余集群。
我主要将 Redis 用于一些存储一些进程状态信息的 PHP Web 应用程序(我为此使用 PHPRedis),我也想将它用于负载平衡集群中的 PHP 会话存储。
我已经有一个用于 Nginx 和 MySQL 的负载平衡(基于 pfSense)。
我看到 Redis 集群存在于 Redis 3,但我也阅读了一些关于它尚未准备好用于生产这一事实的评论,其他评论则表明 Redis 无法进行完整的主/主集群配置。
你的建议是什么?
非常感谢您的帮助!
目前,我们使用 Rackspace 云服务器。我们无意停止使用它们,但想考虑建立一个物理服务器集群(可能是 400 美元范围内的台式计算机,每个具有 8GB 内存)来抵消我们的一些负载并作为辅助的、更强大的工作,不太可靠的系统。换个角度看,我们可以以与在 Rackspace Cloud 上租用一个月的价格相同的价格购买类似的台式计算机。
我知道这通常是一个愚蠢的想法。然而,在这个特定的例子中,服务器集群需要它的计算能力。它不是关键任务,它不托管面向消费者的网站,如果它宕机一两天,也不是真正的问题。
目前,我们可以访问企业级verizon fios。如果我理解正确,我们可以通过该服务获得至少 25 个专用 IP 地址,这应该足够了。
需要什么样的路由器或交换机?
台式电脑可以吗?
应该使用什么工具来“映像”服务器。
我们还缺少哪些我们应该关注的事情?
我有一个带有心跳和 DRBD 的两节点集群管理 mysql 资源。如果我停止主服务器、重新启动它或断开网络连接,故障转移效果很好。
但是,如果主服务器遇到内核崩溃(通过运行模拟echo c > /proc/sysrq-trigger),则辅助服务器不会接管资源。
这是辅助节点上的心跳日志的样子:
Jul 11 21:33:32 rad11 heartbeat: [7519]: WARN: node rad10: is dead
Jul 11 21:33:32 rad11 heartbeat: [7519]: info: Link rad10:eth0 dead.
Jul 11 21:33:32 rad11 heartbeat: [8442]: info: Resetting node rad10 with [Meatware STONITH device]
Jul 11 21:33:32 rad11 heartbeat: [8442]: ERROR: glib: OPERATOR INTERVENTION REQUIRED to reset rad10.
Jul 11 21:33:32 rad11 heartbeat: [8442]: ERROR: glib: Run "meatclient -c rad10" AFTER power-cycling the machine.
Run Code Online (Sandbox Code Playgroud)
有没有人知道为什么在这种情况下二级无法接管?通常故障转移效果很好,但我试图在主节点上模拟内核崩溃。
编辑:这是我的心跳配置,ha.cf
# …Run Code Online (Sandbox Code Playgroud) 我一直在检查 CoreOS,我印象深刻。在我发现 CoreOS 之前,我将Mesos/Marathon/Chronos堆栈视为“集群内核”。
鉴于以下比较:
init.d == Mesos+Marathon == CoreOS+Fleet
cron == Mesos+Chronos == CoreOS+?????
Run Code Online (Sandbox Code Playgroud)
我很好奇 CoreOS 是否有分布式作业调度程序?还是大多数人只是使用 Fleet 来运行其他东西?
查看以下集群共享空间 TechNet文章,看起来这仅适用于通过外部 SAS 背板共享 JBOD 机箱的主机。
但是,双节点集群中的每个主机都具有相同数量的 SAS 15K 驱动器 (4),当前配置为 RAID 10 阵列。
我想知道是否有与 VMWare 的 Virtual SAN 技术等效的 Hyper-V,而本地磁盘可以作为群集上的共享存储节点公开。
基本上,我们只想使用主机上的磁盘,而故障转移群集管理器似乎不想与本地磁盘打交道,就移动虚拟机的目标而言。如果 SAN 维护能够根据需要将 VM 随机播放到本地磁盘,那就太好了。
cluster hyper-v failovercluster shared-storage hyper-v-server-2012-r2
我最近设置了一个新环境,包括:
- 带有 10Gib 网络的 QSAN 存储
- Mellanox 交换机 10Gib
- 4 个物理节点连接到 LAN 和 SAN 10Gib
物理主机使用 MPIO 连接到 SAN 存储,在所有连接到 SAN 的物理服务器上进行了性能测试,并显示单个 SSD(在集群中以 CSV 形式存在)的 8K 随机写入 200MB/s。该测试是使用 diskspd 进行的。
现在我在集群共享卷上创建了一台 Hyper-V 机器并在虚拟机内测试了 diskspd:8k 随机写入:0.5MB/s
在检查 Hyper-V 来宾内部磁盘的延迟时,我看到类似 10 秒的值。
我很困惑为什么会这样。我想这不是 SAN 存储,也不是 ISCSI 或 MPIO 设置,因为我在物理主机上进行测试时得到了预期的结果。所以Hyper-V的配置肯定有问题。
我正在 Hyper-V 来宾中的 C: 驱动器上进行测试,这是一个固定大小的 IDE 驱动器(因为 SCSI 将无法启动)。SAN 卷使用 64k...
CSV 与 Hyper-V 来宾属于同一主机,...
更新:不幸的是,Guest-VM 是第 1 代。
cluster storage-area-network failovercluster windows-server-2012-r2 cluster-shared-volumes
我在两台机器上安装了microk8s(1.24/stable)。\n两台机器的ip分别是\xef\xbc\x9a172.29.99.187、172.29.99.188。\n我在172.29.99.187\xef\xbc\下操作命令x9amicrok8s add-node
输出:
\nFrom the node you wish to join to this cluster, run the following:\nmicrok8s join 172.29.99.187:25000/57a191d07ce8fe360e13f4f1e9026ce8/5be428d4e916\n\nUse the '--worker' flag to join a node as a worker not running the control plane, eg:\nmicrok8s join 172.29.99.187:25000/57a191d07ce8fe360e13f4f1e9026ce8/5be428d4e916 --worker\n\nIf the node you are adding is not reachable through the default interface you can use one of the following:\nmicrok8s join 172.29.99.187:25000/57a191d07ce8fe360e13f4f1e9026ce8/5be428d4e916\nmicrok8s join 192.168.192.122:25000/57a191d07ce8fe360e13f4f1e9026ce8/5be428d4e916\nmicrok8s join 172.24.0.1:25000/57a191d07ce8fe360e13f4f1e9026ce8/5be428d4e916\nmicrok8s join 172.30.239.1:25000/57a191d07ce8fe360e13f4f1e9026ce8/5be428d4e916\nmicrok8s join 172.17.0.1:25000/57a191d07ce8fe360e13f4f1e9026ce8/5be428d4e916\nRun Code Online (Sandbox Code Playgroud)\n我在172.29.99.188\xef\xbc\x9a处操作命令
\nmicrok8s join 172.29.99.187:25000/57a191d07ce8fe360e13f4f1e9026ce8/5be428d4e916\nRun Code Online (Sandbox Code Playgroud)\n输出:
\nContacting cluster …Run Code Online (Sandbox Code Playgroud)