简介

VoIP高可用包含很多方面,主要包括:

  1. 接入层高可用:怎么保证某个接入点出现问题,不会影响到整个平台不可用?
  2. 核心层高可用:怎么保证路由选择的高可用,某个网关不可用,继续尝试其他网关?
  3. 存储层高可用:怎么保证不会丢失录音文件,怎么保证录音文件的完整性?
  4. 数据库层高可用:怎么保证注册信息能够在集群中同步?

接入层高可用

最简单的场景, 只有一个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],