Ambari Server 配置修改流程

一、前端通过 Rest 接口提交配置修改请求:

接口:[PUT]   /api/v1/clusters/{clustername}

请求:

[
  {
    "Clusters": {
      "desired_config": [
        {
          "type": "zoo.cfg",
          "tag": "version1488444158642",
          "properties": {
            "autopurge.purgeInterval": "24",
            "autopurge.snapRetainCount": "30",
            "clientPort": "2181",
            "dataDir": "/data01/hadoop/zookeeper",
            "initLimit": "10",
            "syncLimit": "5",
            "tickTime": "2000"
          },
          "service_config_version_note": "Initial configurations for ZooKeeper"
        }
        ...
      ]
    }
  }
]

 

二、服务端操作数据库
1、clusterconfig 表记录(参考 Ambari Server 配置多版本功能实现分析
2、serviceconfig 表记录(参考 Ambari Server 配置多版本功能实现分析
3、serviceconfigmapping 表记录(参考 Ambari Server 配置多版本功能实现分析
4、clusterconfigmapping 表记录,标记当前期望的配置

 

三、周期性判断:期望配置和实际配置是否一致,如不一致则提示用户更新

期望配置:clusterconfigmapping 表,selected=1 的记录为 当前期望的配置

实际配置:存储在 Agent 端 /var/lib/ambari-agent/data/ 目录下,Agent 通过心跳 ComponentStatus 字段,汇报当前主机的实际配置

 

注意点:

1、期望配置和实际配置的对比逻辑:ConfigHelper.java 类的 isStaleConfigs()方法

2、集成服务文件 metainfo.xml 的 configuration-dependencies 配置项,如:

<configuration-dependencies>
       <config-type>hdfs-core-site</config-type>
</configuration-dependencies>

只有在 configuration-dependencies 中定义的配置文件,修改之后才会提示用户更新。而且 config-type 字段填写配置文件名的时候,不要加 .xml 扩展名,否则照样不会提示用户更新。

posted @ 2017-05-08 13:20  basenet855x  阅读(3612)  评论(0编辑  收藏  举报