7.5 高可用性是所有冗余
让我们从一个不同的角度看一下前面的混合超市的例子。为了处理大量顾客无需长排队,无需关闭超市,混合超市雇用更多的出纳员以及安装许多(甚至更多)的收银机。
这样,如果一个收银机故障,出纳可以简单地把它关机,坐在另一个收银台前等待顾客重新到新的收银机前。顾客不需要等待太长时间,出现故障的收银机可以被修理,混合超市正常运行。这与软件和计算机技术没有一点不同,只有事件(客户程序等待数据)在更短的时间内完成。
这个例子说明,设计一个集群的最重要的方面是在每个可能的系统级别保持冗余以避免单点故障。这是一个网络连接的例子。考虑两个相互远离的数据中心和一个包含两个站点的计算机集群。集群的维护人员已经订购的俩个网络服务提供商来提供它们之间的冗余的网络连接 。然而,如果两个提供商使用的电缆埋在同一沟里,做土方工程的履带拖拉机可以损坏它们的电缆。这实际上是一个单点故障。
让我们看看对于有两台机器的小集群来说冗余意味这什么。
在最小的限度,该系统的所有东西必须有两份:
• 两台服务器
• 两个连接,一个用于公共网络,一个用于两台服务器之间的直接通信
• 用于所有连接的以太网电缆
• 用于所有连接的两个交换机
在我们的例子中,节点有四个以太网接口,每个接口都被连接到一个交换机。两个以太网接口都绑到操作系统级别的一个接口,因此它们有一个公共的IP地址。连接到公共网络的节点使用192.168.0.x IP地址范围,还有一个两个服务器使用192.168.1.x范围的私有的,直接连接。硬件会出现故障,因此,避免单点故障的一种方法是使用bonding把两个简单的以太网接口连接到一个高级的网络接口。当一切都正常工作时,这个特点可以提供较高的吞吐量,但这点真的提供了更高的可靠性。当两台机器之间的一台交换机或者一台服务器内部的一个低级别的以太网接口出现故障,通信仍然有效。