这个问题不是关于如何安装服务器,也不是它的功能,而是更多的设计问题。
所以我有一个MySQL服务器集群。
我也有DNS记录"data.example.com“。
MySQL集群有三个MySQL/查询节点(应用程序连接到的集群的端点)。
后面是集群的其他服务器(数据/管理)。
其目的是将此集群视为一个坚实的单元(从外部角度来看)。
现在,一个外部应用程序(比如web服务器)想要对数据库执行(写/读)操作。以下是几个步骤:
1)解析DNS "data.example.com“。
2)连接到IP (它是一个SQL节点)。
3)做好工作。
出现的第一个问题,也是比较容易的问题是:
如何通过单个DNS公开所有三个SQL节点?
出现的第二个问题,假设DNS解析为10.0.0.7,这只是三个SQL节点中的一个:如果该节点关闭了怎么办?
整个集群仍然很好,但是现在试图连接到该节点的应用程序将集群视为" down ",因为该节点确实已关闭,因此我正在失去“高可用性”。
所以我的问题很简单:
你会做些什么来解决这个问题?请详细描述,复杂性不会吓到我:)
请注意,我会在这里问关于负载平衡或诸如此类的东西,但我更愿意保持这个问题“开放”,并听到更广泛的解决方案。谢谢!
发布于 2011-11-10 10:52:16
高可用性通常使用所谓的VIP (虚拟IP地址)来完成。因此,这个IP应该与分配给每个集群节点的“静态”IP地址不同。此VIP应该由您正在使用的高可用性解决方案“动态”分配。因此,在这种情况下,只有一个节点将为请求提供服务,如果该节点失败,高可用性软件将将VIP分配给集群中的另一个节点。这样,除了故障转移期间从一个节点到另一个节点的很小一部分时间外,您不会受到停机时间的影响。
如果要进行负载平衡,则需要有两个负载平衡节点和至少两个集群节点。VIP将被分配给一个负载平衡节点。应用程序请求将通过其中一个负载平衡节点定向到集群节点。
需要担心的一个重要问题是集群节点之间的数据同步,特别是在负载平衡场景中。例如,假设您正在写入一个节点并从另一个节点读取。当然,除非应用了良好的同步/负载平衡机制,否则这是行不通的。
VIP通常是由高可用性软件分配给集群中的活动节点的私有IP地址。它只是一个与每个节点的原始IP地址不同的IP地址。它可以简单地从同一个子网分配。如果应该通过NATing访问集群节点,则公共IP地址应该是NATed。这对于能够访问服务非常重要,不管哪个节点是活动节点。
发布于 2011-11-10 10:49:44
您将需要部署一个负载均衡器来拆分sql节点上的负载,将DNS解析为该负载均衡器的ip地址。
https://serverfault.com/questions/329673
复制相似问题