文章

Linux上tk服务的部署

Linux上tk服务的部署

[TOC]

背景

平台支撑中心的很多服务都采用 Docker + Linux 的部署方式,但技术文档《平台支撑中心Linux服务开发指南》中关于服务部署的内容部分已经落时,本文咨询了曾少勤,对该部分进行修正和补充。便于后期查阅。

编译

在本地的 vagrant 上使用 make 命令成功编译出服务。这一步不再赘述。

拷贝

  • 将编译结果从 vagrant 拷贝到 Windows 本地:

    • 修改当前路径到编译路径 ./bin 下。
    • 使用 cp 命令将编译结果拷贝到 vagrant 与 win 的共享路径 /vagrant_data 下。
    • 完整命令如下所示:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    [root@hansb tkmsgbroadcastservice]# cd bin
    [root@hansb bin]# ll
    total 32384
    -rwxr-xr-x. 1 root root 12798796 Sep  1 05:56 tkmsgbroadcastservice
    -rwxr-xr-x. 1 root root 20351088 Aug 29 06:05 tkmsgbroadcastservice_d
    -rw-r--r--. 1 root root      660 Aug 28 12:58 tkmsgbroadcastservice_d.ini
    [root@hansb bin]# pwd
    /home/work/MSG2.0/tkmsgbroadcastservice/bin
    [root@hansb bin]# cp tkmsgbroadcastservice /vagrant_data
    [root@hansb bin]# 
    
  • 此时就可以在 Windows 的本地路径 D:\share_centos7 中看到目标文件,如图所示:

    image-20250901164827681

  • 从 Windows 拷贝到 Linux 运维机 192.168.7.84 上:

    • 打开文件管理:Web 堡垒机页面中,在 TK01_DEV_DAT_MF_7_84上右键,点击【文件管理】。

    • 拷贝到服务器上:直接将本地的文件拖动到弹出的窗口中,即可完成拷贝。

    • 在服务器上查看:通过 “文件管理” 拷贝的文件位于 Linux 的/home/hansb中,通过 ll 命令查看。

    • 使用mv命令备份原路径下的服务:

      mv tktgpstatemachineservice tktgpstatemachineservice_20250922
      
    • 拷贝到打包路径:使用 cp 命令将文件拷贝到 Docker 的打包路径中,以 broadcast 服务为例:

      1
      2
      3
      
      [root@tk01-dat-test-7-84 TKMSGBroadcast]# cp /home/hansb/tkmsgbroadcastservice /data/tkmsg-new/release/TKMSGBroadcast
      cp: overwrite ‘/data/tkmsg-new/release/TKMSGBroadcast/tkmsgbroadcastservice’?# y
      [root@tk01-dat-test-7-84 TKMSGBroadcast]# 
      

tgpbroker 的拷贝命令:

  • 内网:
1
cp /home/hansb/tktgpbrokerservice_d /data/tktgp-docker/main_service/neiwang/nw-broker
  • 外网:
1
cp /home/hansb/tktgpbrokerservice /data/tktgp-docker/main_service/waiwang/broker

tgpstate 的拷贝命令:

  • 内网:
1
cp /home/hansb/tktgpstatemachineservice_d /data/tktgp-docker/main_service/neiwang/nw-youxi/state-display
  • 外网:
1
cp /home/hansb/tktgpstatemachineservice /data/tktgp-docker/main_service/waiwang/youxi/state-display

snslogic 的拷贝命令:

  • 内网:
1
cp /home/hansb/tksnslogicservice /data/tksns/test/tksnslogicservice/tksnslogicservice
  • 外网:
1

打包

  • 调用 dc_msg_build.sh 进行构建、入库,传入参数 1 代表版本号 +1,示例如下:

    1
    2
    3
    4
    5
    6
    
    [root@tk01-dat-test-7-84 TKMSGBroadcast]# ./dc_msg_build.sh 1
    1,tkmsgbroadcastservice,1.0.0.32
    Version 1.0.0.32 will be build.......
    ...
    v1.0.0.32: digest: sha256:cd4e267f844f7f703f941de124fd3a9077ce02e15b8eb2f4e356a1da330ae8a4 size: 2208
    [root@tk01-dat-test-7-84 TKMSGBroadcast]# 
    
  • 打包也可以先buid_version.ini中的版本号,然后通过 buid_version.ini 传入,完整命令如下:

    1
    2
    
    sudo vim buid_version.ini
    sudo ./dc_tgp_build.sh buid_version.ini
    
  • 然后等待脚本运行完毕即可。

镜像构建的过程,是在虚拟机 TK01_DAT_TEST_7_84 上进行操作的。

tkmsgbroadcastservice 服务为例,构建脚本目录为:

内网:/data/tkmsg-new/test/TKMSGBroadcast

外网:/data/tkmsg-new/release/TKMSGBroadcast

Docker 构建脚本由一个 Dockerfile 文件和其它多个辅助 shell 脚本构成(后者是为了方便而非必须),这些脚本链式调用,最终实现仅通过一个脚本调用命令完成文件准备、镜像构建、镜像入库(harbor)、容器启动后动作等多步操作。Dockerfile 具体原理参见其它资料,不在本文介绍。

脚本集合和主脚本 dc_demo_build.sh 如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@tk01-dat-test-7-84 TKMSGBroadcast]# ll
total 25112
-rw-r--r-- 1 root root        9 Dec  5  2024 buid_version.ini
-rwxr-xr-x 1 root root      451 Dec 20  2024 dc_build.sh
-rwxr-xr-x 1 root root      477 Dec 20  2024 dc_msg_build.sh
-rwxr-xr-x 1 root root      393 Jul 14  2023 dc_stop.sh
-rw-r--r-- 1 root root      640 Nov 22  2023 Dockerfile
-rwxr-xr-x 1 root root      115 Jul 14  2023 entrypoint.sh
-rw-r--r-- 1 root root       44 Dec 27  2023 Service.ini
-rwxr-xr-x 1 root root      695 Jul 14  2023 tk_cpu_mem_monitor.sh
-rwxr-xr-x 1 root root     1179 Jul 14  2023 tk_daemon.sh
-rwxr-xr-x 1 root root     1302 Jul 14  2023 tk_logzip.sh
-rwxr-xr-x 1 root root 12798796 Sep  1 15:04 tkmsgbroadcastservice
-rw-r--r-- 1 root root      744 Jan 31  2024 tkmsgbroadcastservice.ini
-rwxr-xr-x 1 root root     1158 Jul 14  2023 tk_rm_zip_log.sh
-rwxr-xr-x 1 root root      328 Jul 14  2023 tk_sudo_monitor.sh

其它内容可以看参考文档《平台支撑中心Linux服务开发指南》的 5.4 章节。

服务发布

  • 登录不同的 Rancher 连接以升级内网或外网的服务。

  • 左侧菜单【工作负载】-【Deployment】,然后在中间的列表中找到目标服务,单击进入。

  • 点击页面右上角的三个点,选择【编辑配置】。

  • 修改【镜像】中的服务版本号,因为上面编译时是版本号 +1,因此这里也将版本号改大 1 位即可。例如若原本内容为:

    1
    
    jcr.mgr.jjworld.tech/dat-msg/tkmsgbroadcastservice:v1.0.0.32
    

    修改为:

    1
    
    jcr.mgr.jjworld.tech/dat-msg/tkmsgbroadcastservice:v1.0.0.33
    
  • 点击保存,docker 即开始升级重启。

  • 观察是否升级成功。

日志查看

1. Docker 上的服务日志:

  • 可以通过 Docker 的 Execute Shell 查看当前服务的运行日志,判断服务是否正常启动。
  • 日志路径为:/data/logs/tkserverlog/tkmsgbroadcastservice.log
  • 可使用 cattail tkmsgbroadcastservice.log 100 查看日志内容。

2. ELK 上的日志

用于下载或查看大量日志,方便定位问题。

参考

《平台支撑中心Linux服务开发指南.docx》 (本文是对这篇文档的补充与校正)

《TKLinuxSDK开发手册.docx》

本文由作者按照 CC BY 4.0 进行授权