分类: 服务器与存储
2008-06-09 10:49:33
为提高CMS服务器提供成熟的高可用(故障切换)能力,需要对其进行双机主从备份,这样当一台机器出现故障(死掉或者该机器上的CMS服务死掉)时,能够快速的切换到另外一台机器上来;
2 典型应用组网
图1 典型应用组网 – 基于心跳和集中数据库的双机热备
基于串口,UDP和PPP/UDP的心跳信号传输。两个主备CMS后台共用一个数据库(数据库虽然自身也是主备两台,但对于CMS可见的是一台虚拟出的固定的数据库服务器),通过串口线或者网线传输的心跳信号判别对方的状态,进而来启动或停止自身服务。其中还可以添加一些硬件以应对更复杂的情况,如电子开关(power switch),它可以用来防止心跳故障产生的裂脑现象;又如硬件看门狗,它可以在服务器故障时重启操作系统。而对于各个前端和用户端设备而言,它们注册到处于active状态的主服务器上,进行业务。
3 相关技术说明
能够实现主从备份的软件有很多,目前也没有确定使用哪一种软件,但它们的共性是使用对终端设备提供一个虚拟IP地址来供访问,主从之间使用心跳机制来保活。
4 CMS主从备份原理
首先,整个主备系统需要设置心跳物理链接,以获得高可用性(HA),因此需要避免单点失效。需要在主从机器上配置两条(包括)以上的物理链接,可以是串口线和网卡(NIC)/ 交叉线,这样能够保证在一条物理链接出现问题的情况下,还有另外一条物理链接可用,有两种介质类型传输heartbeat信号比较好。
在连接好心跳线后,需要配置好心跳鉴权密码,因为为保证安全性,心跳消息是需要鉴权密码的,如果使用串口线和网卡交叉线的话,则可以不配置鉴权密码;
为了保证平台对于前端与客户端而言是不变的,需要生成一个固定的虚拟IP:首先确定主服务器,主服务器确定后就在主服务器上生成供终端和客户端访问的IP地址,该地址的生存周期是该服务器确定为主服务器期间,当确定了新的主服务器后,会去除原来主服务器上的的虚拟IP地址,在新的主服务器上生成该虚拟IP地址。
下面进行异常处理配置,设定心跳保活时间和判断服务器死掉的时间:可以精确到毫秒,这样当主服务器在在设定的时间内没有向从服务器发送心跳消息后,从服务器就会将其标识为主服务器,开始广播虚拟IP地址,接收终端和客户端的请求;
上面大致就构建好了主从环境,下面应针对具体情况设置主从切换的条件---从服务器收不到主服务器的心跳消息时进行切换,或者判断某个特定的服务死掉时即进行切换,或者在某个设定特殊时间点(比如晚上或周末);
在整个过程中应该注意:在使用ping节点之前,最好检查他们的可用性。如果不能从所有的HA节点上ping通该ping节点,便不能使用它。
对于我们的系统,主从备份服务是一个高可用(故障切换)框架,我们的CMS服务器作为一个服务在这个框架下运行,通过该服务我们并不能够实现主从CMS之间无缝的平移,而是保证了在主服务死掉后较短的时间内从服务器接管,如果需要实现热备,还需要CMS和终端及客户端作进一步的处理,此处就不讨论这个问题了。
5 配置举例
图2 配置说明
两台CMS服务器都各自备有两块以上的网卡:一块配置心跳,一块用于实际应用,分别配不同网段地址。
如上图所示,CMS的112网段的ip地址用于心跳,通过串口线相连;71网段的地址接受业务。心跳服务先启动,侦测两台服务器状态;如果两台服务器都可用,就将它们作为两个节点,并让它们知道对方的存在。HA软件将虚地址资源分配给CMS1,让这个虚地址的某些端口接收CMS1服务的各种业务,这时的CMS1就是active状态;如果CMS1服务器出现问题,比如服务器宕机,心跳服务会侦测到,然后它会告知CMS2,CMS1出现问题;然后HA软件将虚地址资源从CMS1收回,将它再分配给CMS2;从而CMS2的服务接替起CMS1上所有业务,变为active状态。如果CMS1排除故障后又变为可用,心跳服务侦测到后,会将它重新作为一个节点,并通知CMS2,这样当CMS2出现故障后,CMS1便可接替。
对于外部设备而言,相当于只见到一个具有不变地址的CMS服务器,CMS的主从备份对于它们而言是透明的。