versionAdvertised详解
# 1. versionAdvertised 概述
# 1.1 参数定义
versionAdvertised
是 Ambari 组件 metainfo.xml 文件的重要参数,主要用于
控制该服务是否纳入平台的版本升级、切换、回滚等生命周期管理,并决定其在数据库 hostcomponentstate
表中是否写入具体版本号。
概念解读
versionAdvertised 并不影响 UI 是否强制显示版本号(UI 受多种配置综合影响), 它的核心作用在于升级链路和数据库追踪。
# 1.2 官方出处
官方参考
详见 Ambari官方 metainfo.xml 说明 (opens new window) does the component advertise its version – used during rolling/express upgrade
# 2. 参数配置与写法
# 2.1 XML 书写方式
该参数仅可出现在 service 的 <service>
节点下,支持 true
或 false
两种布尔值。
<service>
<name>ZOOKEEPER_SERVER</name>
<versionAdvertised>true</versionAdvertised>
<!-- 其他配置 -->
</service>
1
2
3
4
5
6
2
3
4
5
6
配置示例解读
- 如果你的服务期望参与升级管理、版本切换,务必写明 versionAdvertised=true
- 若仅是 agent、监控脚本、小工具、扩展插件等无需平台升级,可省略或设为 false
# 2.2 参数选项与适用建议
参数名 | 类型 | 默认值 | 推荐取值 | 典型场景 |
---|---|---|---|---|
versionAdvertised | bool | false | true | 主服务/需要升级的组件 |
versionAdvertised | bool | false | false | agent/小工具/静态插件 |
- 设为 true:参与升级/切换/回滚,数据库有版本记录
- 设为 false:完全跳过升级/切换/回滚,数据库无相关追踪
# 2.3 未配置或配置错误的实际现象
- 不配置 versionAdvertised 或拼写错误,Ambari 可能会将该服务识别为 UNKNOWN,导致升级链路缺失、平台提示未知服务。
- 在运维实际中,很多升级失败或者服务不可切换的根因,就是该参数遗漏或配置不当。
# 3. 版本升级链路中的作用
# 3.1 纳入升级/切换/回滚全链路
只有 versionAdvertised 为 true 的服务,才会被 Ambari 升级引擎纳入滚动升级、Express 升级、版本切换、回滚等流程。 无论是 UI 操作、API 调用还是 CLI 工具执行,这些链路都会自动筛选 versionAdvertised=true 的服务参与平台级版本流转。
升级链路场景 | 受 versionAdvertised 控制 | 说明 |
---|---|---|
滚动升级 | 是 | 不在升级服务清单中的组件不会被升级流程感知 |
Express 升级 | 是 | 只处理 versionAdvertised=true 的服务 |
版本切换 | 是 | 否则无法对指定服务做多版本切换 |
回滚 | 是 | 否则升级失败无法单独对某服务做回退 |
普通配置变更 | 否 | 与升级无关,普通配置覆盖流程不依赖 versionAdvertised |
# 3.2 运维建议
注意
在大数据生产集群环境中,组件服务能力臃肿,升级风险较高。如非必要,强烈不建议频繁对主服务做版本升级,更建议采用稳定运行、全量验证的维护策略。
# 3.3 常见故障与诊断
- 升级未包含某服务:需首先检查 metainfo.xml 是否已设 versionAdvertised=true
- 回滚找不到目标服务:大概率是该参数配置缺失或拼写错误
- 批量切换无响应:请对所有需升级服务一一核查该参数
# 4. 数据库影响与主机版本追踪
# 4.1 hostcomponentstate.version 字段详解
设置 versionAdvertised=true 后,Ambari 数据库的 hostcomponentstate 表中,将为每台主机、每个服务组件实例写入当前版本号(version 字段)。
字段名 | 说明 |
---|---|
host_name | 目标主机名 |
service_name | 服务名称 |
component_name | 组件实例名 |
version | 当前主机当前组件版本,升级时自动写入 |
# 4.2 追踪/溯源/批量分析应用场景
- 批量查询版本分布:可精确追踪集群内每台主机、每个组件当前运行的版本,支持升级进度批量监控
- 升级/回滚验证:平台升级/切换后能快速校验全集群的实际生效版本,避免“表面已升实际未切换”
- 历史溯源/异常排查:升级异常、版本漂移、节点不一致等场景下可追溯 root cause
# 4.3 versionAdvertised=false 的直接后果
- hostcomponentstate.version 字段始终为空,数据库层面无法分析/追踪/统计该服务实际版本
- 升级/切换/回滚/批量操作均被平台自动跳过
- 日常巡检、故障诊断、扩缩容自动化等所有基于数据库版本信息的能力将缺失
- 01
- bigtop-select 打包缺 compat 报错修复 deb07-16
- 02
- bigtop-select 打包缺 control 文件报错修复 deb07-16
- 03
- 首次编译-环境初始化 必装07-16