CloudFoundry 使用遇到的問題

2021-06-19 17:47:53 字數 4056 閱讀 3735

在部署、使用開源雲平台cloudfoundry(版本為v1)的過程中,遇到了一些問題,通過分析cloudfoundry的實現機制和bosh的結構,在google的幫助下,最終將問題解決,同時對linux也有了進一步的了解。  

現在將一些問題和解決方案總結出來,與大家一起分享。  

一、vcenter故障排除

問題:  

新虛擬機器ip與已有虛擬機器ip(如nfs server的ip)衝突後,造成已有虛擬機器、bosh、cloudfoundry不能正常工作。  

解決方案:  

1, 使用esxi主機上的「restart management agent」;可以恢復虛擬機器狀態  

2, 重啟vcenter服務  

3, 使用「主機—>配置儲存介面卡、儲存器」上的「全部重新掃瞄」功能重新整理儲存。(可選)  

4, 重啟micro bosh虛擬機器(micro bosh的模板虛擬機器雖然未啟動,但需要在第一步的操作使他恢復正常狀態,否則即使重啟了micro bosh虛擬機器,也無法訪問。)。  

通過以下一組命令確認micro bosh已恢復正常。  

$ bosh target 

$ bosh login  

$ bosh deployments  

$ bosh releases  

$ bosh vms  

如果以上命令能正常執行並返回預期的資訊,則micro bosh恢復正常。  

5, 在micro bosh恢復正常後,執行「bosh cck」檢查多節點的bosh的執行狀態。根據「bosh cck」的提示操作,先選擇「reboot vm」進行恢復。如果無法恢復,則選擇「bosh cck」命令提示中的「recreate vm 。。。」進行恢復。  

6, 在多節點的bosh恢復正常後,執行「bosh cck」檢查多節點的cloudfoundry的執行狀態。根據「bosh cck」的提示操作,先選擇「reboot vm」進行恢復。如果無法恢復,則選擇「bosh cck」命令提示中的「recreate vm 。。。」進行恢復。  

cloudfoundry恢復後,各節點中的原有資料和設定會隨著節點的重建而恢復。  

二、主機增加

往vcenter中增加乙個新的vsphere主機後,需要在vcenter中為新的vsphere主機增加nfs 儲存(nfs datastore)、網路(cf network、services network),使得bosh部署cloudfoundry時能夠識別出網路中新增加的vsphere主機。  

三、powerdns節點

第一次部署多節點bosh時,如果powerdns在job列表中最後乙個時,最後乙個執行該dns job,則dns這個節點上的資料庫會沒有表。因為powerdns節點上的表有director job來建立。因此最好將powerdns這個節點放在director之前。或者多節點bosh部署完後,再重新部署一下director這個job。  

四、修改『最大開啟檔案數』

1、 修改dea節點上的agent.rb  

agent.rb: /var/vcap/packages/dea/lib/dea/agent.rb  

搜尋 『fds』,在def process_dea_start方法中修改num_fds值為9000.  

2、 使用root許可權修改以下檔案內容  

/etc/security/limits.conf,增加以下內容,  

* soft nproc 10240  

* hard nproc 10240  

vcap soft nofile 9000  

vcap hard nofile 65000  

root soft nofile 9000  

root soft nofile 65000  

* soft nofile 10240 # 控制程序的開啟最大檔案數  

* hard nofile 10240 # 控制程序的開啟最大檔案數  

/etc/pam.d/common-session,增加以下內容,  

session required pam_limits.so  

/etc/profile,增加以下內容,(該操作可選)  

ulimit -hsn 10240  

需要重啟電腦,否則更改不會立即生效。   

檢查:  

ulimit -a 這個是列出當前系統的所有內容限制  

ulimit -n 這個是列出當前系統能夠開啟最大的檔案控制代碼數。  

重啟電腦之後,就可以使用root方式進行修改/etc/profile中的ulimit -hsn 後的數字,再執行source /etc/profile,就可以馬上看到效果了。(該操作可選)  

檢視程序的limits  

1、 ps -ea  

檢視程序資訊。  

2、 cat   /proc/程序id號/limits  

檢視指定程序下的操作限制內容。  

五、修改cloud controller的nginx上傳檔案大小限制

當上傳大檔案到cloudfoundry時,檔案大小超過256m,此時cloudfounry會返回413 的http 響應**(上傳檔案大小超過nginx最大值)。  

為了能夠上傳大檔案,修改兩個節點上的nginx.conf檔案。  

1、cloud controller節點上的nginx的「client_max_body_size 556m;」引數值。  

檔案:/var/vcap/data/jobs/cloud_controller/56.8-dev/config/nginx.conf,在http上下文中修改client_max_body_size。  

2、router節點上的nginx的「client_max_body_size 556m;」引數值。  

檔案:/var/vcap/data/jobs/router/18.5-dev/config/nginx.conf,在http上下文中修改client_max_body_size。  

六、修改dea節點的系統時間

如果在執行『bosh deploy』命令時,出現各種錯誤提示,可以使用重啟micro bosh節點上的虛擬機器,或者在vcenter中選擇micro bosh、多節點bosh所在的vsphere主機 並選擇右鍵選單中的『重新引導』功能進行重啟,使用這兩種方法可以修復錯誤提示。  

八、修改cloudfoundry使用者的記憶體分配量

問題:hbase_master節點處於『failing』狀態。  

檢視該節點上的日誌檔案 /var/vcap/sys/log/hbase_master/hbase_master_start.stdout.log,發現錯誤資訊。  

解決辦法:修改hbase_master節點上配置檔案中的hbase.rootdir。  

被修改的檔案位置:  

/var/vcap/data/jobs/hbase_master/1.1-dev/config/hbase/hbase-site.xml  

hbase.rootdir

hdfs:

說明:192.168.2.98是hbase_master節點上的主機ip位址 。  

十、修改cloudcontroller中stage操作時間

檢視tempest\cf-release\jobs\cloud_controller\templates\cloud_controller.yml.erb,可以看到staging下的  max_staging_runtime引數控制cloud controller的stage時間,這個時間可以在cloudfoundry的部署檔案中進行配置;或者修改cloud controller節點上的/var/vcap/data/jobs/cloud_controller/56.8-dev/config/cloud_controller.yml檔案中的該引數值。

首先嘗試使用CloudFoundry

所有這些意味著您無法使用現有應用程式,無法將其上載到gae並期望它像在本地伺服器上執行一樣執行。實際上,將應用程式遷移到gae是乙個冗長的過程,具體取決於您使用的內容與允許使用的內容之間的差距。最糟糕的是,一旦遷移,您將無法再在標準伺服器上執行 或僅在提供的gae沙箱中執行 或者既要配置gae又要花...

如何在CloudFoundry上強制使用https

cloud foundry平台一般都提供http https兩種協議,但是某些時候我們只想使用https,這時候我們就可以通過cf提供的x forwarded proto來處理 以flask為例,在應用中加上如下語句即可 return redirect request.url.replace htt...

Android MediaMuxer使用遇到的問題

1.illegalstateexception問題 mediamuxer的使用必須嚴格遵循如下順序 addtrack start writesampledata stop release 如果有順序衝突或者多次呼叫start stop release,會導致illegalstateexception...