. 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\" \n", "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其實就是在等結果