介绍
之前我们分享过 Linux 双击热备的文档。拓扑图如下所示:
在上面的方案中,虽然 3CX 有 2 台做了双机热备,但是 DNS 是单点的,出现故障了还是有可能导致 3CX 无法使用。
上周我们有个客户因为 VMware 的物理机的硬盘坏了,3CX 的主机和 DNS 服务器在一个物理机上,导致了 3CX 主机和 DNS 服务器同时宕机。3CX 的备机在另一台 ESXi 物理机上幸免遇难。备份文件也是储存在 3CX 备机上,后期的恢复工作也是相对顺利。
恢复后客户希望能多加一台 DNS 服务器,因为 DNS 服务器需要的配置不高,而且在话机里可以添加 2 个 DNS IP 地址。3CX 的脚本只需要能同时修改两台 DNS 服务器的 IP 地址就可以了。
这样的好处是各能分一台 3CX 和 DNS 服务器在一台 ESXi 物理机上,即使一边的物理机再次宕机,还是可以存活一台 3CX 备机以及一台 DNS 服务器,依旧可以实现 3CX failover 的双击热备。
步骤
由于之前已经介绍过单点 DNS 服务器的配置了,我们就此基础上进行修改。
我们需要搭建第二台 DNS 服务器,可以参考文档:Linux DNS 服务器搭建。
搭建好以后,请确保两台 DNS 服务器的所有配置,包括配置文件,db 文件的名称和内容都保持完全一致。
接着我们需要让备机可以直接使用 SSH 登录到第二台 DNS 服务器当中,具体可以参考文档中的创建密钥对部分。
然后我们进到 3CX 备机的 /var/lib/3cxpbx/Instance1/Scripts
目录下修改现有脚本,在这里我的脚本名称是 failover.sh
。
输入命令编辑脚本文件:
nano /var/lib/3cxpbx/Instance1/Scripts/failover.sh
进来以后我们先将原来的 DNS_IP
重新命令为 DNS_IP1
,并在下面一行新建一个 DNS_IP2
,输入第二台 DNS 的 IP 地址。
接着将 ssh -p ....
开头的这行复制到下面一行,并将第一行和第二行的 $DNS_IP
分别修改为 $DNS_IP1
和 $DNS_IP2
。
修改完以后输入 ctrl + O 保存,提示是否确认按回车确认即可。保存后按 ctrl + X 退出。
接下来我们可以在备机输入下面命令测试:
runuser -l phonesystem -c "/var/lib/3cxpbx/Instance1/Scripts/failover.sh"
没有报错的话使用 nslookup 名称查看两个 DNS 服务器的返回值是否正确。如果都修改为了备机的 IP 地址,那就说明没问题了。我们只需要再将两台 DNS 服务器的记录值修改回 3CX 主机的值即可。
修改完脚本后我们还需要登录话机,在话机的网络设置中添加第二台 DNS 服务器的 IP 地址。