• freeswitch服务器的时间同步设置


     

    概述

    在生产环境中,一般会有N台freeswitch 服务器,不同服务器之间的信令和话单的时间不能相差太多,否则对查找和定位问题会造成一定的困扰。

    同时,freeswitch的默认运行设置并未直接使用系统时间,而是在fs启动时获取系统时间,并在之后的运行过程中使用内部时钟计算时间。

    所以,在fs运行期间的信令和话单中的时间同步就会格外重要,并有特殊之处,需要特别设置。

    环境

    centos:CentOS  release 7.0 (Final)或以上版本

    freeswitch:v1.8.7

    GCC:4.8.5

    fs时间同步接口

    首先要说明的是,fs为什么不直接使用系统时间?

    根据官方文档介绍,是出于对CDR话单的保护,防止在fs运行过程中,由于系统时间变化的不确定性导致CDR话单计费时长的错误问题。

    通常,在fs运行比较长的一段时间之后,从fs的日志、话单等可以看出,fs内部时间和系统时间是不一致的。

    这里有一点要注意的是,在自定义的业务模块中,尽量不要使用系统时间,否则当fs内部时间和系统时间出现较大偏差时,会产生莫名其妙的bug。

    fs提供了API接口,在运行状态下,同步系统时间到fs内部时间。

    fsctl sync_clock

    fsctl sync_clock_when_idle

    sync_clock模式会马上同步系统时间,可能会造成话单计费时长问题。

    sync_clock_when_idle模式更安全,会在系统idle(无呼叫0 channels)的情况下同步系统时间。

    时间同步设置

    安装ntpdate工具。

    sudo yum install ntpdate

    设置系统定时任务。

    sudo crontab -e

    30 4 * * * /usr/sbin/ntpdate cn.pool.ntp.org; /sbin/hwclock -w

    0 5 * * * /usr/local/freeswitch/bin/fs_cli -x "fsctl sync_clock_when_idle"

    每天凌晨4点30分执行ntpdate时间同步,并写入硬件时钟。

    每天凌晨5点执行fs的api接口同步系统时间到fs内部时间。

    总结

    freeswitch多节点串并联之后,信令和话单的时钟同步需要使用fs内部接口刷新。

    空空如常

    求真得真

  • 相关阅读:
    【mcuclub】PM2.5粉尘浓度检测模块GP2Y10
    MyBatis入门案例
    了解MQ和安装使用RabbitMQ
    Linux - Python安装
    整车级虚拟标定:降本增效
    一幅长文细学Vue(六)——组件高级(下)
    大语言模型黑盒被打破;Meta 元宇宙硬件亏损可能高于市场共识丨 RTE 开发者日报 Vol.60
    bp神经网络的拓扑结构,bp神经网络拓扑结构图
    微服务架构的可观察性设计模式
    【Spring】Spring Security学习笔记
  • 原文地址:https://blog.csdn.net/qiuzhendezhen/article/details/126286993