5.8 KiB
5.8 KiB
CISD 初始化真机联调与回滚手册
- 日期:2026-03-02
- 适用版本:
ENTERPRISE/INDIRECT/DIRECT - 适用代码基线:已包含
APP_MQ_CREDENTIALS_APPLY、direct_db_init、tlq_init_cfg
1. 目的
- 在目标设备上完成初始化关键路径联调。
- 验证三类版本在“预部署完成后,仅做客户化初始化”的边界下可稳定运行。
- 提供失败后的快速回滚与重试指引。
2. 关键实现映射(联调前必须确认)
- 企业/间参步骤链:
RENDER_CONFIG -> SET_(RABBITMQ|TLQ) -> MQ_USER_APPLY -> MQ_QUEUE_APPLY -> DB_INIT -> DEPLOY_RECEIVER -> APP_MQ_CREDENTIALS_APPLY -> VERIFY - 轻量化直参(TLQ)步骤链:
RENDER_CONFIG -> MQ_USER_APPLY -> DB_INIT(direct_db_init) -> TLQ_INIT_CFG(tlq_init_cfg) -> VERIFY - 轻量化直参(CFMQ)步骤链:
RENDER_CONFIG -> MQ_USER_APPLY -> DB_INIT(direct_db_init) -> CFMQ_APPLY -> VERIFY - 通道账号密码写回应用配置时默认加密:
DESede(3DES) + secretKey=ABCDEFGHIJKLMN1234567890 + HEX(upper)。
3. 联调前置检查
3.1 环境变量基线
在 TMS 进程环境确认以下参数:
echo "$TMS_CISD_PRESET_PRODUCT_TYPE"
echo "$TMS_INIT_EXECUTOR_MODE"
echo "$TMS_INIT_EXECUTOR_STANDARD_CPCONFIG_PATH"
echo "$TMS_INIT_EXECUTOR_DIRECT_DB_SCRIPT_DIR"
echo "$TMS_INIT_EXECUTOR_DIRECT_TLQ_INIT_CFG_DIR"
echo "$TMS_INIT_EXECUTOR_STANDARD_RABBIT_APP_CONFIG_PATTERN_1"
echo "$TMS_INIT_EXECUTOR_STANDARD_RABBIT_APP_CONFIG_PATTERN_2"
echo "$TMS_INIT_EXECUTOR_STANDARD_RABBIT_CREDENTIAL_ENCRYPT_ENABLED"
echo "$TMS_INIT_EXECUTOR_STANDARD_RABBIT_CREDENTIAL_SECRET_KEY"
建议值:
TMS_INIT_EXECUTOR_MODE=LOCALTMS_INIT_EXECUTOR_STANDARD_RABBIT_CREDENTIAL_ENCRYPT_ENABLED=trueTMS_INIT_EXECUTOR_STANDARD_RABBIT_CREDENTIAL_SECRET_KEY与现场收发器解密密钥一致。
3.2 目录与脚本存在性
ls -l /home/cmep4i/cpconfig.cfg
ls -l /home/cmep4i/cpackage/toolsh/{setfraq.sh,setftq.sh,setsql.sh,setsptp.sh}
ls -l /opt/CAE_Install_Base_Resource/DB/setsql.sh
ls -l /opt/CAE_Install_App_Resource/CAE/init_cfg.sh
3.3 MQ 与配置文件可写性
ls -l /home/cmep4i/cmsp/application-prd*.properties
ls -l /home/cmep4i/cmtp/application-prd*.properties
which rabbitmqctl
which rabbitmqadmin
4. 联调执行清单(统一流程)
4.1 接口执行顺序
GET /api/v1/device/statusPOST /api/v1/init/previewPOST /api/v1/init/taskPOST /api/v1/init/task/{taskId}/executeGET /api/v1/init/task/{taskId}/steps- 失败时逐步查看日志:
GET /api/v1/init/task/{taskId}/steps/{stepNo}/log
4.2 用例矩阵(最小集合)
- 企业版 + RabbitMQ
- 企业版 + TLQ
- 间参版 + RabbitMQ
- 轻量化直参 + RABBITMQ_TLQ(必须带
directTlq三字段) - 轻量化直参 + RABBITMQ_CFMQ
4.3 直参 TLQ 请求体附加字段
{
"directTlq": {
"localNodeSeq": "A",
"upstreamInstitutions": "CIPSCNSHXXX;CIPSCNWXXXX",
"upstreamCocCount": 2
}
}
5. 关键验收点
RENDER_CONFIG后,cpconfig.cfg中机构号、节点、签名参数、MQ_TYPE已替换。MQ_USER_APPLY后,RabbitMQ 中存在通道用户,且具备目标 vhost 权限。MQ_QUEUE_APPLY后,业务队列创建成功(企业/间参)。APP_MQ_CREDENTIALS_APPLY后,spring.rabbitmq.username/password已更新且为密文(非明文)。DB_INIT生成或替换的 SQL 文件可执行,无路径/权限错误。VERIFY成功,任务最终状态SUCCESS。
6. 失败定位顺序
- 配置错误:版本预置、环境变量、路径。
- 权限错误:TMS 进程用户对脚本和配置文件不可写。
- 脚本依赖缺失:
rabbitmqctl/rabbitmqadmin、Java、数据库客户端。 - 参数不完整:直参 TLQ 缺
directTlq字段。 - 密钥不一致:写回密文与收发器解密密钥不匹配导致 MQ 连接失败。
7. 回滚策略(按层次)
7.1 执行前备份(强制)
TS=$(date +%Y%m%d%H%M%S)
mkdir -p /tmp/cisd-init-backup-$TS
cp -a /home/cmep4i/cpconfig.cfg /tmp/cisd-init-backup-$TS/
cp -a /home/cmep4i/cmsp/application-prd*.properties /tmp/cisd-init-backup-$TS/ 2>/dev/null || true
cp -a /home/cmep4i/cmtp/application-prd*.properties /tmp/cisd-init-backup-$TS/ 2>/dev/null || true
echo "/tmp/cisd-init-backup-$TS"
7.2 配置回滚
cp -a /tmp/cisd-init-backup-<TS>/cpconfig.cfg /home/cmep4i/cpconfig.cfg
cp -a /tmp/cisd-init-backup-<TS>/application-prd*.properties /home/cmep4i/cmsp/ 2>/dev/null || true
cp -a /tmp/cisd-init-backup-<TS>/application-prd*.properties /home/cmep4i/cmtp/ 2>/dev/null || true
7.3 MQ 回滚(按需)
# 删除通道用户(示例)
rabbitmqctl delete_user <channelUsername>
# 删除业务队列(示例,按实际创建队列名执行)
rabbitmqadmin --username=admin --password=admin --vhost=/ delete queue name=<queueName>
rabbitmqadmin --username=admin --password=admin --vhost=/RQ delete queue name=<queueName>
7.4 数据库回滚(按实际 SQL 执行情况)
- 若仅生成 SQL 未执行:删除临时生成物即可。
- 若已执行入库:使用预先准备的回滚 SQL 或从数据库备份恢复。
- 严禁在无备份情况下直接清库重建。
8. 重试策略
- 先回滚配置和 MQ 变更,再重建任务重试,不复用失败任务。
- 每次仅变更一个变量(如路径、密钥、账号),避免多变量同时变化。
- 连续两次同一步失败,先停止重试,导出该步骤日志并人工排查根因。
9. 交付物归档
每次联调需归档:
taskId、版本类型、请求参数(脱敏后)。- 步骤执行日志目录:
/tmp/tms-init-logs/<taskId>/。 - 回滚操作记录(是否执行、执行人、时间)。
- 最终结论:通过/失败及根因。