背景
ps:在本文中,假设我系统的hostname为node1。
使用ceph-deploy命令搭建Ceph集群,执行ceph new node1时,出现如下错误:
[node1][INFO ] Running command: /bin/ip addr show
[node1][DEBUG ] IP addresses found: ['192.168.56.16', '172.17.0.1', '10.0.2.15']
[ceph_deploy.new][DEBUG ] Resolving host node1
[ceph_deploy][ERROR ] UnableToResolveError: Unable to resolve host: node1
调用该命令之前,已经设置了ssh免密码登录,并且都可以ping通和免密码登录到node1的。
原因
Ubuntu有一个让人头痛的特性,就是在/etc/hosts配置文件中,让hostname使用了它的回环loopback地址。这个特性使得很多服务无法检测到真正的地址,这里,ceph-deploy中,ceph_deploy.util.get_nonlocal_ip获取到的是127网段的地址,然后就报错不能解析hostname了。
解决方法
在/etc/hosts中,把回环地址对应的hostname给删除掉。再添加一行真正的ip地址和hostname的对应关系,即可。