Ambari使用Blueprint动态添加主机到群集

2018年9月5日 0 条评论 342 次阅读 0 人点赞

Ambari Blueprint对扩展集群也很有帮助。

现在经常出现的情况是,需要在不使用Ambari UI的情况下向现有集群添加主机。我曾经认为Blueprint只对最初提供集群有用。但是它们也非常有助于扩展集群。

使用自动发现提供初始集群

在下面的示例中,我们将使用Ambari 2.1中的一项新功能,称为Auto-Discovery来配置群集中的第一个节点。

不要手动向Ambari Server注册主机。我们将演示Auto-Discovery来初始化新主机。

检查是否已向群集注册主机。

curl -i -H "X-Requested-By: ambari" -u admin:xxxx -X GET http://<ambari-server:port>/api/v1/hosts

Blueprint已在Ambari注册

{
    "Blueprints": {
        "stack_name": "HDP",
        "stack_version": "2.3"
    },
    "configurations": [],
    "host_groups": [
        {
            "cardinality": "1",
            "components": [
                {
                    "name": "ZOOKEEPER_SERVER"
                },
                {
                    "name": "ZOOKEEPER_CLIENT"
                }
            ],
            "configurations": [],
            "name": "zookeeper_host_group"
        },
        {
            "cardinality": "1",
            "components": [
                {
                    "name": "KAFKA_BROKER"
                }
            ],
            "configurations": [],
            "name": "kafka_host_group"
        }
    ]
}

将上面的内容保存到文件中,并在您的群集中注册Blueprint。

curl -i -H "X-Requested-By: ambari" -u admin:admin -X POST -d @myblueprint.json http://ambari-server:8080/api/vi/blueprints/basic1

创建您的群集

现在让我们创建我们的集群并使用Auto-Discovery功能来配置主机。这是我们用于配置群集的模板文件。

{
  "blueprint" : "basic1",
  "host_groups" :[
    { 
      "name" : "zookeeper_host_group",   
      "host_count" : "1",
      "host_predicate" : "Hosts/cpu_count>0"     
    }
  ]
}

此时集群已在Ambari中创建,但不应该有任何主机。

至此,集群已经在Ambari中创建,但是不应该拥有任何主机。Ambari服务器正在等待主机注册到与上面“谓词”匹配的集群。host_count也是标准的重要部分。在host_count中的主机数量可用之前,进程不会启动。在这里的演示中,我们将它设置为1。在现实世界中,您需要3台主机来创建一个有效的ZooKeeper集群。

手动注册主机(暂时只有一个)

在主机上安装Ambari Agent并将其配置为与Ambari通信。主机应匹配上面的cpu_count>0

启动Ambari-Agent并返回Ambari Server UI。在短期内,您应该看到开始配置节点并添加服务的操作。现在您拥有一个包含1个节点和正在运行的ZooKeeper服务的集群。

扩展我们的集群

使用第二个主机,让我们手动向Ambari 注册代理。通过API检查主机是否已在Ambari服务器上注册

curl -i -H "X-Requested-By: ambari" -u admin:xxxx -X GET http://<ambari-server:port>/api/v1/hosts

请注意,先前注册的蓝图“basic1”具有Kafka Brokers的主机组。让我们将这个新注册的主机作为Kakfa Broker添加到我们的集群中。

{
    "blueprint" : "basic1",
    "host_group" : "kafka_host_group"
}

使用Blueprint中指定的服务添加和配置主机。

curl -i -H "X-Requested-By: ambari" -u admin:xxxx -X POST -d @kafka_host.json http://<ambari-server:port>/api/v1/clusters/<yourcluster>/hosts/<new_host_id>

\<new_host_id>是已注册到Ambari的名称,应该是主机FQDN。仔细检查上面的hosts查询返回的名称。

这会将主机添加到新群集,并使用Blueprint中配置的服务进行配置。

过去,Blueprints用于初始化集群。现在,您可以使用它们来扩展您的群集。避免尝试通过REST API反向设计安装和配置服务的过程,使用Blueprints你会省下很多精力!!

Ambari Blueprint

qianmoQ

qianmoQ

这个人太懒什么东西都没留下

文章评论(0)