分布式系统升级技术指引文档
一、路由信息迁移规范
1.1 边车路由提取
-
服务访问
在服务里面找到 redis-stack,访问8001对应的NodePort,打开redisInsight,查询 *statestore||app_keykubectl -n {namespace} get svc redis-stack # 确认NodePort端口(默认8001)
-
数据查询
通过RedisInsight执行查询指令:
SCAN 0 MATCH *statestore||app_key* # 获取全量路由键
-
格式转换
使用平台提供的route-converter.exe
下载 转换工具进行数据迁移:
将复制的value使用平台提供的工具来转换出新架构需要的路由信息。
二、配置管理标准化
2.1 命名规范重构
原配置项 | 新标准配置项 | 变更类型 |
---|---|---|
snest-nginx | iidp-nginx | 重建 |
snest-app | iidp-app | 配置迁移 |
如下图,重点关注app和nginx配置,比如snest-ngxin和sneset-app,其他项目可能是iidp-nginx和iidp-app。由于平台后面统一调整成了iidp,所以所有的配置一律都使用 iidp-nginx 和 iidp-app 命名,不是这个配置名称的也统一需要修改或者重建。
2.2 网关配置新增(gw.yaml)
由于新的模式增加了网关,所以需要新增一个gw.yaml配置,注意调整命名空间。
#gw 网关 配置文件
model: "release" # debug release test
port: "8060"
namespace: "mijiuye"
labelSelector: "iidp=iidp"
apiServerHost: ""
kubeConfigFile: ""
resyncPeriod: 0 # 重新同步的时间间隔,单位为秒
syncRateLimit: 0 # 速率限制
shutdownGracePeriod: 30 # 关闭服务时的宽限期,单位为秒
useUnixDomainSocket: true
unixDomainSocketPath: "/socket/gw-iidp.socket"
rateLimiter:
enable: false # 是否启用速率限制
rate: 2000 # 速率限制,单位为 次/秒
per: 1s # 速率限制的时间窗口,默认是1s
slack: 10 # 速率限制的松弛度
hystrixSettings:
enable: false
defaultTimeout: 10000 # DefaultTimeout is how long to wait for command to complete, in milliseconds
defaultMaxConcurrent: 1000 # DefaultMaxConcurrent is how many commands of the same type can run at the same time
defaultVolumeThreshold: 20 # DefaultVolumeThreshold is the minimum number of requests needed before a circuit can be tripped due to health
defaultSleepWindow: 5000 # DefaultSleepWindow is how long, in milliseconds, to wait after a circuit opens before testing for recovery
defaultErrorPercentThreshold: 50 # DefaultErrorPercentThreshold causes circuits to open once the rolling measure of errors exceeds this percent of requests
buildInApps:
handler: "mijiuye/iidp-app" # * 代表全部,或者指定handler来处理,比如 meta-test/iidp-app
apps: [
"base.master",
"user-prefer.master",
"file.master",
"dict.master",
"base_log.master",
"config.master",
"cache.master",
"sie-iidp-appmarket.master",
"sie-snest-tenant.master",
"sie-snest-interface.master",
"sie-snest-workflow.master",
"sie-snest-workflow-extend.master",
"sie-snest-mail.master",
"sie-snest-i18n.master",
"sie-snest-datasource.master"
]
2.3 应用配置迁移
继续新增iidp-app配置文件,可以直接复制原来的,但是注意metadata.name
编辑配置,添加下面的配置项
# 安装镜像版本
app.install.image=xxxx
engine.store.meta.mode=CLOUD
# DISTRIBUTED_V2 模式
engine.run.mode=DISTRIBUTED_V2
至此整个配置完毕。
三、service更新流程
前已经获取了sidecar的路由信息,现在需要将这些路由信息重新写入到新模式的分布式架构中,也就是service的yaml文件中
根据生成的yaml,我们依次修改对应 service 的yaml,这里举例路由yaml如下:
iidp:
iidp.com/dependencies: ""
iidp.com/installedApps: newSdkApp.master,oppmApp.master,sf-auto-interface-app.master,logo.master,i18n-frontend.master,interface-frontend.master
iiot:
iidp.com/dependencies: iiot_apiAdapter.master,iiot_base.master,iiot_thing.master,iiot_task_scheduler.master,net.master,iiot_db_management.master,iiot_store_management.master,iiot_messagepush.master,iiot_messagepolicy.master,iiot_alarm.master,iiot_ruleengine.master
iidp.com/installedApps: iiot_base.master,iiot_project.master,iiot_access.master,iiot_alarm.master,iiot_device_scheduler.master,iiot_keylog.master,iiot_messagepolicy.master,iiot_messagepolicy_alarm.master,iiot_messagepolicy_ruleengine.master,iiot_messagepolicy_store_management.master,iiot_messagepush.master,iiot_messagetransfer.master,iiot_program.master,iiot_store.master,iiot_store_management.master,iiot_task_scheduler.master,iiot_thing.master,iiot_apiAdapter.master,iiot_db_management.master
mbm:
iidp.com/dependencies: mbm-center-aps-ms.master,mbm-component.master,mbm-main.master,mbm-site-wms-strategy.master,mbm-site-wms-stock.master,mbm-common-base.master
iidp.com/installedApps: mbm-center-aps-mrp.master,mbm-center-aps-ms.master,mbm-component.master,mbm-main.master,mbm-site-aps-as.master,mbm-site-wms.master,mbm-site-wms-io.master,mbm-site-wms-stock.master,mbm-site-wms-strategy.master,mbm-site-wms-wh.master,mbm-common-base.master,mbm-edo.master,sie-iidp-wizard.master,filepreview.master,sie-iidp-file.master
smi:
iidp.com/dependencies: smi-base-common.master,smi-base-datasource.master,smi-base-asset.master,smi-ida-base.master
iidp.com/installedApps: smi-base-asset.master,smi-base-common.master,smi-base-data-permission.master,smi-base-datasource.master,smi-base-dispatch.master,smi-base-license.master,smi-base-monitor.master,smi-base-notice.master,smi-base-testpoint.master,smi-ida-alarm.master,smi-ida-base.master,smi-ida-broadcast.master,smi-ida-chart.master,smi-ida-comcanvas.master,smi-ida-common.master,smi-ida-design.master,smi-ida-newscene.master,smi-ida-problem.master,smi-ida-report.master
四、网关部署验证
4.1 滚动更新操作
kubectl scale deployment nginx --replicas=0 # 停止旧网关
kubectl apply -f gw.yaml --dry-run=server # 预校验配置
4.2 存储优化配置
volumes:
- name: uds-socket
emptyDir:
medium: Memory # 启用内存存储提升性能
4.3 连通性验证
# 路由信息验证
curl -sS localhost:8060/route | jq . # 预期包含所有注册应用
# 服务映射检查
curl -sS localhost:8060/svc2app | grep "mbm-main.master"
# 端点健康状态
curl -sS localhost:8060/endpoints | jq '.[].status'
五、业务POD迁移方案
5.1 停机迁移步骤
-
前置操作
kubectl scale deployment {service} --replicas=0
-
配置清理
删除旧版dapr注解:
annotations: - dapr.io/enabled: "false" # 禁用遗留sidecar
5.2 启动验证标准
-
日志监控关键点
kubectl logs -f {pod_name} | grep -E "IIDP_ENGINE_READY|CLUSTER_SYNC_COMPLETED"
-
就绪探针配置
readinessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 20
六、回退与监控方案
6.1 快速回退机制
# 配置回滚命令
kubectl rollout undo deployment/iidp-nginx --to-revision=3
6.2 监控指标阈值
| 指标名称 | 告警阈值 | 检测频率 | |————————-|—————-|———-| | 路由同步延迟 | >500ms | 10s | | 节点心跳丢失率 | >5% (持续1min)| 30s |
升级验证清单
✅ 所有配置项已按iidp-
前缀标准化
✅ 网关路由接口返回完整服务拓扑
✅ 业务POD启动后输出IIDP BANNER
✅ 旧版sidecar组件已完全移除
注:本方案参考了系统升级文档规范和Kubernetes最佳实践,建议在预发布环境完成全量验证后执行生产环境变更。升级过程中如遇异常,可通过
kubectl describe configmap/iidp-app
检查配置注入状态。