工具
本文档主要介绍 STP 相关工具的参数说明及使用方法。
stp
stp 是 STP 提供逻辑时间的可执行程序。
参数说明
参数名 | 缩写 | 类型 | 说明 |
---|---|---|---|
—help | -h | 返回 stp 的用法和帮助 | |
—version | 返回 stp 的版本信息 | ||
—port | -p | int32 | 1. STP 监听端口 2. 默认值为 9622 3.开启 TCP 和 UDP 协议的监听 |
—serverlist | string | 1. STP 配置 server 列表,配置后将向指定的 server 进行时间同步 2. server 的格式为”hostname:port”,多个 server 之间通过 “,” 分隔 3. 默认:空,表示以本节点作为 server | |
—serverlist | string | 1. STP 配置 server 列表,配置后将向指定的 server 进行时间同步 2. server 的格式为”hostname:port”,多个 server 之间通过 “,” 分隔 3. 默认:空,表示以本节点作为 server | |
—role | string | 1. STP 节点的角色 2. 可选值为”client” 和 “server” 3. 默认:”server” | |
—syncinterval | int32 | 1. STP 节点进行时间同步的间隔,单位为秒 2. 默认值为 60 | |
—maxtimeerror | int32 | 1. STP 节点可以容忍的最大时间误差,单位为微秒 2. 默认值为 50000 3. 最小值为 1000,最大值为 10000000 | |
—diaglevel | int32 | 1. STP 节点打印诊断日志的级别 2. STP 诊断日志从 0~5 分别代表:SEVERE、ERROR、EVENT、WARNING、INFO 和 DEBUG 3. 默认值为 3,表示 WARNING | |
—daemon | 使用后台模式运行 STP 节点 | ||
—confpath | -c | string | 指定 STP 的配置目录 |
Note:
- STP 的 “server” 角色:server 节点可以用于同步时间的节点,server 之间选举产生主 server 节点,生成全局逻辑时间。STP 最多可以配置 7 个 “server” 角色的节点,因此 serverlist 最多可以配置 7 个节点。
- STP 的 “client” 角色:client 节点只能向 server 节点进行同步。
- maxtimeerror 所指定的可以容忍的最大时间误差,是指当前 STP 节点与 server 主节点之间的时间误差,详细信息可参考逻辑时间。
配置参数
stp 的参数可以通过在安装目录 /conf/stp/stp.conf
中进行配置。
参数名 | 类型 | 说明 |
---|---|---|
port | int32 | 1. STP 监听端口 2. 默认值为 9622 3. 开启 TCP 和 UDP 协议的监听 |
serverlist | string | 1. STP 配置 server 列表,配置后将向指定的 server 进行时间同步 2. server 的格式为”hostname:port”,多个 server 之间通过 “,” 分隔 3. 默认:空,表示以本节点作为 server |
role | string | 1. STP 节点的角色 2. 可选值为”client”和”server” 3. 默认:”server” |
syncinterval | int32 | 1. STP 节点进行时间同步的间隔,单位为秒 2. 默认值为 60 |
maxtimeerror | int32 | 1. STP 节点可以容忍的最大时间误差,单位为微秒 2. 默认值为 50000 3. 最小值为 1000,最大值为 10000000 |
diaglevel | int32 | 1. STP 节点打印诊断日志的级别 2. STP 诊断日志从 0~5 分别代表:SEVERE、ERROR、EVENT、WARNING、INFO 和 DEBUG 3. 默认值为 3,表示 WARNING |
后台模式
通过 daemon,用户可以使用后台模式运行 STP 节点,其功能与 stpstart 相同。
bin/stp --daemon
配置示例
STP 的配置可以分为多 server 模式和单 server 模式。
- 多个 server 的配置可以提高 server 的可用性
- 单个 server 的配置用于1~3个节点较小的集群
多 server 模式
选择三个 server 节点:server-1:9622
、server-2:9622
和 server-3:9622
,其余节点作为 client 节点。
server 节点的配置如下:
serverlist=server-1:9622,server-2:9622,server-3:9622
role=server
client 节点的配置如下:
serverlist=server-1:9622,server-2:9622,server-3:9622
role=client
单 server 模式
选择一个 server 节点:server-1:9622
,其余节点作为 client 节点。
server 节点的配置如下:
serverlist=server-1:9622
role=server
client 节点的配置如下:
serverlist=server-1:9622
role=client
stpq
stpq 是用于查询 STP 的时间、状态、配置等信息的工具。
Note:
stpq 默认查询本地的 STP 节点,用户也可以通过指定 hostname 参数查询其他机器上的 STP 节点。
权限需求
无
连接需求
stpq 工具需要连接到 STP 节点。
选项
参数 | 缩写 | 描述 |
---|---|---|
—help | -h | 返回 stpq 的用法和帮助 |
—version | 返回 stpq 的版本信息 | |
—hostname | -s | 指定需要连接的 STP 节点所在机器的主机名,默认值为”localhost” |
—hostname | -s | 指定需要连接的 STP 节点所在机器的主机名,默认值为”localhost” |
—port | -p | 指定需要连接的 STP 节点的端口,默认值为 9622 |
—time | 查询 STP 节点当前的逻辑时间,单位为纳秒 | |
—timeus | 查询 STP 节点当前的逻辑时间,单位为微秒 | |
—conf | 查询 STP 节点的配置 | |
—meta | 查询 STP 节点的元数据信息 | |
—servers | 查询 STP 节点进行同步的 server 组的信息 | |
—syncclients | 查询 STP 节点所在 STP 集群的时间同步信息 | |
—syncstatus | 查询 STP 节点和当前同步源的同步信息 | |
—synchistory | 查询 STP 节点和各个同步源的历史时间同步信息 | |
—count | -n | 指定连续打印的次数,默认值为 1 |
—delay | -d | 指定连续打印时的间隔时间,单位为秒,默认值为 10 |
Note:
- 如果没有指定查询选项,将默认使用 —time 查询 STP 节点当前的逻辑时间
- 如果指定了 —delay,但没有指定 —count,将不停地每隔一段指定的时间打印查询结果
查询输出
查询时间
--time 查询 STP 节点当前的逻辑时间,单位为纳秒。
结果字段
字段 描述 TimeStamp 逻辑时间的时间部分,其中包含 second (秒)部分和 nanosec (纳秒)部分 TimeError 逻辑时间的时间容错误差部分,单位为纳秒 示例
$ bin/stpq --time
Time:
TimeStamp : ( 1590384470 second, 302563244 nanosec )
TimeError : 1000000
查询时间(微秒)
--timeus 查询 STP 节点当前的逻辑时间,单位为微秒。
结果字段
字段 描述 TimeStamp 逻辑时间的时间部分,单位为微秒 TimeError 逻辑时间的时间容错误差部分,单位为纳秒 示例
$ bin/stpq --timeus
TimeUS:
TimeStamp : 1590384549092550 microsec
TimeError : 1000000
查询配置
--conf 查询 STP 节点的配置。
结果字段
字段 描述 port STP 监听端口 serverlist STP 配置 server 列表 role STP 节点的角色 syncinterval STP 节点进行时间同步的间隔,单位为秒 maxtimeerror STP 节点可以容忍的最大时间误差,单位为微秒 diaglevel STP 节点打印诊断日志的级别 示例
$ bin/stpq --conf
Config:
port : 9622
serverlist : server-1:9622
role : server
syncinterval : 60
maxtimeerror : 50000
diaglevel : 3
查询元数据
--meta 查询 STP 节点的元数据信息。
结果字段
字段 描述 MetaSHMKey STP 节点共享内存的键值 Version STP 节点元数据的版本号 SyncInterval STP 节点配置的同步间隔(通过 —syncinterval 配置) SyncHWTime STP 节点上次同步时的系统硬件时间,其中包含 second (秒)部分和 nanosec (纳秒)部分 BaseHWTime STP 节点启动时的系统硬件时间,其中包含 second (秒)部分和 nanosec (纳秒)部分 BaseRealTime STP 节点启动时的系统真实时间,其中包含 second (秒)部分和 nanosec (纳秒)部分 Offset STP 节点用于计算相对于 STP server 同步节点的时间偏移,单位为纳秒 SlewRate STP 节点用于计算相对于 STP server 同步节点的 CPU tick 的比率,单位为 1/10000 TimeError STP 节点当前的时间容错误差,单位为纳秒 MetaLSN STP 节点用于同步元数据的 LSN,其中包含 offset (偏移)和 version (版本号)信息 示例
$ bin/stpq --meta
Meta:
MetaSHMKey : 9622
Version : 1
SyncInterval : 60
SyncHWTime : ( 1801227 second, 379397078 nanosec )
BaseHWTime : ( 1800687 second, 344618629 nanosec )
BaseRealTime : ( 1590384465 second, 718350000 nanosec )
Offset : 0
SlewRate : 10000
TimeError : 1000000
MetaLSN : ( offset 1590385005753126, version 3 )
查询 server 信息
--servers 查询 STP 节点进行同步的 server 组的信息。
结果字段
字段 描述 Version STP server 组的版本号 Server STP server 组的信息,一般格式为: “hostname:port” Primary STP server 组的主节点 示例
$ bin/stpq --servers
Servers:
Version : 1
Server : u16-t02:9622
Server : u16-t03:9622
Server : u16-t04:9622
Primary : u16-t04:9622
查询同步客户端信息
--syncclients 查询 STP 节点所在 STP 集群的时间同步信息。
Note:
可以连接任意 STP 节点进行查询,命令将自动转发至 STP server 主节点上执行。
结果字段:
字段 描述 Source STP 同步源的信息,即 STP server 主节点,一般格式为: “hostname:port” Client STP 同步节点的信息,一般格式为:”hostname:port” Role STP 同步节点的角色:”server” 或者 “client” Port STP 同步节点使用 STP server 主节点的端口 Status STP 同步节点的状态 Count STP 同步节点向 STP server 主节点同步次数 Interval STP 同步节点的同步间隔,单位为秒 TimeError STP 同步节点的时间容错误差,单位为微秒,格式为:<当前时间容错误差>/<最大时间容错误差> Passed STP 同步节点上次同步后经过的时间,单位为微秒 Note:
- STP server 备节点也需要向 STP server 主节点进行时间同步。
- STP 的同步状态包括:
- CheckOffset:快速检查时间偏移
- CheckSlewRate:检查节点间 CPU 的频率比例
- RecheckOffset:再次快速检查时间偏移
- IntervalCheck:周期性检查同步
- CheckError:(可能由于网络拥堵引起的)同步出错
- NoSource:没有找到同步源
- STP 同步节点的最大时间容错误差通过 STP 节点的 maxtimeerror 进行配置。
示例
$ bin/stpq --syncclients
Synchronize Source: server-3:9622
Synchronize Clients:
Client Role Port Status Count Interval TimeError Passed
server-1:9622 server 9622 IntervalCheck 36 60 1000/50000 45920000
server-2:9622 server 9622 IntervalCheck 36 60 1000/50000 47100000
Total: 2
查询同步信息
--syncstatus 查询 STP 节点和当前同步源的同步信息。
结果字段
字段 描述 Role STP 节点的角色:”server” 或者 “client” Primary STP 节点是否 server 主节点 Status STP 节点的同步状态 Source STP 节点的同步源,一般为 STP server 主节点,格式为: “hostname:port” Count STP 节点与同步源的同步次数,格式为:<有效次数>/<总次数> Delay STP 节点与同步源的延迟,单位为微秒,格式为: <最小延迟>/<最大延迟>/<上次延迟> Offset STP 节点与同步源的时间偏移,单位为微秒,格式为: [<最小负偏移>,<最大负偏移>]/[<最小正偏移>,<最大正偏移>]/<上次偏移> Passed STP 节点与同步源上次同同步后经过的时间,单位为微秒 同步请求历史信息
字段 描述 RequestID STP 节点同步请求消息 ID Valid STP 节点同步请求是否有效(在有效的时间容错误差范围内) Status STP 节点发送同步请求时的同步状态 Delay STP 节点同步请求的延迟,单位为微秒 Offset STP 节点同步请求得到的时间偏移,单位为微秒 Passed STP 节点同步请求后经过的时间,单位为微秒 示例
$ bin/stpq --syncstatus
Synchronize Status:
Role Primary Status Source Count Delay Offset Passed
server FALSE IntervalCheck server-1:9622 32/32 144/685/196 [-1,-208]/[2,219]/59 25390000
Synchronize history:
RequestID Valid Status Delay Offset Passed
27 TRUE CheckSlewRate 685 -208 223930000
29 TRUE CheckSlewRate 188 219 214000000
30 TRUE CheckSlewRate 317 -31 204080000
31 TRUE CheckSlewRate 347 67 194150000
32 TRUE CheckSlewRate 246 -20 184220000
33 TRUE CheckSlewRate 195 -6 174290000
34 TRUE CheckSlewRate 173 -13 164370000
36 TRUE CheckSlewRate 221 4 154440000
37 TRUE RecheckOffset 168 -5 153450000
38 TRUE RecheckOffset 262 6 152450000
39 TRUE RecheckOffset 194 9 151460000
40 TRUE RecheckOffset 327 -45 150470000
41 TRUE RecheckOffset 408 -86 149480000
...
查询同步历史
--synchistory 查询 STP 节点和各个同步源的历史时间同步信息。
Note:
同步历史会被保留两小时,之后会被过期清理。
结果字段
字段 描述 Source STP 节点的同步源,一般为 STP server 主节点,格式为: “hostname:port” Count STP 节点与同步源的同步次数,格式为: <有效次数>/<总次数> Delay STP 节点与同步源的延迟,单位为微秒,格式为:<最小延迟>/<最大延迟>/<上次延迟> Offset STP 节点与同步源的时间偏移,单位为微秒,格式为: [<最小负偏移>,<最大负偏移>]/[<最小正偏移>,<最大正偏移>]/<上次偏移> Passed STP 节点与同步源上次同同步后经过的时间,单位为微秒 示例
$ bin/stpq --synchistory
Synchronize History:
Source Count Delay Offset Passed
server-1:9622 50/50 193/331/241 [0,-68]/[0,48]/-11 23450000
server-2:9622 37/38 212/471/247 [0,-112]/[0,137]/10 144480000
Total: 2
stpstart
stpstart 是用于启动 STP 节点的工具。
Note:
用户可以通过
stp --daemon
来启动 STP 节点,具体可参考上文中的后台模式。
权限需求
无
连接需求
无
选项
参数 | 缩写 | 描述 |
---|---|---|
—help | -h | 返回 stpstart 的用法和帮助 |
—version | 返回 stpstart 的版本信息 | |
—confpath | -c | 指定 STP 的配置目录 |
—options | 指定启动 STP 时额外的配置项 |
示例
通过 stpstart 启动 STP 节点
bin/stpstart
通过 stpstart,使用
conf/stp
下的配置启动 STP 节点bin/stpstart --confpath conf/stp
通过 stpstart 启动 STP 节点,并且额外配置 diaglevel 为 5 (DEBUG 级别)
bin/stpstart --options "--diaglevel=5"
stpstop
stpstop 是用于停止 STP 节点的工具。
权限需求
无
连接需求
无
选项
参数 | 缩写 | 描述 |
---|---|---|
—help | -h | 返回 stpstop 的用法和帮助 |
—version | 返回 stpstop 的版本信息 | |
—force | 强制停止 STP 节点 |
示例
通过 stpstop 停止 STP 节点
bin/stpstop