IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    让Glance实现多存储后端支持

    hu, xueqing发表于 2016-04-28 07:51:07
    love 0

    在OpenStack标准架构中,Ceph为作为统一存储,Nova、Cinder和Glance同时对接Ceph的统一存储。在企业客户里面,他们会有商业存储需求,通常可以通过Cinder的驱动可以实现对Ceph和商业存储的支持,这样就可以实现虚拟机同时使用Ceph和商业存储的卷服务。但是客户可能更进一步,希望Nova虚拟机也能在商业存储上使用,这就带来一个问题,Glance一直存储在Ceph上,而不能在商业存储上。我们希望更进一步,让Glance也能支持多后端。但是在实际部署中,在一个OpenStack架构中,因为冲突的问题无法部署两个Glance服务。如果把商业存储换成Ceph,这个问题同样存在。UnitedStack有云大数据&容器组PTL陈迪豪在Austin OpenStack Summit上的演讲就解答了该问题,现场演讲PPT下载。

    glance

                                          图:Austin OpenStack Summit陈迪豪topic演讲现场

    为什么Glance多后端会出现这样的多问题?

    1. 在Glase社区只实现了部分驱动,大部分商业存储都没有实现对应的驱动;
    2. multi-location特性的限制;
    3. 虽然Glance实现了multi-location,并且有不同策略来获取镜像路径,但是目前提供的仅有的两种策略,都不能满足的企业需求;
    4. Glance在配置Ceph后端的时候,有天然缺陷。

    正是因为这些问题的存在,所以需要来讨论如何解决?分享主要分为四个方面:介绍multi-location特性和限制、multi-location的最新策略、对Nova和Cinder的改进、对连接多Ceph集群的改进。

    Glance支持multi-location功能,也就是同一个Image可以有多个location地址,Nova会按顺序读取这些location直到找到可用的镜像。例如一个Glance镜像可以写一个RBD的location,写一个File的location。但是这项特性不能解决一个Glance对接多个Ceph的问题,因为Glance同时只能连一个Ceph,不能“直接”添加另一个的Ceph的location到镜像中。

    目前multi-location的缺陷

    1. 不能关于指定location去创新虚拟器。
    2. 不能指定Location去创建一个启动卷。
    3. 不同的Ceph集群,使用的是相同的RBD Store。
    4. 不能配置多个Ceph存储后端。

    社区目前提供了两种调度策略,Store Type Strategy和Location Order Strategy,但是都不能满足我们的需求。UnitedStack有云实现了一个第三种调度策略,名字是“specified type strategy”,即就“指定类型策略”,根据指定的存储类型,返回指定的location地址。

    此外,在对于Nova和Cinder的进行了改进,方法相似。通过对客户端和Server端的改写,当用户使用Nova去基于image启动一个虚拟机的时候,不仅可以指定Images Storage,还可以指定Images Store的相应的类型,这样就可以达到动态选择Glance镜像的存储路径。

    最重要的问题是对连接多个Cpeh集群的修改,一般的Glance连接Ceph,只能配置一个Ceph集群。通过对配置文件的改写,可以把配置的集群变成多个。

    以两个后端作为例子,多个数量类似,步骤如下:

    首先,添加Ceph后端,然后编辑 Glance 配置文件。

    为 Ceph1和 Ceph2添加新的sections,这看起来非常像Cinder的配置。之后需要将 ceph.conf 改为Ceph2,这就有了两个后端。保持和使用devstack session,然后进入 glance-api的重启进程。

    下一步是上传 images到Ceph中。

    用glance image-create来上传 images到Ceph1类型,完成之后,用第一个类似命令,上传到Ceph2类型,而这些 image 具有不同的Ceph 集群ID,也就是说,他们存储在不同的集群当中。



沪ICP备19023445号-2号
友情链接