Files
iotlcm/config/upstream-proxy/config.yaml
T
MiFaZhan eb97c5300a fix: 修复代理转发端口缺失与 mock 通道未实例化
测试反馈两个问题:

1. 代理转发地址只写了服务名 upstream-chan,未带端口 → 默认连 80 端口被拒。
   改为 upstream-chan:8110。已核对其它服务(admin-svr / openapi / app-server /
   worker-svr)的上游地址均带端口,只有 upstream-proxy 这一处遗漏。

2. 直连 8110 查询报「通道未实例化」。根因在种子数据的 is_normal:
   该字段语义是 0=正常、1=异常(chan 侧 CanCreateInstance 只在 *IsNormal==0 时
   创建实例;NULL 也不合格)。mock 通道原来写的 1,因此实例从未创建。
   改为 0。注意内网演示环境种子同样是 1,属开源版修正。
   种子的 ON DUPLICATE KEY UPDATE 已包含 is_normal,老库重跑该段即可修复。

已验证(清空 data 目录从零启动):
- t_sim_channels 中 channel_yd_mock 的 is_normal=0
- chan 日志出现 Create channel instance success, chanKey: channel_yd_mock
- 日志无 abnormal / 未实例化 相关记录
2026-10-30 17:44:02 +08:00

111 lines
2.8 KiB
YAML

# ============================================================
# iotlcm-upstream-proxy 配置
#
# 本文件随部署仓分发,已带可运行默认值,无需复制或改名。
# 正式上线前请修改口令等敏感项;修改时需与 docker-compose.yml、
# schema/init.sql 及 config/ 下其他文件保持一致(详见 README)。
# ============================================================
system:
name: "IotLCM-Upstream-Proxy"
version: "1.0"
description: "IotLCM Upstream Proxy Service"
gfmode: "prod"
upload:
local:
path: "/app/upload"
# ---------- 智能诊断内部凭据 ----------
# 控制台「智能诊断」调用本服务的内部凭据,
# 必须与 admin-svr 的 upstream.appDiagnosisToken 一致。
# 生成:openssl rand -hex 16
appDiagnosis:
internalToken: "iotlcm_diagnosis_2026"
server:
name: "iotlcmupstreamproxy-grpc-svc"
address: ":8510"
openapiPath: "/api.json"
swaggerPath: "/swagger"
indexFiles: ["index.html", "index.htm"]
indexFolder: false
fileServerEnabled: true
initLoadMemoryDB: false
maxHeaderBytes: "20KB"
clientMaxBodySize: "200MB"
# ---------- 服务注册 ----------
registry:
type: "consul"
address: "consul:8500"
logger:
path: "/app/logs"
file: "{Y-m-d-H}.log"
prefix: ""
level: "info"
timeFormat: "2006-01-02T15:04:05.000"
ctxKeys: []
header: true
stdout: true
rotateSize: 0
rotateExpire: 0
rotateBackupLimit: 0
rotateBackupExpire: 0
rotateBackupCompress: 0
rotateCheckInterval: "1h"
stdoutColorDisabled: false
writerColorEnable: false
# ---------- 数据库 ----------
database:
logger:
path: "/app/logs"
level: "all"
stdout: true
default:
# 必改:连接串
link: "mysql:u_iotlcm:Iotlcm2026Default@tcp(mysql:3306)/db_iotlcm?charset=utf8mb4&parseTime=True&loc=Asia%2FShanghai"
debug: false
charset: "utf8mb4"
dryRun: false
maxIdle: 30
maxOpen: 100
maxLifetime: 120
memorydb:
link: "sqlite::@file(:memory:)"
debug: false
maxIdle: 1
maxOpen: 1
maxLifetime: 30
cache:
adapter: "redis"
fileDir: "resource/cache"
# ---------- Redis ----------
redis:
default:
mode: "single"
sentinelMasterName: ""
address: "redis:6379"
db: 0
pass: "Iotlcm2026Default"
minIdle: 5
maxIdle: 30
maxActive: 5000
idleTimeout: "60s"
ClientName: "SystemCache"
# ---------- 上游通道服务 ----------
gateway:
# 通道服务地址:必须带端口,只写服务名会走默认 80 端口被拒
address: "upstream-chan:8110"
timeout: 10s
# 单次批量转发的总预算上限。
# 非 APN 批量按「单卡超时 × 卡数」计算并以此封顶,
# 避免通道逐卡串行办理时请求仍在执行就被判失败
# (批量重启、停复机、批量查询)。
# worker 侧的超时配置必须大于该值。
batchTimeout: 20m