首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用MySQL集群实现高可用性?

问如何利用MySQL集群实现高可用性?
EN

Server Fault用户
提问于 2011-11-10 10:26:19
回答 2查看 1.6K关注 0票数 1

这个问题不是关于如何安装服务器,也不是它的功能,而是更多的设计问题。

所以我有一个MySQL服务器集群。

我也有DNS记录"data.example.com“。

MySQL集群有三个MySQL/查询节点(应用程序连接到的集群的端点)。

后面是集群的其他服务器(数据/管理)。

其目的是将此集群视为一个坚实的单元(从外部角度来看)。

现在,一个外部应用程序(比如web服务器)想要对数据库执行(写/读)操作。以下是几个步骤:

1)解析DNS "data.example.com“。

2)连接到IP (它是一个SQL节点)。

3)做好工作。

出现的第一个问题,也是比较容易的问题是:

如何通过单个DNS公开所有三个SQL节点?

  • 在DNS服务器级别上的循环?

  • 将DNS记录设置为指向SQL节点的三个IP?

出现的第二个问题,假设DNS解析为10.0.0.7,这只是三个SQL节点中的一个:如果该节点关闭了怎么办?

整个集群仍然很好,但是现在试图连接到该节点的应用程序将集群视为" down ",因为该节点确实已关闭,因此我正在失去“高可用性”。

所以我的问题很简单:

你会做些什么来解决这个问题?请详细描述,复杂性不会吓到我:)

请注意,我会在这里问关于负载平衡或诸如此类的东西,但我更愿意保持这个问题“开放”,并听到更广泛的解决方案。谢谢!

EN

回答 2

Server Fault用户

回答已采纳

发布于 2011-11-10 10:52:16

高可用性通常使用所谓的VIP (虚拟IP地址)来完成。因此,这个IP应该与分配给每个集群节点的“静态”IP地址不同。此VIP应该由您正在使用的高可用性解决方案“动态”分配。因此,在这种情况下,只有一个节点将为请求提供服务,如果该节点失败,高可用性软件将将VIP分配给集群中的另一个节点。这样,除了故障转移期间从一个节点到另一个节点的很小一部分时间外,您不会受到停机时间的影响。

如果要进行负载平衡,则需要有两个负载平衡节点和至少两个集群节点。VIP将被分配给一个负载平衡节点。应用程序请求将通过其中一个负载平衡节点定向到集群节点。

需要担心的一个重要问题是集群节点之间的数据同步,特别是在负载平衡场景中。例如,假设您正在写入一个节点并从另一个节点读取。当然,除非应用了良好的同步/负载平衡机制,否则这是行不通的。

编辑:

VIP通常是由高可用性软件分配给集群中的活动节点的私有IP地址。它只是一个与每个节点的原始IP地址不同的IP地址。它可以简单地从同一个子网分配。如果应该通过NATing访问集群节点,则公共IP地址应该是NATed。这对于能够访问服务非常重要,不管哪个节点是活动节点。

票数 1
EN

Server Fault用户

发布于 2011-11-10 10:49:44

您将需要部署一个负载均衡器来拆分sql节点上的负载,将DNS解析为该负载均衡器的ip地址。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/329673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档