整理自《大话RAC》
001 集群分类
001 集群分类
高性能计算集群:应用在科学计算领域,常见于科研机构。
负载均衡集群(LB):核心是把业务的负载流量尽可能平均合理地分摊到集群各个节点。
高可用集群(HA):侧重于系统可用性,通过集成硬件和软件的容错性来实现整体服务的高可用。如果集群中的某个节点发生了故障,那么将由另外的节点代替它。即使多个节点发生故障,整个系统环境也能保证用户能够访问。
在实际应用的集群系统中,HA和LB这两种基本类型经常会发生混合与交杂。RAC就同时遇有HA和LB两种能力。
002 集群环境的特殊问题
并发控制:Oracle RAC中用DLM(Distribute Lock Management)机制来进行多个实例间的并发控制。
健忘症(Amnesia):这个问题发生在集群环境配置文件不是集中存放,而是每个节点都有一个本地副本。在集群正常运行时,用户可以在任何节点更改集群的配置,并且这种更改会自动同步到其它节点。
但考虑这样一种场景:两个节点的集群,节点1因为正常的维护需要被关闭,然后在节点2修改了某些配置,然后关闭节点2(不关闭是什么情况??),启动节点1。因为之前在节点2做的配置修改没有同步到节点1,所以节点1启动后,它仍然是用旧的配置文件工作,这时就会造成配置丢失,即“健忘”。
脑裂(split brain)
在集群里,节点间需要通过某种机制(心跳)了解彼此的健康状况,以确保各节点协调工作。假设只是“心跳”出现故障,但各个节点还在正常运行。这时,每个节点都认为其它节点宕机。自己是整个集群环境中的“唯一健在者”,自己应该获得整个集群的“控制权”。在集群环境中,存储设备都是共享的,这就意味着数据灾难,这样一种情况是就是“脑裂”。
IO隔离(IO fencing)
这是脑裂的延伸。光节点被赶出集群还不够,还必须保证被赶出集群的节点不能操作共享数据。因为这时该节点可能还在运行中,如果不加限制很有可能会修改共享数据。这就是IO隔离要解决的问题。
有硬件和软件两种方式:软件是自杀,硬件是他杀。