ceph rbd与docker卷

时间:2017-03-16 15:11:28

标签: docker docker-volume ceph

我刚刚在两个不同的服务器

中初始化了一个 ceph 实例
cluster 241b5d19-15f5-48be-b98c-285239d70038
 health HEALTH_WARN
        64 pgs degraded
        64 pgs stuck degraded
        64 pgs stuck unclean
        64 pgs stuck undersized
        64 pgs undersized
 monmap e3: 2 mons at {serv1=10.231.69.9:6789/0,serv2=10.231.69.34:6789/0}
        election epoch 6, quorum 0,1 serv1,serv2
    mgr no daemons active
 osdmap e10: 2 osds: 2 up, 2 in
        flags sortbitwise,require_jewel_osds,require_kraken_osds
  pgmap v22: 64 pgs, 1 pools, 0 bytes data, 0 objects
        68292 kB used, 1861 GB / 1861 GB avail
              64 active+undersized+degraded

仅包含monosd(我未设置mdsrgwCephFS

我会使用rbd为容器卷创建持久共享存储,但我真的很困惑如何在docker中插入我的osd

我看到一些 rbd docker插件存在:

  1. this library
  2. https://github.com/yp-engineering/rbd-docker-plugin
  3. https://github.com/AcalephStorage/docker-volume-ceph-rbd
  4. 但似乎没有一个与最新的docker版本或至少>= 1.13兼容。

    因此,我问自己如何实现我想要的目标,我想到了一些解决方案,但我真的不确定哪种解决方案最好(或者即使可行)。

    1. 使用CephFS +标准泊坞窗文件系统安装量
    2. 使用rexray(不再维护flocker
    3. 安装 Ceph对象网关S3 并使用现有的docker S3插件
    4. 其他?
    5. 但是1.解决方案似乎不够优雅,并且在更大的环境(超过2台服务器)中更难管理。

      然而2.解决方案似乎是一个很好的起点,但任何人都有反馈?

2 个答案:

答案 0 :(得分:1)

  1. 您可以使用RBD卷的v2插件扩展Docker Engine。

Docker volume plugin for RBD与Docker Engine v2插件系统一起使用。 (我们将其用于Swarm集群)

这是自述文件的摘录:

安装插件:

docker plugin install wetopi/rbd \
  --alias=wetopi/rbd \
  LOG_LEVEL=1 \
  RBD_CONF_POOL="ssd" \
  RBD_CONF_CLUSTER=ceph \
  RBD_CONF_KEYRING_USER=client.admin

创建一个卷:

docker volume create -d wetopi/rbd -o size=206 my_rbd_volume

docker volume ls
DRIVER              VOLUME NAME
local               069d59c79366294d07b9102dde97807aeaae49dc26bb9b79dd5b983f7041d069
local               11db1fa5ba70752101be90a80ee48f0282a22a3c8020c1042219ed1ed5cb0557
local               2d1f2a8fac147b7e7a6b95ca227eba2ff859325210c7280ccb73fd5beda6e67a
wetopi/rbd          my_rbd_volume

运行具有rbd卷的容器:

docker run -it -v my_rbd_volume:/data --volume-driver=wetopi/rbd busybox sh

答案 1 :(得分:1)

ceph -s的输出中可以看出,您似乎创建了一个ceph集群,其中包含2个节点,每个节点具有一个osd。默认情况下,ceph使用的大小(复制的nr)为3。这是建议的值。您可以将大小更改为2,将最小大小更改为1,,但是除了作为ceph的游乐场之外,您可能会疯狂地将此设置用于其他任何用途。

至少应在相同配置下的至少3个节点上运行 Ceph 。相同的内容包括:CPU,RAM,OSD计数(每个CPU内核一个OSD)。 对于中等流量,也可以将mons放在这三个节点上。强烈建议10GBit节点互连。