标签: linux-ha

在不同物理位置具有自动故障转移功能的高可用 MySQL 架构

我一直在研究数据中心之间 MySQL 的高可用性 (HA) 解决方案。

对于位于同一物理环境中的服务器,我更喜欢使用主动被动方法的带心跳的双主(浮动 VIP)。心跳通过串行连接和以太网连接。

最终,我的目标是在数据中心之间保持相同级别的可用性。我想在没有人工干预的情况下在两个数据中心之间进行动态故障转移,并且仍然保持数据完整性。

上面会有 BGP。两个位置的 Web 集群,这将有可能路由到双方之间的数据库。如果站点 1 上的 Internet 连接中断,则客户端将通过站点 2 路由到 Web 集群,如果两个站点之间的链接仍然存在,则路由到站点 1 中的数据库。

在这种情况下,由于缺乏物理链接(串行),更有可能发生脑裂。如果两个站点之间的 WAN 出现故障,VIP 最终会出现在两个站点上,在那里各种令人不快的情况可能会导致不同步。

我看到的另一个潜在问题是,将来难以将此基础设施扩展到第三个数据中心。

网络层不是重点。在这个阶段,架构是灵活的。同样,我的重点是维护数据完整性以及与 MySQL 数据库的自动故障转移的解决方案。我可能会围绕此设计其余部分。

您能否为两个物理上不同的站点之间的 MySQL HA 推荐一个经过验证的解决方案?

感谢您抽出时间来阅读。我期待着阅读您的建议。

mysql linux disaster-recovery heartbeat linux-ha

19
推荐指数
1
解决办法
5723
查看次数

关于内核恐慌的心跳肉制品 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
查看次数

在最新的 Centos 6 中找不到 crm 命令(起搏器的集群管理)

我以前做过这样的设置,没有任何问题。现在我无法执行“crm 配置”,因为当前包中没有可用的 crm 命令。

我错过了什么吗?也许它被其他方式/命令取代?

[root@node1 src]# find / -name crm*|grep bin
/usr/sbin/crm_mon
/usr/sbin/crmadmin
/usr/sbin/crm_error
/usr/sbin/crm_shadow
/usr/sbin/crm_ticket
/usr/sbin/crm_failcount
/usr/sbin/crm_resource
/usr/sbin/crm_master
/usr/sbin/crm_diff
/usr/sbin/crm_attribute
/usr/sbin/crm_node
/usr/sbin/crm_simulate
/usr/sbin/crm_standby
/usr/sbin/crm_verify
/usr/sbin/crm_report
Run Code Online (Sandbox Code Playgroud)

linux centos heartbeat pacemaker linux-ha

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

如何让 DRBD 节点脱离连接状态 StandAlone(和 WFConnection)?

我的 Debian 8.9 DRBD 8.4.3 设置不知何故进入了两个节点无法再通过网络连接的状态。他们应该复制单个资源r1,但紧接着drbdadm down r1; drbadm up r1在两个节点上他们/proc/drbd描述的情况如下:

在第一个节点上(连接状态为WFConnectionStandAlone):

1: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
   ns:0 nr:0 dw:0 dr:912 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:20
Run Code Online (Sandbox Code Playgroud)

在第二个节点上:

1: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown   r-----
   ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:48
Run Code Online (Sandbox Code Playgroud)

两个节点可以通过 中引用的 IP 地址相互 ping 通/etc/drbd.d/r1.res,并netstat显示两者都在引用的端口上进行侦听。

我如何(进一步诊断和)摆脱这种情况,以便两个节点可以连接并再次通过 DRBD 进行复制?

顺便说一句,在更高的抽象层次上,这个问题目前通过systemctl start drbd永不退出表现出来,显然是因为它被卡在了 …

debian drbd linux-ha

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

使起搏器重试失败的资源

我想让起搏器重新尝试启动我的资源

primitive Imq ocf:example:imq \
   op monitor on-fail="restart" interval="10s" \
   op start interval="0" timeout="60s" on-fail="restart" \
   meta failure-timeout="30s"
Run Code Online (Sandbox Code Playgroud)

请注意,此资源通过以下方式固定到第一个节点

location location_Imq Imq inf: vm1
location location_Imq1 Imq -inf: vm2
Run Code Online (Sandbox Code Playgroud)

目前,如果我破坏了阻止此资源启动失败计数的内容,则返回 INFINITY 并停止尝试重新启动服务。

我希望永远不会放弃资源,以便一旦间歇性问题自行清除,资源将重新启动并恢复服务。

在 CentOS 上使用起搏器 1.0。

linux pacemaker linux-ha

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