safety-eval-service/docs/GBS底座服务手册v2.md

16 KiB
Raw Permalink Blame History

GBS 底座服务完整手册 v2.0

更新时间2026-06-22
验证状态:已通过实际连通性测试和账号密码验证
集群运行时长6天+


一、服务器信息

角色 主机名 IP OS SSH账号 SSH密码 验证状态
Master k8s-master 192.168.20.100 CentOS 7 root Zcloud@zcloud100
Worker01 k8s-work01 192.168.20.110 CentOS 7 root Zcloud@zcloud110
Worker02 k8s-work02 192.168.20.120 CentOS 7 root Zcloud@zcloud120

K8s版本v1.27.6 | 容器运行时Docker 26.1.4 + cri-dockerd
网络插件Calico v3.26.1 | Pod网段10.244.0.0/16 | Service网段10.96.0.0/12


二、中间件服务Docker直接部署在Master节点

2.1 MySQL

属性
部署方式 DockerMaster节点
版本 mysql:8.0.35
外部访问地址 192.168.20.100:33080
账号 root
密码 Mysql@zcloud33080
验证状态 连通共35个库28个jjb业务库

⚠️ 注意Docker环境变量中 MYSQL_ROOT_PASSWORD=Zcloud@zcloud2026 是容器初始密码,已被修改。请务必使用 Mysql@zcloud33080

# 连接命令
mysql -h 192.168.20.100 -P 33080 -uroot -p'Mysql@zcloud33080'

# 查看所有JJB业务库
mysql -h 192.168.20.100 -P 33080 -uroot -p'Mysql@zcloud33080' -e "SHOW DATABASES LIKE 'jjb%';"

业务数据库列表28个

数据库名 用途 表数量
jjb-saas-auth 认证服务 37
jjb-saas-system 系统服务 111
jjb-saas-data-center 数据中心 87
jjb-saas-bpm 流程引擎 82
jjb-saas-facade 门面服务 40
jjb-saas-user 用户服务 20
jjb-saas-message 消息服务 33
jjb-saas-attachment 附件服务 13
jjb-saas-gateway 网关 13
jjb-saas-security 安全服务 21
jjb-saas-login 登录服务 0线上也为空
jjb-saas-risk 风控服务 0需重新导入
nacos_config Nacos配置存储 12
其余业务库 ... 待确认

2.2 Redis

属性
部署方式 DockerMaster节点
版本 redis:7.2-alpine实际7.2.14
外部访问地址 192.168.20.100:6379
密码 Zcloud@zcloud2026
模式 单机 standalone
验证状态 连通PING=PONG
# 连接命令
redis-cli -h 192.168.20.100 -p 6379 -a 'Zcloud@zcloud2026'

# Spring Boot配置
spring:
  redis:
    host: 192.168.20.100
    port: 6379
    password: Zcloud@zcloud2026

2.3 MinIO对象存储

属性
部署方式 DockerMaster节点
API地址 http://192.168.20.100:9000
Web控制台 http://192.168.20.100:9001
账号 admin
密码 Zcloud@zcloud2026
验证状态 服务Running内网HTTP 200外网需防火墙开放

⚠️ 外网访问说明MinIO端口9000/9001在iptables中有DNAT规则但firewalld可能未开放这些端口导致外部TCP连接超时。服务本身正常运行内网curl返回HTTP 200

# 内网访问在Master节点上
curl http://127.0.0.1:9001   # 返回 MinIO Console HTML

# 如需从外网访问在Master节点执行
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=9001/tcp
firewall-cmd --reload

三、K8s集群服务

3.1 Nacos注册中心 & 配置中心)

属性
部署方式 K8s Deploymentnamespace: jjb-dragon
版本 nacos-server:2.0.3
Web控制台NodePort http://192.168.20.100:30290/nacos
账号 nacos
密码 nacos
ClusterIP 10.110.103.126
验证状态 内网正常,外网HTTP超时防火墙未开放30290

端口映射

服务端口 NodePort 用途
8848 30290 HTTP控制台 & API
9848 31290 gRPC客户端Dubbo 3.x使用
9849 31291 gRPC Raft
7848 30740 Jraft

命名空间

命名空间ID 显示名称 用途
(空) public 公共
jjb-dragon jjb-dragon 配置中心51项配置
jjb-dragon-facade jjb-dragon-facade Dubbo注册中心537项

已注册Dubbo服务gateway、login、user、system共41个provider接口


⚠️ Nacos 8848 外部连接失败根因分析

问题现象:从外部(本机或客户端)配置 nacos.server-addr=192.168.20.100:8848 连接失败。

根因(三层)

原因1防火墙未开放30290/8848端口

  • 内部验证在Master节点上 curl http://127.0.0.1:30290/nacos/ 返回 HTTP 200
  • 外部验证从本机Python脚本访问 192.168.20.100:30290 HTTP超时
  • firewalld处于 active运行中 状态但未开放30290端口
  • 端口TCP层可达SYN握手成功但HTTP层被防火墙拦截

原因2端口号配置错误8848 vs 30290

  • 8848 是Pod内部端口ClusterIP端口集群外不可直连
  • 30290 是NodePort才是集群外部访问的端口
  • 如果在Spring Boot里写 server-addr=192.168.20.100:8848,是错误的!
  • 正确配置server-addr=192.168.20.100:30290(外网)或 prod-nacos:8848(集群内)

原因3Dubbo 3.x需要gRPC端口9848

  • Dubbo版本为 3.0.7(从服务日志确认)
  • Dubbo 3.x注册到Nacos除了HTTP 8848还需要 gRPC 9848 端口
  • 外部访问gRPC端口应使用NodePort 31290但实际gRPC协议不走HTTPTCP可达即可
  • 从微服务日志看,集群内的Dubbo服务注册完全正常只有Running状态的服务有注册记录

解决方案

# 方案1开放防火墙端口推荐用于开发调试
# 在Master节点执行
firewall-cmd --permanent --add-port=30290/tcp   # Nacos HTTP
firewall-cmd --permanent --add-port=31290/tcp   # Nacos gRPC
firewall-cmd --permanent --add-port=9000/tcp    # MinIO API
firewall-cmd --permanent --add-port=9001/tcp    # MinIO Console
firewall-cmd --permanent --add-port=30300/tcp   # RocketMQ Console
firewall-cmd --permanent --add-port=30180/tcp   # K8s Dashboard
firewall-cmd --reload

# 方案2临时关闭防火墙仅测试环境
systemctl stop firewalld

# 外网连接Nacos时使用NodePort而非内部端口
# Spring Boot外部开发环境配置
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.20.100:30290   # 外部用NodePort
      config:
        server-addr: 192.168.20.100:30290

3.2 RocketMQ消息队列

属性
部署方式 K8s Deploymentnamespace: jjb-dragon
版本 rocketmq:4.4.0
Web控制台 http://192.168.20.100:30300
集群内NameServer rocketmq:9876
集群名 JjbMqCluster
认证 未开启ACL
验证状态 内网HTTP 200外网30300被防火墙拦截
# Spring Boot配置集群内
rocketmq:
  name-server: rocketmq:9876
  producer:
    group: jjb-producer-group

3.3 Kubernetes Dashboard

属性
版本 v2.7.0
访问地址 https://192.168.20.100:30180
认证方式 Bearer Token
ServiceAccount admin-usernamespace: kubernetes-dashboard
Token有效期 10年2036年到期
验证状态 Token有效外网需开放30180防火墙

当前有效Token2026-06-22生成有效期至2036年

eyJhbGciOiJSUzI1NiIsImtpZCI6IllOa21sRlpTMXdNVzFEaXdEY3I4b3NFSEdiUk1FeWg3QXZXaXRDeHJHbmcifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoyMDk3NDc1NTY4LCJpYXQiOjE3ODIxMTU1NjgsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiYWVmMTRkMGEtNTQ0Ni00MWUzLTk2NDQtNDRjZjViYTFiYTVlIn19LCJuYmYiOjE3ODIxMTU1NjgsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.hEsB5mahzDq5b52P-gKeq2kVlN7GAwJj-C4utO7UdbrUn_jqi5caGLeQugmCGdgnsksMzTCjctLXOQwcE76lnb5xvn1EZJExWFngBYGHeq8jg5chA8N-LCNOL4Zre9gQRtX8Fqb67gSDBk3hPMXir_KmoYlOijvegBIGKT5a_R3A8YsW9Zm3WxtVZ9xgPu7gUwCNfvdc57voRF0zDEpXbQSneGnxD2rNX06tGz6JuOkQQiM4Mlu3omBoi4B9vnYuUUalpvbXMq4v-x0Wkm45Hzrtf3SmgISsYSzd5-BUB88IavShWWgi8Id8QGcXWVETXkD-W7H8O5Hj0MK0gml7Ww

使用方式:浏览器打开 https://192.168.20.100:30180,选择 Token 登录粘贴上述Token。

重新生成Token在Master节点执行

# 当前使用的ServiceAccount: admin-user (kubernetes-dashboard namespace)
kubectl -n kubernetes-dashboard create token admin-user --duration=87600h

四、镜像仓库凭证

Secret名 仓库地址 用户名 密码 用途
image-pull-secret jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com 10952138@qq.com idurCT!rIq9EzISD 底座镜像
image-pull-secret1 registry.cn-zhangjiakou.aliyuncs.com kilaa Kilaa@6666 应用镜像

五、业务微服务状态(当前 2026-06-22

所有服务部署在 jjb-dragon namespace入口http://192.168.20.100:30140

服务名 Deployment 状态 运行节点 备注
网关 jjb-saas-gateway-deploy Running k8s-work01 NodePort 30140
登录 jjb-saas-login-deploy Running k8s-work02 Dubbo Provider
安全 jjb-saas-security-deploy Running k8s-work02 Dubbo Provider
系统 jjb-saas-system-deploy Running k8s-work02 Dubbo Provider
用户 jjb-saas-user-deploy Running k8s-work02 Dubbo Consumer
认证 jjb-saas-auth-deploy CrashLoopBackOff k8s-work02 Flyway版本问题

auth服务修复方案见第六章。


六、已知问题 & 修复方案

6.1 外网无法访问Web控制台防火墙拦截

根因firewalld运行中只开放了22/6379/33080端口NodePort等未开放。

表现端口TCP可达三次握手成功但HTTP请求超时。

修复在Master节点一次性执行

# 开放所有需要外部访问的端口
firewall-cmd --permanent --add-port=30290/tcp   # Nacos
firewall-cmd --permanent --add-port=31290/tcp   # Nacos gRPC
firewall-cmd --permanent --add-port=9000/tcp    # MinIO API
firewall-cmd --permanent --add-port=9001/tcp    # MinIO Console
firewall-cmd --permanent --add-port=30300/tcp   # RocketMQ Console
firewall-cmd --permanent --add-port=30180/tcp   # K8s Dashboard
firewall-cmd --permanent --add-port=30140/tcp   # GBS业务网关
firewall-cmd --reload

# 验证
firewall-cmd --list-ports

6.2 auth服务 CrashLoopBackOffFlyway迁移失败

根因Flyway校验版本2.0.7.2失败,需手动创建基线记录。

修复SQL在MySQL执行

USE `jjb-saas-auth`;
CREATE TABLE IF NOT EXISTS flyway_schema_history (
    installed_rank INT NOT NULL,
    version VARCHAR(50),
    description VARCHAR(200) NOT NULL,
    type VARCHAR(20) NOT NULL,
    script VARCHAR(1000) NOT NULL,
    checksum INT,
    installed_by VARCHAR(100) NOT NULL,
    installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    execution_time INT NOT NULL,
    success BOOLEAN NOT NULL,
    PRIMARY KEY (installed_rank)
);
INSERT IGNORE INTO flyway_schema_history 
(installed_rank, version, description, type, script, checksum, installed_by, execution_time, success)
VALUES (1, '2.0.7.2', 'baseline', 'SQL', 'V2.0.7.2__baseline.sql', 0, 'admin', 0, TRUE);

然后重启auth服务

kubectl rollout restart deployment jjb-saas-auth-deploy -n jjb-dragon

6.3 Nacos配置中心 Redis密码配置

检查Nacos jjb-dragon 命名空间的 config-redis.yml,确保:

spring:
  redis:
    password: Zcloud@zcloud2026   # 确保与实际Redis密码一致

6.4 xxl-job数据库未导入

xxl_job SQL文件约1GB暂未导入。security服务日志有xxl-job连接失败错误非致命


七、账号密码速查表

服务 访问地址 账号 密码 验证状态
SSH Master 192.168.20.100:22 root Zcloud@zcloud100
SSH Worker01 192.168.20.110:22 root Zcloud@zcloud110
SSH Worker02 192.168.20.120:22 root Zcloud@zcloud120
MySQL 192.168.20.100:33080 root Mysql@zcloud33080
Redis 192.168.20.100:6379 (无用户名) Zcloud@zcloud2026
MinIO API 192.168.20.100:9000 admin Zcloud@zcloud2026 ⚠️ 需开防火墙
MinIO Console http://192.168.20.100:9001 admin Zcloud@zcloud2026 ⚠️ 需开防火墙
Nacos http://192.168.20.100:30290/nacos nacos nacos ⚠️ 需开防火墙
RocketMQ Console http://192.168.20.100:30300 (无需登录) - ⚠️ 需开防火墙
K8s Dashboard https://192.168.20.100:30180 (Token登录) 见3.3节 ⚠️ 需开防火墙
GBS业务网关 http://192.168.20.100:30140 - - ⚠️ 需开防火墙
镜像仓库(底座) jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com 10952138@qq.com idurCT!rIq9EzISD -
镜像仓库(应用) registry.cn-zhangjiakou.aliyuncs.com kilaa Kilaa@6666 -

八、端口速查表

端口 服务 外部可达 说明
22 SSH 所有节点
6379 Redis 直接暴露
33080 MySQL 直接暴露
9000 MinIO API ⚠️ 需开防火墙
9001 MinIO Console ⚠️ 需开防火墙
30140 GBS业务网关 ⚠️ 需开防火墙
30180 K8s Dashboard (HTTPS) ⚠️ 需开防火墙
30290 Nacos HTTP ⚠️ 需开防火墙
31290 Nacos gRPC ⚠️ 需开防火墙
30300 RocketMQ Console ⚠️ 需开防火墙
30658 RocketMQ NameServer ⚠️ 需开防火墙

九、微服务Nacos接入配置

集群内部Pod中

spring:
  cloud:
    nacos:
      discovery:
        server-addr: prod-nacos:8848
        namespace: jjb-dragon
      config:
        server-addr: prod-nacos:8848
        namespace: jjb-dragon
        file-extension: yml
  datasource:
    url: jdbc:mysql://192.168.20.100:33080/jjb-saas-xxx?useUnicode=true&characterEncoding=utf8&useSSL=false
    username: root
    password: Mysql@zcloud33080
  redis:
    host: 192.168.20.100
    port: 6379
    password: Zcloud@zcloud2026

外部开发环境(开放防火墙后)

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.20.100:30290   # 使用NodePort
      config:
        server-addr: 192.168.20.100:30290

十、常用运维命令

# 查看所有Pod状态
kubectl get pods -n jjb-dragon -o wide

# 查看各服务日志
kubectl logs -n jjb-dragon deploy/jjb-saas-gateway-deploy --tail=100 -f
kubectl logs -n jjb-dragon deploy/jjb-saas-login-deploy --tail=100 -f
kubectl logs -n jjb-dragon deploy/jjb-saas-auth-deploy --tail=100 -f
kubectl logs -n jjb-dragon deploy/jjb-saas-user-deploy --tail=100 -f
kubectl logs -n jjb-dragon deploy/jjb-saas-system-deploy --tail=100 -f
kubectl logs -n jjb-dragon deploy/jjb-saas-security-deploy --tail=100 -f

# 重启服务
kubectl rollout restart deployment <name> -n jjb-dragon

# 查看Docker中间件
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'

# MySQL快速连接
mysql -h 192.168.20.100 -P 33080 -uroot -p'Mysql@zcloud33080'

# Redis快速连接
redis-cli -h 192.168.20.100 -p 6379 -a 'Zcloud@zcloud2026'