公用网卡配置VIP地址,当集群中有节点宕机之后,目的是使应用能够无缝的,快速的使用rac数据库的任何一个节点(除宕机节点),这样提高了数据库的可用性(HA),保证了业务的正常运行。
为什么会提高可用性(HA)?
数据流逻辑上应用层对应用层,传输层对传输层等.
但实际上数据流是上下传送的.
客户端访问数据库服务器是典型的C/S架构,正常的数据流从客户端的应用层>传输层>网络层>物理层,到数据库服务器的物理层>网络层>传输层>应用层,数据流成功完成。
客户端提交的数据流没有问题,到了数据库服务器端,某个节点宕机了,因为没有配置VIP地址,服务器端的传输层要等到TCP/IP超时的时候,才告诉应用层,说:‘老哥,网络层有问题,我尝试了三次(应用必须忍耐这么久时间),都没有反应,“ 应用层说:”知道了”,通知客户端应用层,说,“老弟,连接失败,重新连接吧,网络出问题了“。这个时候,客户端才感知出现问题了,这么长的响应时间,应用是无法接受的。
如果配置了VIP地址,那么大不一样。
客户端提交的数据流没有问题,到了数据库服务器端,某个节点宕机了,因为配置了VIP地址,数据库服务器端的应用层在公用地址上(IP,VIP)监听,假设是两个节点的RAC,节点1宕机了,节点1的VIP1将漂移到节点2,这个时候,节点2数据库服务器端在公用地址上有IP,VIP2,VIP1,在节点2的应用层监听的地址仍然是节点2的IP,VIP2,从宕机节点1漂移到节点2的VIP1并没有被节点2监听,因此,节点2应用层马上感知节点1宕机了,可以看出,是越过了传输层,立刻通知连接节点1的客户端,说:”老弟,节点1宕机了,你马上连接到节点2来“,然后,客户端立即发起对节点2 VIP2地址的连接,如果客户端配置TAF,那么应用将感觉不到节点1宕机带来的影响,连接上节点2之后,select查询将继续,dml操作将回滚掉。至此,配置VIP地址完成了数据库的高可用性.
配置vip地址,在我看来,是越过了传输层繁琐的TCP/IP协议带来的时间的开销,直接在应用层就完成了错误的判断,是客户端连接能够快速的重新连接到活动的节点,实现了数据库的高可用性。