简介:这份《阿里云专有云企业版 V3.7.1 云服务总线 CSB 运维指南》面向专有云环境下的运维工程师、平台管理员与技术支持人员,围绕 CSB 的日常维护、部署配置、监控排障等核心工作提供操作参考。压缩包仅含 1 个 PDF 文件,大小约 986KB,便于查阅,适合在运维值班、变更评审和故障处理时快速定位关键说明。文档从法律声明与通用约定讲起,依次覆盖运维概述、系统架构、组件与部署架构、高危操作、运维准备、例行维护与巡检,并延伸到配置管理、监控管理及 troubleshooting 常见问题处理。读者可据此梳理 CSB 的组件关系和部署边界,掌握巡检与配置要点,形成从监控发现到排障闭环的思路,也可作为团队内部培训与运维手册编写的参考。目前已有 283 人学习,适合需要系统了解专有云 CSB 运维体系的中高级技术人员查阅。
1. 服务调用超时先别急着重启:CSB V3.7.1 的四层链路要一层层剥
消费方报“服务调用超时”的时候,控制台往往一切正常,Broker 进程在,端口也监听,很多人第一反应是重启 Broker。重启后短时间恢复,过一阵又复发,问题被拖成玄学。这类故障在专有云企业版 CSB V3.7.1 的日常运维里出现频率很高,尤其是服务刚发布、流量爬坡、公共组件抖动之后。CSB 运维指南把服务连续性故障拆成管控中心、服务总线、公共基础组件三段,真正排起来还得再细一层:消费方到负载均衡、负载均衡到 Broker、Broker 到提供方、Broker 到 Address Server/Diamond/DAuth。下面按报错场景一层层拆,适合正在值守、被发布失败和调用超时卡住的同学照着查。
2. 管控中心故障:服务发布失败、控制台内存溢出与登录异常的排查顺序
2.1 服务发布失败:先确认元数据写没写进去,再看 Broker 有没有收到
控制台点发布,转圈十几秒后报“发布失败”,或者提示成功但服务列表刷新不出来,消费方订阅时找不到服务。这两种表现经常被当成同一个问题,实际上发布链路有四段:Console 发起、Admin 处理、写 CSB Store(MySQL)、刷新 CSB Cache(Redis),Broker 再同步服务定义。四段里任何一段超时或认证失败,前端都只给一个笼统的失败提示,所以不能盯着控制台页面猜。
我一般的顺序是先确认 Console 和 Admin 都活着,8080 端口在听。进程在但端口不在,多半是启动卡在数据源初始化,这时候看启动日志最后 100 行比看页面有用。命令不用复杂,关键是把进程、端口、日志目录一次拿全:
# 1. 看管控中心进程与端口 ps -ef | grep -E 'csb-console|csb-admin' | grep -v grep ss -lntp | grep ':8080 ' # 2. 从进程参数里找日志目录和配置目录,避免凭记忆猜路径 ps -ef | grep csb-console | grep -v grep | tr ' ' '\n' | grep -E 'catalina|log|conf'第一条命令确认进程和监听状态,-E支持多关键字,grep -v grep去掉自身,ss -lntp里-l是监听、-n是数字端口、-t是 TCP、-p显示进程。第二条把启动参数按空格拆开,筛出日志和配置路径,后面查日志就不用到处翻。失败时先看 8080 有没有监听:没监听,查 Console 启动日志;进程在但端口不在,重点看数据源初始化有没有超时。
第二段是 Store。发布失败经常伴随数据库连接池打满或者账号被锁,表现是控制台报一个没有上下文的“系统异常”。到 Store 所在的 MySQL 上确认连接数和账号状态:
# 看连接列表,重点找 Time 很长、State 异常的会话 mysql -h <store-host> -u <csb-user> -p -e "show processlist;"-h是数据库地址,-u是业务账号,-p交互输入密码,不要把密码直接写进命令历史。看Time长的连接和State为Waiting for table metadata lock的会话,前者可能是连接池泄漏,后者多半是有人在改表结构。报Access denied是密码或权限问题,报Too many connections是连接上限或泄漏,两种处理方式完全不同。
第三段是 Cache。CSB Cache 实质是 Redis 集群,双节点部署。发布时写缓存超时,会出现“控制台报失败、数据库里已经有记录、刷新后又出现脏发布”的情况。先确认两个节点都可达,再看 Broker 连的是不是同一套 Cache。用 bash 内建的/dev/tcp测端口,不用额外装工具:
# 从 Broker 机器测试 Cache 端口,地址和端口按环境替换 timeout 3 bash -c '</dev/tcp/<cache-ip>/<cache-port>' && echo "cache reachable" || echo "cache unreachable"timeout 3防止连接卡死,返回不可达时先查网络策略和本机路由,不要急着重启 Cache。参数<cache-ip>、<cache-port>按实际环境填。
第四段才是 Broker 有没有收到服务定义。新版 Broker 的 HTTP 开放端口是 8086,老版是 8087;级联端口新版统一到 8081,老版是 8082。发布时如果负载均衡或巡检还指着老端口,会出现“控制台显示成功、Broker 没收到”的假成功。把端口表拿出来对一遍,比在日志里翻半天快。
注意:发布失败期间如果涉及重启或摘节点,先确认操作级别。CSB 运维操作分 G1、G2、G3,涉及服务连续性的操作属于 G3,需要变更申请并向产品侧、客户侧确认,别在生产上直接试。
2.2 控制台报告内存溢出:先看堆和 GC,不要先加内存
控制台报内存溢出,页面 502 或空白,日志里出现OutOfMemoryError,很多人的第一反应是把堆调大。调大之后能撑一阵,过段时间又复发,因为对象还在涨,只是来得晚一点。先看清楚是什么占着堆:服务列表太大、会话太多、某个导出或查询把大对象拉进来,还是日志把磁盘写满导致转储失败,这几种处理方式不一样。
先找到 Console 的 Java 进程,再看 GC 使用率。jps -l列出 Java 进程和主类,jstat -gcutil的O列是老年代使用率,持续接近 100 且 Full GC 后不降,基本是堆内对象释放不掉:
# 找到 Console 的 Java 进程 jps -l | grep -i console # 每 1 秒打印一次 GC 使用率,连续 10 次 jstat -gcutil <console-pid> 1000 10 # 看系统内存与交换分区 free -m<console-pid>换成实际进程号,1000 10是采样间隔和次数。如果jstat连不上,可能是执行用户和启动用户不一致,换到启动用户再跑。老年代不高但 Full GC 频繁,要看元空间和直接内存,不要只盯堆。free -m里交换分区被大量使用,说明物理内存已经紧张,这时候加堆只会让系统更慢。
处理顺序上,我一般先摘掉一个 Console 节点的负载均衡,保留现场做堆转储,再重启该节点,观察十分钟没有复发,才处理另一个节点。双节点同时重启,控制台会整体不可用,发布和订阅都做不了。堆转储前确认磁盘空间,转储文件可能和堆一样大。堆参数里-Xms与-Xmx设成一样,避免运行期扩堆;-XX:+HeapDumpOnOutOfMemoryError和转储路径提前配好,别等出事才加。
注意:控制台内存溢出期间不要连续点发布或导出,重复请求会让堆更快打满,先把入口流量降下来再排查。
2.3 控制台正常启动但无法访问:端口、负载均衡、安全提示三处按顺序查
进程在、8080 也监听,浏览器就是打不开,或者登录后弹安全提示。这类问题从近到远查,顺序反了会浪费很多时间。先本机回环,再内网 IP,再负载均衡,最后才是浏览器和证书:
# 本机回环 curl -I -m 5 http://127.0.0.1:8080/ # 内网地址 curl -I -m 5 http://<console-ip>:8080/ # 看监听地址是 0.0.0.0 还是 127.0.0.1 ss -lntp | grep ':8080 'curl -I只取响应头,-m 5设置 5 秒超时,避免卡住。本机能通、内网 IP 不通,问题在监听地址或主机防火墙;内网能通、负载均衡不通,查后端健康检查和端口映射。Connection refused是没人监听,Connection timed out是网络策略或防火墙,返回 302 跳到登录页反而是正常的。<console-ip>换成控制台节点内网地址。
登录后出现安全提示,先不要点“忽略”。常见原因是浏览器时间与服务器时间偏差过大、证书链不完整,或者访问入口和配置的域名不一致。先校时,再看证书有效期和中间证书,最后确认负载均衡有没有做 HTTPS 卸载。把提示直接关掉,后面会出现登录态反复失效、发布操作被拒,反而更难查。
2.4 CSB 控制数据库用户名密码变更:三处配置与一次回归验证
改完 Store 的数据库密码,控制台登录报错,或者能登录但发布失败,Broker 日志里出现数据源认证失败。根因是密码不止一处:Console、Admin、Broker 都可能有数据源配置。只改控制台,另外两处还拿旧密码连,表现就是“控制台看着正常
本文还有配套的精品资源,点击获取