标签: cluster

iSCSI 共享存储的 Linux 文件系统选项

我正在尝试确定用于共享存储设备的文件系统的“最佳选择”,该共享存储设备将通过 iSCSI 安装在不确定数量的服务器上。

设置:

  • 27 TB Synology RS2212+ 阵列,允许多个会话的 iSCSI LUN/目标
  • 10-20 个基于 CentOS 的 linux 机器,主要是网络服务器
  • 共享存储将托管静态 Web 内容(媒体,主要是图像)

从本质上讲,我需要能够在许多网络服务器上安装这个大的共享卷,而且这个数字有望随着时间的推移而继续增长。我们过去一直在使用 NFS,但性能问题迫使我们寻找其他方法。(阅读:NFS 调优有时感觉像是黑魔法,尤其是在处理数百万个小图像时)。

通常情况下,设备上的写冲突不应该有问题,因为只有少数中央机器能够更改内容,但我知道如果我们这样安装它们,我们需要一些方法来在使用文件时锁定文件,这样我们就不会以损坏而告终。过去,我们依靠 NFS 来处理这个问题。所以现在我正在研究集群感知文件系统(除非我遗漏了一些东西,因此这篇文章)。

到目前为止,我为此找到了 2 个主要选择,但我不确定它们是否非常合适:

RHEL Clustering 和 GFS2 -- 似乎很适合我的环境,但是以这种方式“锁定”到发行版确实让我有点担心。如果我需要添加不同风格的服务器,会迫使我提出其他选项。不是表演障碍,而是在我的脑海中。最大的担忧是从 RHEL 文档中反复阅读他们的集群仅支持 16 个节点。如果是这样的话,它对我来说肯定不够好。这是准确的还是我读错了?

OCFS - Oracle 的集群文件系统我google的时候也很受关注,但是我对它了解不多。最麻烦的方面是我必须运行他们的 Unbreakable Enterprise Kernel,这会在将我的所有服务器迁移到该内核时造成大量中断。再一次,不是表演障碍,但我需要令人信服的证据来走这条路,尤其是在尝试这种方法时。

我错过了什么吗?我应该使用更好的方法吗?我什至考虑过完全改变架构以允许一些“前端”服务器挂载 iSCSI 分区,然后根据需要从它们进行 NFS 共享,和/或使用 nginx 反向代理将媒体分发给网络服务器.

在这种情况下,您有任何值得信赖的聪明想法吗?

linux cluster filesystems gfs2

8
推荐指数
1
解决办法
8331
查看次数

传入文件的循环

一堆具有唯一文件名的新文件定期在一台服务器上“出现” 1。(就像每天数百 GB 的新数据一样,解决方案应该可扩展到 TB。每个文件都有几兆字节大,最多几十兆字节。)

有几台机器可以处理这些文件。(十个,解决方案应该可以扩展到数百个。)应该可以轻松添加和删​​除新机器。

有备份文件存储服务器,必须在其上复制每个传入文件以进行存档存储。数据不能丢失,所有传入的文件必须最终交付到备份存储服务器上。

每个传入的文件都被传送到单个机器进行处理,并且应该复制到备份存储服务器。

接收服务器在发送文件后不需要存储文件。

请建议一个强大的解决方案,以上述方式分发文件。解决方案不得基于 Java。Unix 方式的解决方案是可取的。

服务器基于 Ubuntu,位于同一个数据中心。所有其他事情都可以根据解决方案要求进行调整。


1请注意,我有意省略了有关文件传输到文件系统的方式的信息。原因是第三方现在通过几种不同的传统方式发送文件(奇怪的是,通过 scp 和 ØMQ)。在文件系统级别削减跨集群接口似乎更容易,但如果一个或另一个解决方案实际上需要一些特定的传输 - 传统传输可以升级到那个。

cluster storage

8
推荐指数
2
解决办法
478
查看次数

测试集群 Powershell cmdlet 列表与验证

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。测试完成后,再次启动集群角色,也称为资源组。

测试集群 TechNet 页面

我想提醒您注意他们对“验证”一词的使用。此外,在运行该脚本时,作为输出的一部分,它说:

Test Result:
ClusterSkippedTestsCompleted
Run Code Online (Sandbox Code Playgroud)

如果包括验证测试,结果是:

Test Result:
ClusterConditionallyApproved
Run Code Online (Sandbox Code Playgroud)

在我的测试环境中,网络测试生成了一些触发条件批准的警告。我在谷歌上搜索了很多,以找到描述“验证”“列表”拆分背后逻辑的文档,但我没有找到任何东西。这就引出了一个问题......

列表请求会触发故障转移事件吗?

powershell cluster windows-server-2012-r2

8
推荐指数
1
解决办法
7056
查看次数

Redis 高可用和负载均衡

我使用 Redis 有一段时间了,现在我们想迁移到一个容错、高可用和负载均衡的冗余集群。

我主要将 Redis 用于一些存储一些进程状态信息的 PHP Web 应用程序(我为此使用 PHPRedis),我也想将它用于负载平衡集群中的 PHP 会话存储。

我已经有一个用于 Nginx 和 MySQL 的负载平衡(基于 pfSense)。

我看到 Redis 集群存在于 Redis 3,但我也阅读了一些关于它尚未准备好用于生产这一事实的评论,其他评论则表明 Redis 无法进行完整的主/主集群配置。

你的建议是什么?

  • 尝试Redis集群
  • 转移到另一个键=值引擎(CouchDB?Memcached?其他?)
  • 不要介意负载平衡,每次只使用集群的一个节点,并进行手动故障转移,因为我不使用持久性
  • 其他想法?

非常感谢您的帮助!

cluster failover load-balancing redis

8
推荐指数
1
解决办法
3万
查看次数

建立物理服务器集群需要哪些“部分”?

背景:

目前,我们使用 Rackspace 云服务器。我们无意停止使用它们,但想考虑建立一个物理服务器集群(可能是 400 美元范围内的台式计算机,每个具有 8GB 内存)来抵消我们的一些负载并作为辅助的、更强大的工作,不太可靠的系统。换个角度看,我们可以以与在 Rackspace Cloud 上租用一个月的价格相同的价格购买类似的台式计算机。

我知道这通常是一个愚蠢的想法。然而,在这个特定的例子中,服务器集群需要它的计算能力。它不是关键任务,它不托管面向消费者的网站,如果它宕机一两天,也不是真正的问题。

目前,我们可以访问企业级verizon fios。如果我理解正确,我们可以通过该服务获得至少 25 个专用 IP 地址,这应该足够了。

要求:

  • 每台服务器运行 Linux Centos 6.3
  • 一些服务器运行 Python 并从任务队列(Redis 或 RabbitMQ)执行进程
  • 一些服务器能够提供静态文件和 Python 驱动的 REST API
  • 一些服务器托管 Cassandra 数据库集群
  • 一台或多台服务器是Redis数据库服务器
  • 一台或多台服务器是 PostgreSQL 服务器

问题:

需要什么样的路由器或交换机?

  • 我们希望计算机能够通过内部 IP 地址相互有效通信。这对于与需要能够非常快速地响应请求的托管 Redis 的服务器进行通信尤其重要。是否需要使用特殊的交换机或路由器将服务器连接在一起?

台式电脑可以吗?

  • 我们发现我们大多是 RAM 瓶颈,我知道有些服务器具有非常出色的 CPU,但我不确定我们需要的 CPU 能力与我们需要的 RAM 一样多,这在台式计算机中很便宜。
  • 我们是否会遇到台式机中的 WIFI 卡或任何其他意外硬件限制的问题?

应该使用什么工具来“映像”服务器。

  • 例如,当我们正确安装 Redis 服务器或 Cassandra 节点时,是否有 Linux Centos 6.3 附带的工具可以将服务器映像到 USB 驱动器或类似的东西?
  • 或者我们需要为此使用其他软件吗?

我们还缺少哪些我们应该关注的事情?

linux cluster centos

7
推荐指数
1
解决办法
245
查看次数

关于内核恐慌的心跳肉制品 STONITH

我有一个带有心跳和 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)

cluster heartbeat linux-ha

7
推荐指数
1
解决办法
887
查看次数

CoreOS 是否具有集群感知作业调度程序?

我一直在检查 CoreOS,我印象深刻。在我发现 CoreOS 之前,我将Mesos/Marathon/Chronos堆栈视为“集群内核”。

鉴于以下比较:

init.d == Mesos+Marathon == CoreOS+Fleet
cron   == Mesos+Chronos  == CoreOS+?????
Run Code Online (Sandbox Code Playgroud)

我很好奇 CoreOS 是否有分布式作业调度程序?还是大多数人只是使用 Fleet 来运行其他东西?

cluster scheduler coreos apache-mesos

7
推荐指数
1
解决办法
2345
查看次数

双节点服务器 2012 R2 Hyper-V 集群:是否可以在集群中使用本地物理磁盘?

查看以下集群共享空间 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

7
推荐指数
1
解决办法
1万
查看次数

Hyper-V 存储在 CSV 上的糟糕表现

我最近设置了一个新环境,包括:
- 带有 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

7
推荐指数
1
解决办法
1744
查看次数

创建 MicroK8s 集群时出错:连接失败。加入节点的主机名 (xx) 未解析为 IP“xx”。拒绝加入 (400)

我在两台机器上安装了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

\n

输出:

\n
From 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\n
Run Code Online (Sandbox Code Playgroud)\n

我在172.29.99.188\xef\xbc\x9a处操作命令

\n
microk8s join 172.29.99.187:25000/57a191d07ce8fe360e13f4f1e9026ce8/5be428d4e916\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
Contacting cluster …
Run Code Online (Sandbox Code Playgroud)

cluster microk8s

7
推荐指数
1
解决办法
8907
查看次数