Rancher FAQ寶典系列來襲,Rancher Server相關的常見問題,本文一網打盡。
需要注意運作rancher server容器時,不要使用host模式。程式中有些地方定義的是localhost或者127.0.0.1,如果容器網絡設定為host,将會去通路主控端資源,因為主控端并沒有相應資源,rancher server容器啟動就出錯。
此指令僅适用于單機測試環境,如果要生産使用Rancher server,請使用外置資料庫(mysql)或者通過
把資料挂載到主控端上。如果用外置資料庫,需提前對資料庫做性能優化,以保證Rancher運作的最佳性能。
你可以通過簡單的Docker指令從Rancher Server容器導出資料庫。
Rancher的版本位于UI的頁腳的左側。如果你點選版本号,将可以檢視其他元件的詳細版本。
如果你的主機直接被删除,Rancher Server會一直顯示該主機。主機會處于Reconnecting狀态,然後轉到Disconnected狀态。你也可以通過添加主機再次把此節點添加到RANCHER叢集,如果不在使用此節點,可以在UI中删除。
如果你有添加了健康檢查功能的服務自動排程到狀态Disconnected主機上,CATTLE會将這些服務重新排程到其他主機上。
主控端上var/lib/rancher/state這個檔案夾,這是Rancher用來存儲用于辨別主機的必要資訊。
.registration_token中儲存了主機的驗證資訊,如果裡面的資訊發生變化,RANCHER會認為這是一台新主機, 在你執行添加主機後,UI上将會出現另外一台相同的主機,第一台主機接着處于失聯狀态。
運作docker logs可以檢視在Rancher Server容器的基本日志。要擷取更詳細的日志,你可以進入到Rancher Server容器内部并檢視日志檔案。
在這個目錄裡面會出現cattle-debug.log和cattle-error.log。如果你長時間使用此Rancher Server,你會發現我們每天都會建立一個新的日志檔案。
以下是将Rancher Server日志從容器複制到主機的指令。
如果更改了Rancher Server的IP位址,你需要用新的IP重新注冊主機。
在Rancher中,點選系統管理->系統設定更新 Rancher Server的主機注冊位址。注意必須包括Rancher Server暴露的端口号。預設情況下我們建議按照安裝手冊中使用8080端口。
主機注冊更新後,進入基礎架構->添加主機->自定義。添加主機的docker run指令将會更新。使用更新的指令,在Rancher Server的所有環境中的所有主機上運作該指令。
很可能有一些任務由于某些原因而處于僵死狀态,如果你能夠用界面檢視系統管理 -> 系統程序,你将可以看到Running中的内容,如果這些任務長時間運作(并且失敗),則Rancher會最終使用太多的記憶體來跟蹤任務。這使得Rancher Server處于了記憶體不足的狀态。
為了使服務變為可響應狀态,你需要添加更多記憶體。通常4GB的記憶體就夠了。
你需要再次運作Rancher Server指令并且添加一個額外的選項<code>-e JAVA_OPTS="-Xmx4096m"</code>
根據MySQL資料庫的設定方式的不同,你可能需要進行更新才能添加該選項。
如果是由于缺少記憶體而無法看到系統管理 -> 系統程序的話,那麼在重新開機Rancher Server之後,已經有了更多的記憶體。你現在應該可以看到這個頁面了,并可以開始對運作時間最長的程序進行故障分析。
Rancher Server會自動清理幾個資料庫表,以防止資料庫增長太快。如果對你來說這些表沒有被及時清理,請使用API來更新清理資料的時間間隔。
在預設情況下,産生在2周以前的container_event和service_event表中的資料則資料會被删除。在API中的設定是以秒為機關的(1209600)。API中的設定為events.purge.after.seconds。
預設情況下,process_instance表在1天前産生的資料将會被删除,在API中的設定是以秒為機關的(86400)。API中的設定為process_instance.purge.after.seconds。
為了更新API中的設定,你可以跳轉到<code>http://&lt;rancher-server-ip&gt;:8080/v1/settings</code>頁面,搜尋要更新的設定,點選links -> self跳轉到你點選的連結去設定,點選側面的“編輯”更改’值’。請記住,值是以秒為機關。
如果你剛開始運作Rancher并發現它被永久當機,可能是liquibase資料庫上鎖了。在啟動時,liquibase執行模式遷移。它的競争條件可能會留下一個鎖定條目,這将阻止後續的流程。
如果你剛剛更新,在Rancher Server日志中,MySQL資料庫可能存在尚未釋放的日志鎖定。
釋放資料庫鎖
注意:請不要釋放資料庫鎖,除非有相關日志鎖的異常。如果是由于資料遷移導緻更新時間過長,在這種情況下釋放資料庫鎖,可能會使你遇到其他遷移問題。
如果你已根據更新文檔建立了Rancher Server的資料容器,你需要exec到rancher-data容器中更新DATABASECHANGELOGLOCK表并移除鎖,如果你沒有建立資料容器,你用exec到包含有你資料庫的容器中。
一旦進入到 Mysql 資料庫,你就要通路cattle資料庫。

如果你的身份認證出現問題(例如管理者密碼忘記),則可能無法通路Rancher。要重新獲得對Rancher的通路權限,你需要在資料庫中關閉通路控制。為此,你需要通路運作Rancher Server的主機。
ps:假設在重置通路控制之前有建立過其他使用者,那麼在認證方式沒有變化的情況下,重置通路控制除了超級管理者(第一個被建立的管理者,ID為1a1),其他使用者賬号資訊不會受影響。
假設資料庫為rancher内置資料庫
注意: 這個<code>&lt;rancher_server_container_ID&gt;</code>是具有Rancher資料庫的容器。如果你更新并建立了一個Rancher資料容器,則需要使用Rancher資料容器的ID而不是Rancher Server容器,rancher内置資料庫預設密碼為空。
選擇Cattle資料庫。
檢視setting表。
更改api.security.enabled為false,并清除api.auth.provider.configured的值。
确認更改在setting表中是否生效。
可能需要約1分鐘才能在使用者界面中關閉身份認證,然後你可以通過重新整理網頁來登陸沒有通路控制的Rancher Server。
關閉通路控制後,任何人都可以使用UI/API通路Rancher Server。
重新整理頁面,在系統管理/通路控制 重新開啟通路控制。重新開啟通路控制填寫的管理者使用者名将會替換原有的超級管理者使用者名(ID為1a1 )。
在高可用叢集中,如果你正在使用代理伺服器後,如果rancher-compose-executor和go-machine-service不斷重新開機,請確定你的代理使用正确的協定。
Go-machine-service是一種通過websocket連接配接到Rancher API伺服器的微服務。如果無法連接配接,則會重新啟動并再次嘗試。如果你運作的是單節點的Rancher Server,它将使用你為主機注冊位址來連接配接到Rancher API服務。檢查從Rancher Sever容器内部是否可以通路主機注冊位址。
你應該得到一個json響應。如果認證開啟,響應代碼應為401。如果認證未打開,則響應代碼應為200。 驗證Rancher API Server 能夠使用這些變量,通過登入go-machine-service容器并使用你提供給容器的參數進行curl指令來驗證連接配接:
你應該得到一個json響應和200個響應代碼。如果curl指令失敗,那麼在go-machine-service和Rancher API server之間存在連接配接問題。如果curl指令沒有失敗,則問題可能是因為go-machine-service嘗試建立websocket連接配接而不是普通的http連接配接。如果在go-machine-service和Rancher API伺服器之間有代理或負載平衡,請驗證代理是否支援websocket連接配接。
本文轉自 RancherLabs 51CTO部落格,原文連結:http://blog.51cto.com/12462495/2049725