2在服务端程序中,经常使用双机热备。双机热备的核心思想就是其中一台服务器出现故障时,另一台处于备用状态的机器立即接管所有工作。要实现双机热备,必须实现虚拟IP。虚拟IP的目的是两台服务器有自己独立的IP,但对外提供的是一个统一的虚拟IP。
比如A服务器的IP为192.168.0.2,B服务器的IP为192.168.0.3,对外的虚拟IP为:192.168.0.4。当A服务器工作时,它除了自身的192.168.0.2这个IP外,还要实现一个虚拟IP:192.168.0.4。此时,客户端访问虚拟IP,其实质就是访问192.168.0.2。换句话说,192.168.0.4和192.168.0.2在整个网络中指向的就是同一台服务器,即服务器A。如果服务器A出现故障,此时要做的动作有两个,一是清除自身的虚拟IP,二是告诉服务器B立即实现虚拟IP,从而接管自己的工作。
下图是当服务器A工作时的情形:
服务器B工作时的情形与此类似:
实际运行中,服务器A和服务器B有心跳检测包。比如服务器B指定时间内没有收到服务器A发来的心跳包就认为服务器A出现故障掉线了,此时服务器B应主动接管所有工作。
要实现虚拟IP,主要是操作系统的注册表和通知系统IP信息发生变化。下面是实现IP设置的代码:
评论