mesos安装完成后,页面访问http://10.1.13.214:5050/,不停地弹出对话框,“Failed to connect to ******",进行重新连接,错误如下图所示:
打开浏览器的调试模式,如下图:
我们可以看到,加载完web后,页面定时刷新向远程ip地址5050(Mesos Master)发出get请求。由于mesos这个域名,dns不能解析,所以导致访问失败,所以会一直不停地弹出以上的问题对话框。经过研究,发现state、snapshot这些请求,会默认把mesos master的hostname作为域名去做get请求。
解决方法:
1,如果是源码编译安装,在启动mesos-master时,加--hostname参数。
./bin/mesos-master.sh --ip=101.1.13.214 --port=5050 --work_dir=/var/lib/mesos --hostname=10.1.13.214
另外,--ip和--port参数是修改server地址的,如图:
2,如果是使用yum安装
在网上找到了以下解决方法,但是并没有解决问题。可能是我的安装环境和这位网友的不一样吧。不过可以做参考。
可以在$MESOS_HOME/etc/mesos/mesos-maste-env.sh中设置hostname的值(MESOS_hostname), 如果未设置会从环境中得到真正的hostname
解决办法:
1.将域名的映射添加到浏览器所在机器的hosts里
2.如果只是练习,可以直接将 MESOS_hostname 设置为ip地址,这样就会从ip里访问,从而问题得到解决
我的解决思路是:
首先,查看mesos-master服务的启动方式:
[root@localhost ~]# ps -ef|grep mesos-master
root 7568 1 0 16:51 ? 00:00:01 /usr/sbin/mesos-master --zk=zk://10.1.13.214:2181/mesos --ip=10.1.13.214 --port=5050 --log_dir=/var/log/mesos --quorum=1 --work_dir=/var/lib/mesos
root 7578 7568 0 16:51 ? 00:00:00 logger -p user.info -t mesos-master[7568]
root 7579 7568 0 16:51 ? 00:00:00 logger -p user.err -t mesos-master[7568]
root 7939 5836 0 17:09 pts/0 00:00:00 grep --color=auto mesos-master
如果是使用systemctl start mesos-master.service启动,想添加--hostname参数,经过测试在$MESOS_HOME/etc/mesos/mesos-maste-env.sh $MESOS_HOME/etc/mesos/mesos-agent-env.sh /etc/default/mesos-master /etc/default/mesos等地方添加都不生效。
所以,现在需要查看mesos-master.service的启动文件,启动文件在# cat /lib/systemd/system/mesos-master.service 启动调用的启动程序是/usr/bin/mesos-init-wrapper,那我们就来看看这个启动程序。
发现有这么一段:
.....
121 function master {
122 local etc_master=/etc/mesos-master
123 local args=()
124 # Call mesosphere-dnsconfig if present on the system to generate config files.
125 [ -x /usr/bin/mesosphere-dnsconfig ] && mesosphere-dnsconfig -write -service=mesos-master
126 set -o allexport
127 [[ ! -f /etc/default/mesos ]] || . /etc/default/mesos
128 [[ ! -f /etc/default/mesos-master ]] || . /etc/default/mesos-master
129 set +o allexport
130 [[ ! ${ULIMIT:-} ]] || ulimit $ULIMIT
131 [[ ! ${ZK:-} ]] || args+=( --zk="$ZK" )
132 [[ ! ${IP:-} ]] || args+=( --ip="$IP" )
133 [[ ! ${PORT:-} ]] || args+=( --port="$PORT" )
134 [[ ! ${CLUSTER:-} ]] || args+=( --cluster="$CLUSTER" )
135 [[ ! ${LOGS:-} ]] || args+=( --log_dir="$LOGS" )
......
参数添加到/etc/default/mesos或者/etc/default/mesos-master,然后在136行加上:
136 [[ ! ${HOSTNAME:-} ]] || args+=( --hostname="$HOSTNAME" )
然后加上hostname的参数
#vim /etc/default/mesos-maste
IP=10.1.13.214
PORT=5050
ZK=`cat /etc/mesos/zk`
HOSTNAME=10.1.13.214
最后重启mesos-master.service
#systemctl restart mesos-master.service