首页 > 代码库 > ambari安装问题记录:Ambari Agent host cannot reach Ambari Server 'localhost:8080'.

ambari安装问题记录:Ambari Agent host cannot reach Ambari Server 'localhost:8080'.

在安装完ambari-server并配置之后,选定客户端进行指定安装的时候,发现总是遇到这一错误

Ambari Agent host cannot reach Ambari Server ‘localhost:8080‘.
                     

我看了一下错误日志发现在从ambari-server传送到客户端的setupAgent.py脚本的main函数中的参数设置老是不对,如下所示:

156 def main(argv=None):
   157   scriptDir = os.path.realpath(os.path.dirname(argv[0]))
   158   # Parse the input
   159   onlyargs = argv[1:]
   160   expected_hostname = onlyargs[0]
   161   passPhrase = onlyargs[1]
   162   #hostname = onlyargs[2]
   163   hostname = "192.168.31.150"
   164   projectVersion = None
   165   #server_port = 8080
   166   server_port = 8440
   167   if len(onlyargs) > 3:
   168     projectVersion = onlyargs[3]
   169   if len(onlyargs) > 4:
   170     server_port = onlyargs[4]
   171   try:
   172     server_port = int(server_port)
   173   except (Exception), e:
   174     server_port = 8080
   175
   176   checkServerReachability(hostname, server_port)
   177
   178   if projectVersion is None or projectVersion == "null" or projectVersion == "{ambariVersion}" or projectVersion == "":
   179     retcode = getOptimalVersion("")
   180   else:
   181     retcode = getOptimalVersion(projectVersion)
   182
   183
   184   if retcode["exitstatus"] == 0 and retcode["log"] != None and retcode["log"] != "" and retcode["log"][0].strip() != "":
   185       availiableProjectVersion = "-" + retcode["log"].strip()
   186       if not isAgentPackageAlreadyInstalled(availiableProjectVersion):
   187           if is_suse():
   188             ret = installAgentSuse(availiableProjectVersion)
   189           else:
   190             ret = installAgent(availiableProjectVersion)
   191           if (not ret["exitstatus"]== 0):
   192             sys.exit(ret)
   193   elif retcode["exitstatus"] == 1 and retcode["log"][0].strip() != "":


其中第162和第165行为原先的代码,如果按照原先的代码执行就会一直出现上述问题。而163和166行是我手动指定了ambari-server所在机器的host和service port,修改之后执行就可以通过。

这个问题追查了很长时间,我的判断是在客户端调用setupAgent.py执行的时候,并没有将服务端的相应参数传入而是使用的默认参数,从而导致了问题的发生。至于为什么会发生这种情况还不得而知。

本文出自 “左罗CTO” 博客,请务必保留此出处http://zorro.blog.51cto.com/2139862/1409468