我有4台CentOS 7.1 VM的安装程序,它们是通过OpenStack部署的。他们有一个公共和私人IP地址。如果我运行
,主机不知道公共IPifconfig -a
我只获取主机的私有IP地址。
现在我想使用mesosphere软件包部署Mesos 23.0,首先我使用以下选项部署Master
--cluster="my-cluster" --hostname="<Public-IP>" --log_dir="/var/log/mesos" --port="5050" --zk="zk://127.0.0.1:2181/mesos" --quorum="1"
其余选项是默认值。
使用以下选项部署Slaves:
--log_dir=/var/log/mesos --containerizers=docker,mesos --executor_registration_timeout=5mins --hostname=<Public IP> --master=<Master Public IP>:5050
从属服务器被添加到集群中但它们直接进入“已停用”状态,因此我无法在集群上运行任何Framework。我可以在5051上对主服务器的 telnet 执行 telnet 。此外,我尝试添加--ip=<public IP>
,这会导致绑定错误:
Failed to initialize: Failed to bind on <Public IP>:5051: Cannot assign requested address: Cannot assign requested address [99]
因为奴隶不知道它的公共IP。并且mesos-slave默认监听0.0.0.0
netstat -ltnp | grep ':5051'
tcp 0 0 0.0.0.0:5051 0.0.0.0:* LISTEN 764/mesos-slave
当我查看来自mesos-master的日志文件时,我可以看到奴隶用他们的私有IP回应自己
Slave 20150805-161215-1059104960-5050-715-S1136 at slave(1)@<private IP>:5051 (<Public IP>) disconnected
Disconnecting slave 20150805-161215-1059104960-5050-715-S1136 at slave(1)@<private IP>:5051 (<Public IP>)
Deactivating slave 20150805-161215-1059104960-5050-715-S1136 at slave(1)@<private IP>:5051 (<Public IP>)
由于VM无法在专用网络中进行通信,因此无法正常工作。我是否必须允许VM通过其私有IP进行通话,或者如何使我的群集正常工作?
谢谢!
答案 0 :(得分:1)
我通过ifconfig添加公共IP解决了我的问题。也许有更好的解决方案?
我们现在决定允许VM通过私有IP进行通信,这也解决了问题。
答案 1 :(得分:0)
您可以使用&#34; - advertise_ip&#34;如果无法绑定到NIC,则分配浮动IP的选项。