如何使用一个PaaS集群,其实就是如何使用它的网络、存储,这两点关系着应用的部署。
DC/OS集群中,网络分为Host、Bridge、Virtual Network。
应用的本地存储是通过挂载的形式来实现的,挂载分为Persistent Volume和Host Volume。
而Persistent Volume又分为root、path、mount类型,Host Volume相当于docker volume mount。详细介绍可见DC/OS-local-persistent-volumes.
网络
普通应用网络模式选择Host、Bridge、Virtual Network都可以,外部访问可以设置端口映射。
集群应用、多个应用之间需要进行通信的,建议选择Virtual Network,如果需要外部访问服务,可以设置端口映射。
DC/OS集群使用mesos-dns进行服务解析,应用服务名称定义:
- 应用名.应用组名.marathon.mesos 获取的是应用容器内部ip,如果使用Host模式,就是宿主机ip
- 应用名.应用组名.marathon.slave.mesos 获取的是应用的宿主机ip
存储
DC/OS集群本地存储
Persistent Volume,应用在一个节点上创建成功,之后的创建、重启都只在这一个节点上。
对于需要指定特殊存储位置的应用(比如mysql),Persistent Volume需要配合Host Volume使用。
先将Persistent Volume挂载到容器的目录/文件(容器根目录相对路径),
然后将目录/文件通过Host Volume的形式挂载到容器数据存储绝对路径(比如/var/lib/mysql)。
- root,一般用的是系统盘存储,不建议使用
- path,存储路径是由DC/OS管理员设置的,安全可靠,建议使用
- mount,特殊应用,对存储有性能要求的应用使用
Host Volume,将本地的目录/文件挂载到容器。这种存储类型下,容器可能会漂移到其他节点,所以有强烈部署节点限制的应用可以使用,或者搭配root、path、mount使用。
- Host Volume 不光可以挂载主机本地路径,还可以挂载artifact下载的文件/目录
存储不光用于应用数据的存储,还用于应用配置文件的挂载。
对于一个需要外挂配置文件来启动的应用,部署流程是这样的:
- 将配置文件上传到文件服务器,目录需要打成tar.gz包。
- 应用的配置页面,设置artifact,下载文件/tar包的url
- 存储配置页面,存储类型选Host Volume,将文件/目录名挂载到容器内路径
示例一 部署artifact-store,Virtual Network + Host Volume
服务配置
设置部署主机
网络配置,内部使用域名artifact-store.microservices.marathon.mesos访问
挂载本地路径,使用的宿主机绝对路径,所有的artifact文件都需要上传到这个宿主机路径下
然后run service
示例二 部署bind9 应用,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
服务配置
设置部署主机,设置artifact下载url
网络配置
挂载本地路径,这个地方使用的是相对路径(应用容器的存储根目录),artifact下载之后就放在应用容器根目录下,所以直接挂载named.conf、db
然后run service
示例三 部署 test-root 应用,Host Network + Root Volume + Host Volume
服务配置
网络配置
挂载Persistent Volume默认root类型到容器根目录下的mydata,然后将mydata挂载到容器/tmp目录下
示例四 部署 influxdb 应用,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"
}
],
服务配置
网络配置
挂载path volume到/var/lib/influxdb。
首先在页面上选择Persistent Volume,配置大小,挂载容器存储根目录下的influxdb-data,再创建Host Volume,
将容器存储根目录下的influxdb-data挂载到容器内数据存储路径/var/lib/influxdb。
然后打开JSON EDITER,修改persistent{ "type": "path"}
环境变量配置
然后run service
网友评论