如何使用一個PaaS集群,其實就是如何使用它的網(wǎng)絡(luò)令杈、存儲走敌,這兩點關(guān)系著應(yīng)用的部署。
DC/OS集群中逗噩,網(wǎng)絡(luò)分為Host掉丽、Bridge、Virtual Network给赞。
應(yīng)用的本地存儲是通過掛載的形式來實現(xiàn)的机打,掛載分為Persistent Volume和Host Volume矫户。
而Persistent Volume又分為root片迅、path、mount類型皆辽,Host Volume相當于docker volume mount柑蛇。詳細介紹可見DC/OS-local-persistent-volumes.
網(wǎng)絡(luò)
普通應(yīng)用網(wǎng)絡(luò)模式選擇Host、Bridge驱闷、Virtual Network都可以耻台,外部訪問可以設(shè)置端口映射。
集群應(yīng)用空另、多個應(yīng)用之間需要進行通信的盆耽,建議選擇Virtual Network,如果需要外部訪問服務(wù)扼菠,可以設(shè)置端口映射摄杂。
DC/OS集群使用mesos-dns進行服務(wù)解析,應(yīng)用服務(wù)名稱定義:
- 應(yīng)用名.應(yīng)用組名.marathon.mesos 獲取的是應(yīng)用容器內(nèi)部ip循榆,如果使用Host模式析恢,就是宿主機ip
- 應(yīng)用名.應(yīng)用組名.marathon.slave.mesos 獲取的是應(yīng)用的宿主機ip
存儲
DC/OS集群本地存儲
Persistent Volume,應(yīng)用在一個節(jié)點上創(chuàng)建成功秧饮,之后的創(chuàng)建映挂、重啟都只在這一個節(jié)點上。
對于需要指定特殊存儲位置的應(yīng)用(比如mysql)盗尸,Persistent Volume需要配合Host Volume使用柑船。
先將Persistent Volume掛載到容器的目錄/文件(容器根目錄相對路徑),
然后將目錄/文件通過Host Volume的形式掛載到容器數(shù)據(jù)存儲絕對路徑(比如/var/lib/mysql)泼各。
- root鞍时,一般用的是系統(tǒng)盤存儲,不建議使用
- path历恐,存儲路徑是由DC/OS管理員設(shè)置的寸癌,安全可靠专筷,建議使用
- mount,特殊應(yīng)用蒸苇,對存儲有性能要求的應(yīng)用使用
Host Volume磷蛹,將本地的目錄/文件掛載到容器。這種存儲類型下溪烤,容器可能會漂移到其他節(jié)點味咳,所以有強烈部署節(jié)點限制的應(yīng)用可以使用,或者搭配root檬嘀、path槽驶、mount使用。
- Host Volume 不光可以掛載主機本地路徑鸳兽,還可以掛載artifact下載的文件/目錄
存儲不光用于應(yīng)用數(shù)據(jù)的存儲掂铐,還用于應(yīng)用配置文件的掛載。
對于一個需要外掛配置文件來啟動的應(yīng)用揍异,部署流程是這樣的:
- 將配置文件上傳到文件服務(wù)器全陨,目錄需要打成tar.gz包。
- 應(yīng)用的配置頁面衷掷,設(shè)置artifact辱姨,下載文件/tar包的url
- 存儲配置頁面,存儲類型選Host Volume,將文件/目錄名掛載到容器內(nèi)路徑
示例一 部署artifact-store戚嗅,Virtual Network + Host Volume
服務(wù)配置
設(shè)置部署主機
網(wǎng)絡(luò)配置雨涛,內(nèi)部使用域名artifact-store.microservices.marathon.mesos訪問
掛載本地路徑,使用的宿主機絕對路徑懦胞,所有的artifact文件都需要上傳到這個宿主機路徑下
然后run service
示例二 部署bind9 應(yīng)用替久,Host Network + Host Volume
首先將bind9使用的配置文件named.conf bind9.db.tar.gz(artifact下載之后默認會解壓,我們真正使用也是解壓之后的db目錄)上傳到/artifact-store目錄
[root@dcos-cloud1 ~]# ls /artifact-store/
bind9.db.tar.gz named.conf
服務(wù)配置
設(shè)置部署主機,設(shè)置artifact下載url
網(wǎng)絡(luò)配置
掛載本地路徑医瘫,這個地方使用的是相對路徑(應(yīng)用容器的存儲根目錄)侣肄,artifact下載之后就放在應(yīng)用容器根目錄下,所以直接掛載named.conf醇份、db
然后run service
示例三 部署 test-root 應(yīng)用稼锅,Host Network + Root Volume + Host Volume
服務(wù)配置
網(wǎng)絡(luò)配置
掛載Persistent Volume默認root類型到容器根目錄下的mydata,然后將mydata掛載到容器/tmp目錄下
示例四 部署 influxdb 應(yīng)用僚纷,Host Network + Path Volume + Host Volume
DC/OS 默認的Persistent Volume類型是root矩距,修改類型,需要打開右上方的JSON EDITER怖竭。
修改persistent.type = "path"
"volumes": [
{
"persistent": {
"type": "path",
"size": 1000000,
"constraints": []
},
"mode": "RW",
"containerPath": "influxdb-data"
},
{
"containerPath": "/var/lib/influxdb",
"hostPath": "influxdb-data",
"mode": "RW"
}
],
服務(wù)配置
網(wǎng)絡(luò)配置
掛載path volume到/var/lib/influxdb锥债。
首先在頁面上選擇Persistent Volume,配置大小,掛載容器存儲根目錄下的influxdb-data哮肚,再創(chuàng)建Host Volume登夫,
將容器存儲根目錄下的influxdb-data掛載到容器內(nèi)數(shù)據(jù)存儲路徑/var/lib/influxdb。
然后打開JSON EDITER,修改persistent{ "type": "path"}
環(huán)境變量配置
然后run service