标签: high-availability

双向文件系统透明解决方案

我需要实现某种 HA 设置,其中两台服务器需要能够始终保持同步,无论您在哪一台服务器上写入。数据库部分可以通过主主复制设置来覆盖。然而,当涉及到文件和内容时,我一直无法找到能够很好地满足这些需求的东西。例如,我需要能够将 /var/www 从一台机器复制到另一台机器,并且能够在其中任何一台机器中进行写入,并且无论 http 请求发送到何处,始终具有相同的可用内容。

  • unison:易于使用,概念简单,但它更像是 2 路 rsync,不会自动传播文件更改,除非您使用重复选项运行它。我不确定这有多可靠。我希望有一个类似守护进程的功能,可以“监视”文件夹内容的更改。
  • glusterfs:易于配置,一个不错的项目,似乎非常适合我的需要,但是,它似乎无法处理这种2路。
  • xtreemfs:如果您想要复制,则很难配置(文档有点难以理解),并且似乎更多地用于“分布式文件系统”部分而不是复制方面。
  • ceph:与 gluster 类似,但同样,不要认为它处理 2 路复制。
  • mogilefs:不透明,您构建的应用程序需要了解它并使用它的服务来访问文件系统。不是我能用的东西。

所以我不确定双向复制是否是通常不做的事情,我需要重新考虑这一点,或者我还没有对此进行足够的研究,但我不知所措。我似乎没有找到其他解决方案。

还有其他东西可以处理自动透明的双向文件复制吗?

filesystems replication high-availability glusterfs unison

5
推荐指数
1
解决办法
758
查看次数

DRBD + corosync +pacemaker - 故障转移后服务器将无法连接

我有 2 台服务器配置了 drbd、corosync 和pacemaker。一切工作正常,如果主服务器发生故障,则主服务器将成为辅助服务器,辅助服务器将成为主服务器。

但是如果第一台服务器在故障转移后再次出现,drbd 将无法再次连接,我必须执行

drbdadm 连接所有

在现在的中学。

这是来自 server1 的日志,其中包含我所做的所有输入(https://www.refheap.com/95997):

root@server1:~# ifdown eth4


Jan 12 08:11:37 server1 kernel: [237958.935578] ixgbe 0000:04:00.0: removed PHC on eth4
Jan 12 08:11:43 server1 kernel: [237965.430849] cib[2877]: segfault at 0 ip 00007f7d342c8aca sp 00007fffaba39e58 error 4 in libc-2.19.so[7f7d34247000+19f000]
Jan 12 08:11:44 server1 kernel: [237966.427423] crmd[2878]: segfault at 0 ip 00007eff7d291aca sp 00007fffaae51538 error 4 in libc-2.19.so[7eff7d210000+19f000]
Jan 12 08:11:46 server1 kernel: [237967.955014] drbd r0: peer( Secondary -> Unknown ) conn( …
Run Code Online (Sandbox Code Playgroud)

failover high-availability drbd pacemaker corosync

5
推荐指数
1
解决办法
2544
查看次数

Redis:只读从站与故障转移从站?

我正在阅读大量有关 Redis 网络配置的文档,但我对架构心智模型中的要求似乎与当前选项不符的情况感到困惑。

首先:我不需要分片,因为目前可扩展性不是问题。所以现在只有一个主节点(节点 M)。

第二:我想要冗余,也就是说,如果一个主节点出现故障,我想要第二个节点接管,并执行客户端发送它们的请求。我们称其为第一个从站:故障转移从站(节点 FS)。

第三:我还想要另一个副本节点,它是一个从属节点,但只提供只读查询。如果客户端连接到它,并且客户端尝试修改数据,则节点应该给出错误。我们称其为第二个从站:只读从站 (RS)。

最后:我想要只读从属设备的故障转移。也就是说,如果 RS 死了,我希望另一个只读从站接管它的任务。我们称之为第四个从站:故障转移只读从站 (FRS)。

有没有办法像这样配置Redis?似乎所有的部署模式(正在阅读这篇文章:https : //blog.octo.com/en/what-redis-deployment-do-you-need/)除了集群之外都有一个主节点。现在,似乎我的“FS”节点将成为第二个主节点,因为它接受写查询,但是,集群配置默认启用分片,并且似乎没有正常的方法可以禁用它,除非我遗漏了一些东西。

failover replication high-availability failovercluster redis

5
推荐指数
1
解决办法
3487
查看次数

如果未选择可用性选项,则在 Azure 上使用哪个 VM 可用区?

我发现 Azure 可用区的文档有点缺乏有关高可用性的详细信息,因此我希望这里有人了解有关某些未记录行为的详细信息。

  1. 当在 Azure 上预配虚拟机(或任何其他区域资源,如磁盘)但未选择可用性选项(本例中为可用区)时,会发生什么情况。如果有三个Zone,它驻留在哪个Zone。在 AWS 上,所有虚拟机都位于某个区域,如果没有其他情况,也是随机的。但是 Azure 上有什么?也是随机的,第四个?没有任何?不包含在区域中的单独数据中心?区域内是否存在不属于任何区域的 Azure 数据中心?

  2. 为什么我们可以将(数据)磁盘放置在与我们附加的虚拟机不同的可用区域中?由于磁盘可能距离较远,这是否会导致性能下降?AFAIK,这在 AWS 上甚至是不可能的,例如,EBS 必须与 EC2 实例位于同一区域,并且子网不能跨越不同的区域。

high-availability availability azure

5
推荐指数
1
解决办法
3994
查看次数

高可用 MariaDB 只有两台服务器

我不担心裂脑,因为两台服务器之间的连接是可靠的(而且因为我没有第三台机器)

我想要一些带有自动故障转移功能的 MariaDB 复制,这样即使一个数据库死了,它也能继续工作。我见过 MaxScale,但是因为我只有两台机器,所以它必须与其中一台服务器在同一台机器上运行,如果该服务器死机,那么什么都不起作用。AFAIK,MariaDB Galera 集群将拒绝让我只在两个上运行并具有自动故障转移(需要仲裁)。但是,我可能能够在另一台机器上运行仲裁器,甚至可以在其上运行另一个数据库,但速度会很慢。

此外,后端是 PHP - 我愿意更改 mysqli 设置等,但我不知道是否或我必须在那里更改。


编辑:我愿意放弃自动故障转移,但我想要的行为如下:

如果我连接到服务器 A,它会连接到数据库 A(主)并正常读取/写入。

如果我连接到 Serer B,它会连接到数据库 B(只读从站)并且读取得很好。如果它必须写入,它将能够写入,但会将它们推送到数据库 A。

这是否可以在两台服务器上使用 MaxScale 或类似的东西?

lamp high-availability mariadb

5
推荐指数
1
解决办法
1205
查看次数

我这样做错了吗?网络 - 高可用性:SAN、MSFT 故障转移群集、NIC 组合

我一直在实验室环境中研究如何使用多个 NIC、MPIO 和 iSCSI 设计具有 Microsoft 故障转移群集的 SAN。我会尽力添加尽可能多的有用信息,如果我遗漏了任何细节,请原谅我。。。这对我来说都是一次全新的学习经历。

目标:通过添加从集群中每个节点到存储的第二条路径(交换机)来提高可用性/容错能力。允许网络上的客户端访问集群中运行的资源/服务。

到目前为止我所做的:我已经成功设置并配置了带有 MPIO 和 iSCSI 的 2 节点集群。他们通过 QNAP NAS 上的 CSV 共享存储。Switch Embedded 团队中的每个节点都有 2 个 NIC。每个 NIC 连接到其中一台交换机。每个 QNAP 以太网端口(只有 2 个)也连接到其中一台交换机。我在主机操作系统中创建了以下虚拟网络适配器...

  • 管理192.168.1.XX
  • CSV 10.10.10.XX
  • 实时迁移 10.10.40.XX
  • iSCSI-01 10.10.20.XX
  • iSCSI-02 10.10.30.xx

我在实验室中使用的交换机是非常基本的第 3 层交换机。我对它们进行了零配置,因为我不知道是否有什么我必须做的。只要我将两个交换机通过以太网电缆相互连接,一切似乎都可以正常工作。由于 QNAP 只有 2 个以太网端口,因此我必须为节点创建一条路径以到达第二台交换机上的 QNAP 的第二个 iSCSI 目标。这是一个简陋的设置,但它有效。我通过将其中一个连接拉到一个节点来模拟故障......一切都很好。

我不知道的是:我的实验室仅限于节点、2 个交换机和 NAS。我不知道接下来的正确步骤是什么,以便将其集成到网络中,以便客户端可以访问集群中的资源。如果只有一个 SAN/“fabric”交换机(这个术语正确吗?),没问题。我只需将其链接到另一个连接到客户端的交换机...这就是我们当前的设置。

起初,我以为它只是通过某种魔法发挥作用(这就是网络对我的意义),但我觉得我错过了一些东西。将两个 SAN 交换机链接到单个 LAN 交换机时,流量的流动方式是否会出现问题?我什至不确定这是否是“正确”的做法。

我知道我在这个等式中缺少一个路由器。。。这个实验室实验似乎不需要它,因为我没有做任何类型的路由。在生产中,我们的网络使用 VLAN 进行分段。

反正 。。。这是我认为在生产中会是什么样子的图表。 网络图

编辑:或者我应该做这样的事情?SAN 应该通过 SAN 交换机连接到 LAN 还是服务器应该通过交换机直接连接到 LAN?

networking storage-area-network hyper-v high-availability failovercluster

5
推荐指数
2
解决办法
254
查看次数

冗余 openvpn 配置

我有两个带有鲤鱼的 openbsd nat/防火墙盒,用于故障转移/高可用性目的。确保我计划在这些机器上运行的 OpenVPN 也能正常故障转移的最佳实践是什么?

openvpn high-availability openbsd carp

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

DNS 循环:多个名称服务器 VS 多个 A 记录?

注意:这是我之前关于 DNS Failover 的问题的后续。

目标:使客户端的 Web 浏览器在服务器立即停机时选择下一个可用的服务器。

我在某处读到多条 A 记录(虽然不是最佳解决方案)是基于 HTTP/浏览器的应用程序唯一可能的“即时故障转移”解决方案。

这是场景/示例:

我有两个服务器 A 和 B,它们包含完全相同的内容。服务器A的IP地址是1.1.1.1和1.1.1.2 服务器B的IP地址是2.2.2.1和2.2.2.2 我在Godaddy注册了一个域名。如果我想使用 DNS 轮询,哪种方法最好?

方法 1:我是否像这样在 Godaddy 设置我的名称服务器条目?

  1. ns1.serverA.com
  2. ns2.serverA.com
  3. ns1.serverB.com
  4. ns2.serverB.com

方法 2: 或者我将 Godaddy 作为我的名称服务器并添加这样的 A 记录:

  1. A@1.1.1.1
  2. A@1.1.1.2
  3. A@2.2.2.1
  4. A@2.2.2.2

我的问题是,DNS 轮循机制可以使用这两种方法中的任何一种吗?如果不是,那么实现目标的最佳方法是什么?

domain-name-system domain failover high-availability

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

谷歌网络架构

我知道这个问题可能会被关闭为“不是一个真正的问题”、“主观的”甚至是“争论性的”。如果这是一个错误,我很抱歉。

我根本不擅长网络,但我正在努力变得更好并学习更多。(您可能知道这句话:“获得智慧的第一步是承认自己很愚蠢”:P)。

在我的浏览器中输入 www.google.com 并按 Enter 后,网络方面会发生什么?

这是我目前所知道的:

  • 浏览器应用程序发出 DNS 请求以查找 www.google.com 的 IP。它可能会找到 209.85.148.105(这就是我现在刚刚解决的问题)。
  • 然后它通过 TCP/IP 连接到端口 80(HTTP 的默认端口)上的主机,并发送一个 HTTP 请求,如 GET /
  • 接收 HTML 数据并显示它(以及加载其他资源,如 .css、图像文件等)

我想知道的是它是如何一步一步连接到 Google 服务器的。在请求从我的计算机和我的 ISP 发出后,它最终会在某个时候访问 google 硬件。

  • 有负载均衡器吗?
  • 其中有多少?
  • 是否有多个级别的负载均衡器?即:负载均衡器的负载均衡器的负载均衡器...
  • 终端网络服务器有多强大?它会不会是一台糟糕的 500 MHz CPU 机器,配备 512MB RAM 和 10 GB HDD?或者也许是一个 8 核、16GB、RAID-0 SSD 野兽?
  • 他们在网络级别使用什么样的冗余?
  • 如果负载均衡器出现故障会怎样?
  • 怎样才能使 www.google.com 不可用?(不,我不想破坏或……)

networking high-availability google load-balancing architecture

4
推荐指数
1
解决办法
701
查看次数

冗余服务器应该具有完全相同的配置,还是略有不同?

如果您在两台服务器上提供服务以确保高可用性,那么以完全相同的方式配置它们会更好,还是应该引入细微的差异以防止“异常配置”错误?

我们在 Linux (Ubuntu LTS)、Nginx、Apache 和 Python WSGI 堆栈上托管了一个基于 Django 的网站,在负载均衡器后面的三台服务器上复制。目前它们托管在亚马逊云中,但我们将来可能会转移到我们自己的数据中心。我们最近在所有三台服务器上都遇到了一个问题,只能通过升级内核来解决,这让我们认为这个特定版本的内核与亚马逊当时可能已经开始使用的物理硬件不兼容。

这让我想到:让所有机器保持完全相同的配置会更好(更容易管理?),还是应该保持稍微不同的东西,这样两个组件之间的不兼容只会在一台机器上而不是所有机器上表现出来其中,保持您的网站在空中?

configuration high-availability redundancy best-practices

4
推荐指数
1
解决办法
284
查看次数