. group 'docker' does not exist
需要手工创建docker组,这一步本来应该是在安装docker的时候来完成的,但是采用yum install的方式不行,需要添加一个docker的repo然后才能够安装。
2. ssh: connect to host 10.1.108.64 port 22: Operation timed out
重启服务器之后搞定了。为什么会出现这个问题,因为我谢了一个测试代码,set timeout=5,这个代码的起源是一段通过ssh远程登录的代码,通过set timeout来实现ssh超时设定,但是这个设定了之后影响是全局的。
3. FAIL(devicemapper,/dev/loop0)异常
dcos在check过程中将会把docker的存储方式修改为overlay,docker安装默认是devicemapper,如果修改后重启docker失败将会报此错误;所以通过service
docker
status来查看一下是否有drop-in以及override.conf,有的话,只需要重启docker服务即可自动更换存储格式,完事。如果还是devicemapper模式,则删掉/opt下面的dcos-reqinstalled文件即可,这样就会重新设置docker的存储模式。
4. 需要关闭端口
53 - 用于DNS
80
2181 -用于安装zookeeper
9990
5. 关于detect ip脚本
尽量保证网卡的名称一致,因为根据获取IP的脚本都是统一的根据网卡的名称来找对应的IP,这里应该写一个脚本保证网卡的名称一致。
在deplooy的时候发生了异常:
Error
executing DC/OS components health check: unable to execute GET
/system/health/v1: Get http://10.1.108.68:61001/system/health/v1: dial
tcp 10.1.108.68:61001: getsockopt: connection refused"
", "status": 1
但是这个只是表面现象,通过查询官网的Trouble Shooting,逐个排查组件,发现很可能是DNS的异常,因为组件中有如下异常:
ping: ready.spartan: Name or service not known
定位为题,查看日志:
systemctl | grep dcos
获取dcos的服务信息,根据官网的trouble shooting介绍进行逐个排查
journalctl -xe -u dcos-exhibitor.service --no-pager --since today
exhibitor组件根本没有日志,但是出于running状态;没有线索,看下一个,mesos-master(首先分析master机器,没有结果再分析agent机器)
journalctl -xe -u dcos-mesos-master --no-pager --since today
发现了一些问题:ping: ready.spartan: Name or service not known,spartan是mesos的DNS服务,这说明现在的DNS服务器有问题,下面再分析DNS服务(也是三个组件)
journalctl -xe -u dcos-mesos-dns.service --no-pager --since today
恩,找到了根源:Failed to start Mesos DNS: domain name based service discovery.
然后查看了一下
journalctl -flu dcos-spartan --no-pager
跟踪到了错误日志:
FileNotFoundError: [Errno 2] No such file or directory: '/var/lib/dcos/exhibitor/zk.pid'
之后的错误日志信息
Starting DNS Forwarder (Spartan): forwards DNS requests to multiple DNS servers...
dcos-spartan.service holdoff time over, scheduling restart.
Failed to load environment files: No such file or directory
dcos-spartan.service failed to run 'start-pre' task: No such file or directory
Failed to start DNS Forwarder (Spartan): forwards DNS requests to multiple DNS servers.
Unit dcos-spartan.service entered failed state.
dcos-spartan.service failed.(这部分日志比较具有迷惑性,什么意义也没有)
journalctl -flu dcos-adminrouter.service --no-pager
没有什么有价值的日志信息。
后来重启了dcos的master的核心服务exhibitor,才发现问题,不知为何直接采用上面提到的journalctl方式无法看到日志,知道重新启动服务后,才开始刷日志,根据日志信息知道了一个信息:脚本文件头少了"#!/bin/bash",添加后,再重启服务,才发现原来detectIP里面返回的IP地址为127.0.0.1或者是空,导致了失败;期初我的脚本是实现的从Linux全局变量中获取本机的IP信息,但是不知为何在脚本里面执行的时候,无法获得这个全局变量。
最后用了一种hack的方式,echo了本机的地址,但是这个问题要解决,后续会尝试一下官网的方案;
对于master而言exhibitor服务就是关键,他起来了,什么都OK了
之后报错:PermissionError: [Errno 13] Permission denied: '/var/lib/dcos/exhibitor/conf/log4j.properties'
一看conf目录下竟然没有log4j.properties,这是怎么回事呢?手动添加一个吧;还要+777,否则python不知为何向里面写东西没有权限;推测是因为第一次失败后,并没有创建改文件;因为正常安装这些文件都是由程序自己来创建的。
然后发现zookeeper无法启动:Unable to create parent directories of /var/lib/dcos/exhibitor/zookeeper/snapshot/myid,不知为何你到/var/lib/dcos/exhibitor下面看能够看到有的是dcos_exhibitor,有的是root权限,现在执行的应该是dcos_exhibitor用户,当然没有权限去想zookeeper里面去写了。
Group docker does not exist on the system
创建一个组,名字叫docker,也是醉了
deploy过程其实就是在执行了,Running Post-Flight其实就是在等结果