Ambari 报错 Cannot register host with not supported os type

在重装两台AmbariAgent服务器后,注册到AmbariServer时遇到系统类型不一致的错误。通过日志和源码分析,发现系统信息从/etc/*-release文件获取,且与AmbariServer的系统信息不符。最终通过修改Agent端的/etc/system-release文件,使其与Server端一致,解决了注册问题。

背景

项目有两台Ambari Agent服务器因为某种原因,需要重装操作系统,重装系统后,手动安装好ambari-agent,修改server配置指向ambari-server后,报错系统不一致,用uname 查看系统版本又是完全一样的。

ERROR 2023-06-07 16:22:18,278 HeartbeatThread.py:108 - Exception in HeartbeatThread. Re-running the registration
Traceback (most recent call last):
  File "/usr/lib/ambari-agent/lib/ambari_agent/HeartbeatThread.py", line 95, in run
    self.register()
  File "/usr/lib/ambari-agent/lib/ambari_agent/HeartbeatThread.py", line 135, in register
    self.handle_registration_response(response)
  File "/usr/lib/ambari-agent/lib/ambari_agent/HeartbeatThread.py", line 209, in handle_registration_response
    raise Exception(error_message)
Exception: Registration failed due to: Cannot register host with not supported os type, hostname=xxxxxxxxxxxxxxxxxxxxxxxxxxxx, serverOsType=openeuler7, agentOsType=kylin linux advanced server release v10

排查

报错信息是说ambari-agent的系统类型和ambari-server的系统类型不一致,去源码里找这个系统类型是从哪里获取的。

  1. 先看日志,发现服务器信息是从这个Hardware.py中获取的
INFO 2023-06-07 16:25:47,647 Hardware.py:73 - Host system information: {'kernel': 'Linux', 'domain': 'xxxxx.local', 'physicalprocessorcount': 8, 'kernelrelease': '4.19.90-17.5.ky10.aarch64', 'uptime_days': '96', 'memorytotal': 32898752, 'swapfree': '1.98 GB', 'memorysize': 32898752, 'osfamily': 'kylin linux advanced server release v', 'swapsize': '2.00 GB', 'processorcount': 8, 'netmask': '255.255.255.128', 'timezone': 'CST', 'hardwareisa': 'aarch64', 'memoryfree': 5136832, 'operatingsystem': 'kylin linux advanced server release v', 'kernelmajversion': '4.19', 'kernelversion': '4.19.90', 'macaddress': 'xx:xx:xx:xx:xx:xx', 'operatingsystemrelease': '10', 'ipaddress': 'xxx.xxx.xxx.xxx', 'hostname': 'xxxxxxxxxxxxxxx', 'uptime_hours': '2327', 'fqdn': 'xxxxxxxxxxxxxxx', 'id': 'root', 'architecture': 'aarch64', 'selinux': False, 'mounts': [{'available': '63105340', 'used': '38383300', 'percent': '38%', 'device': '/dev/mapper/klas-root', 'mountpoint': '/', 'type': 'xfs', 'size': '101488640'}, {'available': '69237116', 'used': '35569284', 'percent': '34%', 'device': '/dev/vdb', 'mountpoint': '/export', 'type': 'xfs', 'size': '104806400'}], 'hardwaremodel': 'aarch64', 'uptime_seconds': '8377782', 'interfaces': 'enp3s0,lo'}
  1. vim /usr/lib/ambari-agent/lib/ambari_agent/Hardware.py,发现是从ambari_commons里的os_check 或者os_family_impl 获取操作系统信息的
from ambari_commons.os_check import OSConst
from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
  1. 查看os_check文件,vim /usr/lib/ambari-agent/lib/ambari_commons/os_check.py
253   @staticmethod
254   def _get_os_type():
255     # Read content from /etc/*-release file
256     # Full release name
257     dist = OSCheck.os_distribution()
258     operatingSystem = dist[0].lower()
259 
260     # special cases
261     if _is_oracle_linux():
262       operatingSystem = 'oraclelinux'
263     elif operatingSystem.startswith('suse linux enterprise server'):
264       operatingSystem = 'sles'
265     elif operatingSystem.startswith('red hat enterprise linux'):
266       operatingSystem = 'redhat'
267     elif operatingSystem.startswith('darwin'):
268       operatingSystem = 'mac'
269 
270     if operatingSystem == '':
271       raise Exception("Cannot detect os type. Exiting...")
272 
273     if _is_powerpc():
274       operatingSystem += '-ppc'
275 
276     return operatingSystem
  1. 从注释中发现操作系统信息是从/etc/*-release文件中获取的,进而对比ambari-server的和这两台ambari-agent的/etc/system-release文件内容,发现果然不一样

解决

修改重装系统的两台服务器的/etc/system-release,保持和server一致即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值