挂载磁盘资源
使用 Mesos 挂载存储资源
当 DC/OS 代理节点启动时,它会扫描与模式 /dcos/volume<N>
(其中 <N>
是个整数)匹配的卷。然后,代理节点会自动配置,以向其他服务提供这些磁盘资源。
使用回送设备示例
在此示例中,磁盘资源在运行的群集上安装后被添加到 DC/OS 代理节点中。这些步骤可以在安装前使用,而无需停止服务或清除代理节点序状态。
警告:这将终止节点上任何运行的任务或服务。
- 通过 SSH 连接到群集中的代理节点。
-
检查当前代理节点的资源状态。
请注意,
/dcos/volume0
尚无引用。 -
停止代理节点。
-
在专用代理节点上:
sudo systemctl stop dcos-mesos-slave.service
-
在代理节点上:
sudo systemctl stop dcos-mesos-slave-public.service
-
在专用代理节点上:
-
清除代理节点状态。
- 使用以下命令缓存卷挂载发现资源状态: DC/OS 将稍后检查此文件,以便为代理生成新的资源状态。
-
使用以下命令删除代理节点检查点状态:
sudo rm -f /var/lib/mesos/slave/meta/slaves/latest
-
创建 200 MB 回送设备。
这仅适用于测试目的。挂载卷必须至少有 200 MB 可用空间。每个卷 100 MB 由 DC/OS 保留,不可用于其他服务。sudo mkdir -p /dcos/volume0
sudo dd if=/dev/zero of=/root/volume0.img bs=1M count=200
sudo losetup /dev/loop0 /root/volume0.img
sudo mkfs -t ext4 /dev/loop0
sudo losetup -d /dev/loop0
-
创建
fstab
条目并挂载。 确保卷在启动时自动挂载。也可以通过systemd
挂载单元完成类似操作。 -
重新启动。
sudo reboot
-
通过 SSH 连接到到代理节点并查看
journald
日志以获取对新卷/dcos/volume0
的引用。
特别是,应该有代理节点启动的条目和新的 volume0journalctl -b | grep '/dcos/volume0'
Mount
磁盘资源:
在 Marathon 应用程序中使用挂载卷示例
{
"id": "/mount-test-svc1",
"instances": 1,
"cpus": 0.1,
"mem": 128,
"networks": [
{
}
],
"disk": 0,
"gpus": 0,
"backoffFactor": 1.15,
"maxLaunchDelaySeconds": 300,
"container": {
"type": "DOCKER",
"volumes": [
{
"persistent": {
"size": 25,
"type": "mount"
},
"mode": "RW",
"containerPath": "volume0"
}
],
"docker": {
"image": "nginx",
"privileged": false,
"forcePullImage": false
},
"portMappings": [
{
"containerPort": 80,
"hostPort": 0,
"servicePort": 10101,
"protocol": "tcp",
"name": "httpport",
"labels": {
"VIP_0": "/mount-test-svc1:80"
}
},
"healthChecks": [
{
"gracePeriodSeconds": 300,
"intervalSeconds": 60,
"timeoutSeconds": 20,
"maxConsecutiveFailures": 3,
"portIndex": 0,
"path": "/",
"protocol": "MESOS_HTTP",
"delaySeconds": 15
}
],
"upgradeStrategy": {
"minimumHealthCapacity": 0.5,
"maximumOverCapacity": 0
},
"unreachableStrategy": "disabled",
"killSelection": "YOUNGEST_FIRST",
"requirePorts": true,
"labels": {
"HAPROXY_GROUP": "external"
}
}
在运行此服务后,导航到 Web 界面中的 Services > Volumes 选项卡:
图 1. Services > Volumes 选项卡
云提供程序资源
云提供程序存储服务通常用于支持 DC/OS 挂载卷。在设计生产 DC/OS 部署时,此参考材料非常有用:
最佳实践
- 将
Mount
磁盘资源与具有严格存储要求的有状态服务一起使用。 - 根据有状态服务的存储需求和要求,仔细考虑文件系统类型、存储介质(网络链接、SSD 等)和卷特征(RAID 级别、大小调整等)。
- 使用 Mesos 属性标记 Mesos 代理节点,该属性反映代理节点磁盘挂载的特征,例如, IOPS200、RAID1 等
- 使用 Mesos 属性限制将有状态服务与存储代理节点相关联。
- 考虑将要求严苛的存储服务隔离到专用存储代理节点中,因为文件系统页面缓存是主机级共享资源。
- 确保使用
Mount
磁盘资源的所有服务都旨在处理一个或多个Mount
磁盘资源的永久丢失。服务仍然负责管理数据复制和保留,从故障代理节点进行正常恢复以及关键服务状态的备份。