简介
VoIP高可用包含很多方面,主要包括:
- 接入层高可用:怎么保证某个接入点出现问题,不会影响到整个平台不可用?
- 核心层高可用:怎么保证路由选择的高可用,某个网关不可用,继续尝试其他网关?
- 存储层高可用:怎么保证不会丢失录音文件,怎么保证录音文件的完整性?
- 数据库层高可用:怎么保证注册信息能够在集群中同步?
接入层高可用
最简单的场景, 只有一个fs, 无论是ua还是gw都接入到fs1上
ua1 ----> fs1
ua2 ----> fs1
gw1 ----> fs1
gw2 ----> fs1
如果要实现高可用,最简单的做法就是再加一个fs2。但是加了fs2之后,ua和gw的接入策略就需要改变了。
为了保持客户端的接入策略不变,最简单的做法加上一个负载均衡器,然后由负载均衡器来做信令转发。
ua1 ----> op1 ----> fs1
ua2 ----> | ----> fs2
gw1 ----> |
gw2 ----> |
op1是单节点的,也会存在单点故障问题,因此引入op2。
ua1 ----> op1 ----> fs1
ua2 ----> op2 ----> fs2
gw1 ----> |
gw2 ----> |
引入op2之后,有两个方案来保证高可用:
方案1, 主备: op1和op2用VIP来对外提供服务,op1和op2的VIP是一样的。实际只有一个在工作,另外一个处于备份状态。 一旦op1出现问题,op2接管VIP对外提供服务。 - 优点: 简单 - 缺点: - 兼容性:不是所有云平台都支持VIP - 成本:需要额外的硬件成本,而且还是闲置状态 - 负载:op1和op2都需要对外提供服务,但是实际上只有一个在工作,一个节点的处理能力有限,总会达到瓶颈
方案2,多活: 负载均衡。op1和op2都有公网IP, 都能对外提供服务。至于客户端接入哪个IP, 有dns解析来确定。 - 在使用dns方式时,一般dns对于每个客户端返每次返回的ip的顺序都是不一样的。例如第一个返回[ip1,ip2],