如何进行负载平衡并创建高可用性SIP和PBX服务

张贴 Zevenet | 6 年 2019 月 XNUMX 日

详情

网络电话 代表 互联网协议语音,它涵盖了通过互联网拨打的任何电话,但为了使其真实 SIP 协议已定义。

SIP or 会话启动协议 是管理多媒体通信会话的协议,包括呼叫(语音和视频),所以我们可以这么说 SIP 是具体的协议之一 网络电话 依靠。

在媒体通信会话中, SIP 协议负责信令操作,例如语音或视频呼叫的发起和终止。 沟通 SIP 可以建立单播,双方或多播,多方。 通过 SIP 协议,可以修改现有的调用,例如,邀请其他成员。 该 SIP 的设计方式独立于底层传输层协议,可以与之一起使用 UDP, TCPSCTP (流控制传输协议). SIP 也可以与其他协议一起工作,这些协议可以指定媒体格式,然后携带媒体 SIP 设置通话。 电话呼叫的路由也可以从a 交换机 电话系统到外部网络,在哪里 交换机 (私人分行交换)是一个电话交换系统,安装在具有多个内部设备的私人组织中。

本指南对于设置流行的SIP服务非常有用,例如 星号, Websphere SIP代理, SIP Foundry, 的Elastix, FreeSWITCH的, Voicetronix的OpenPBX, PBXInAFlash, FreePBX的, OpenSIPs, Kamailio, 3CX, Office SIP Server等等,所有这些都具有高可用性并且可以随时扩展。

SIP协议如何工作?

假设我们有两个呼叫者,邦妮和克莱德。 邦妮打电话给克莱德。 首先,邦妮和克莱德的电话都必须在SIP服务器中注册。 客户和注册服务商之间的注册过程为:

1. 软电话客户端发送一个 注册 消息到SIP服务器。
2. SIP服务器以a响应 401未经授权 消息包括标题 WWW身份验证.
3. 客户端然后重新发送 注册 请求到SIP服务器,包括 授权 标头。
4. 如果验证正确,则SIP服务器返回a 200 OK 回应客户。 在此阶段,客户端能够接收和发起呼叫。

通过我们在本文中建议的代理负载平衡器,该注册过程也将高度可用。

为了更好地理解Bonnie和Clyde之间的呼叫是如何执行的,请参阅下面协议中定义的步骤。

1. 邦妮通过发送电话给克莱德打电话 邀请 message
2. SIP服务器 A 通过了 邀请 消息到收件人SIP服务器 B
3. 同时,SIP服务器 A 回复 100 TRYING 给邦妮的消息
4. SIP服务器 B 通过了 邀请 致克莱德的消息
5. 同时,一 100 TRYING 消息到SIP服务器 A
6. 克莱德的设备现在 180 RINGING 并将其传输到SIP服务器 B
7. SIP服务器 B 发送这个 180 RINGING 到SIP服务器 A
8. SIP服务器 A 传达这个 180 RINGING 对邦妮
9. 克莱德收到电话并发送 200 OK message
10. 传达它 200 OK 消息到SIP服务器 B
11. SIP服务器 A 传达这个 200 OK 给邦妮的消息
12. Bonnie和Clyde之间建立了联系,Bonnie直接发送 ACK 对克莱德来说,邦妮和克莱德都直接相互沟通
13. 任何一方都与a断开呼叫 BYE
14. 另一方发回确认 200 OK

SIP负载均衡环境

了解SIP协议的细节,我们希望在本文中实现的方案是能够扩展SIP服务器,以便能够处理更多数量的已注册的软电话并管理更多的呼叫。 下图显示了数据中心的服务架构。

让我们看下面如何配置它。

SIP负载均衡配置

在设置虚拟服务之前,我们需要创建一个专用的 虚拟IP,因为这个IP地址将能够接收 TCP or UDP 帧。 要实现这一目标,请转到 网络>虚拟接口。 然后点击 操作>创建虚拟接口.

接下来,选择 父接口,界面 名称: 和它的知识产权 地址:

现在是时候在SIP服务使用的标准端口中轻松设置SIP虚拟服务了 TCPUDP的5060 or 5061。 港口 5060 通常用于非加密信令流量和端口 5061 通常用于加密的流量 TLS (传输层安全性).

使用Zevenet负载均衡器,我们实现了这种配置创建 LSLB 农场简介 L4xNAT 与港口 5060 or 5061。 在虚拟服务中,如果端口在虚拟服务中列出,则同时支持加密和非加密通信。

为此,请转到 LSLB>农场 并创建一个新的,如下所示。

创建后,单击 高级, 选择 SIP as 协议类型。 在此阶段,将在当前虚拟服务中启用层4 SIP代理,以便正确地对用户的注册和呼叫进行负载平衡。 另外,我们建议 NAT as NAT类型 但是 DTA 也可以用来获取客户端的源IP。 最后,点击 更新 为了应用更改。

最后,设置后端,单击 服务内容,以及 后端 部分点击 操作>添加后端.

填写 IP, 港口, 重量 并点击 优惠 动作以应用更改。

添加所需数量的SIP服务器以扩展服务。 你现在可以使用了 虚拟IP 作为软件电话和客户端中的SIP虚拟服务,具有高可用性,可靠性和可扩展性。

高级SIP健康检查

在最新的Zevenet版本中,您可以使用专门针对SIP服务的高级运行状况检查,其中负载均衡器对配置为后端的每个SIP服务器执行虚拟SIP呼叫,以确保SIP读取服务正常运行。

万一没有创建过 check_sip Farm Guardian命令,然后在中创建它 监控> Farmguardian 部分,如下所示。

为了更好地理解包含在中的选项 check_sip 命令,请参考健康检查员的帮助。

usage: ./check_sip [ options ] FROM TO
Makes SIP call from FROM to TO, sends voice from multiple
files to peer. Content in files need to be PCMU/8000 and
could be recorded with samples/invite_and_recv.pl

Options:
  -d|--debug                   Enable debugging
  -h|--help                    Help (this info)
  -P|--proxy host[:port]       use outgoing proxy, register there unless registrar given
  -R|--registrar host[:port]   register at given address
  -S|--send filename           send content of file, can be given multiple times
  -L|--leg ip[:port]           use given local ip[:port] for outgoing leg
  -T|--timeout T               timeout and cancel invite after T seconds, default 30
  --username name              username for authorization
  --password pass              password for authorization

Examples:
  ./check_sip -T 10 -S welcome.data -S announce.data sip:30@192.168.178.4 sip:31@192.168.178.1
  ./check_sip --username 30 --password secret --proxy=192.168.178.3
     -S holy.data sip:30@example.com 31

在我们的例子中,我们可以在中定义我们的健康检查器 农场卫报 部分,如下所示。

./check_sip -T 9 -S welcome.data -S announce.data sip:Bonnie@192.168.56.201 sip:Clyde@HOST

请注意,令牌HOST将在运行时与服务器场中配置的每个SIP后端一起更改。

SIP应用交付集群

Zevenet还提供了使用两个冗余单元之间的群集服务以高可用性设置SIP可伸缩传送服务的功能。 请部署另一个Zevenet设备并参考 系统>集群 部分,以便在高可用性中配置它。

增强SIP安全性

使用IPDS模块将安全层应用于公共SIP服务非常容易,该模块允许列入黑名单,实时黑洞列表和DoS保护等。 请参考 IPDS 主菜单中的部分,以获得有关保护公共SIP服务的更多详细信息。

VoIP电话客户端配置

一旦我们的SIP服务准备好扩展,设置高可用性并具有增强的安全性,就可以在软件电话和客户端中配置新服务了。 在这种情况下,我们建议设置一个DNS条目,以解析为虚拟服务的VIP地址或公共IP地址。 这样 DNS or FQDN 我们的虚拟SIP服务的名称将是客户端使用的名称,而不是配置真正的SIP IP地址。 此配置提供了轻松自动地对客户端进行负载平衡的灵活性。

另一方面,我们建议在客户端配置较低的保持活动超时,以便更频繁地强制注册,如果检测到任何SIP服务器已关闭,客户端会注意到并重试快速重新连接到另一个。

现在,享受您的SIP可扩展服务吧!

分享到:

根据GNU自由文档许可条款的文档。

本文是否有帮助?

相关文章