在做关键服务,及大容量服务时,常常会用到负载平衡(loadbalance)及冗余备份(Redundancy)方案。
一,负载平衡:
大负载大容量的服务时,需要此方案,多是为了分载每一个服务的压力,对负载进行均衡分配。
网络服务负载平衡有很多方案:
1,基于VRRP的网络服务:此方案关键是利用ARP协议,两台以上的机器定期告诉接入网关,自己是某个服务IP,这样,服务就会根据负载情况,或者定时充当这个IP的机器,从而起到负载平衡作用,但这里的业务数据要保持一致。相关的session要进行统一同步复制。
2,基于网络硬件的服务:位于服务网络入口处,接入硬件设备,由些网络设备分别转发业务数据给相应的多台服务器。需业务数据同步。
3,基于业务的负载平衡:以业务ID分段/域划分等方法,每台服务器进行为特定ID段业务服务。这需要服务器的统一进行管理。
4,数据库的负载平衡:这个比较复杂,MySQL有主从同步服务器的方案,也有服务器族方案,Oracle有自己的集群机制,及负载方案,10年前,就用过Oracle的负载方式。DB2同样也有自己的集群方案share-nothing,也曾见过网上提过负载代理的方案,需要第三方软件。
冗余备份的方案也有很多种:
1,基于VRRP: 一主多从,当一有个服务器停止服务,VRRP会自动实现冗余功能,因为这台停止服务的机器不再发ARP包来争夺控制权。
2, 基于业务的: 有服务器管理器,被管理服务器以心 跳时表示其有效,当超时没有心跳时,管理服务器会对该服务器反注册,或者走启动备份服务器。
3,基于存贮的:大家都应该熟悉RAID的冗余阵列方案。不在多说。
4,数据库的冗余备份方案过于多样,以后专门整理。
5,基于代理的,这个原理基本相同于基于业务的方式。