openstack 管理二十二 - cinder 连接多个存储 backend

cinder backend

使用 openstack 集群 cinder 服务存储用户数据, 提供数据安全保障
利用 cinder 连接存储集群用于 openstack 云盘
cinder 需要连接一个或多个存储 backend [一个鸡蛋不要老放到一个篮子]
cinder 后端可以连接多种的 backend, 如: nfs, glusterfs, cinder 等等

历史

cinder 与 GlusterFS

之前曾经使用 openstack 连接 GlusterFS 用于 cinder 后端存储
GlusterFS 经常会出现需要手动维护问题,  维护过程中严重占用网络带宽
因此后期把 GlusterFS 中数据迁移至 Ceph 中 (手动)

cinder 与独立 Ceph

弃用 GlusterFS 之后, 在一段时间内(24 months) 一直在使用 Ceph 集群
Ceph 总体上维护成本不高, 只会经常出现底层磁盘故障需要更换硬盘问题
Ceph 空间使用率不高, 我们使用 3 replication, 因此只可以使用默认空间 1/3
另外, Ceph 设定空间使用率在 80% 时触发报警, 那么实际可用空间为总容量的 33% * 80% = 26% 左右
当 Ceph 磁盘空间使用率在 100% 时, 将会出现灾难,  任何操作(增删改) 都无法操作, 必须通过扩容解决
后使用 Ceph 时, 也出现过 Ceph 集群扩容时间, 通过添加物理存储实现, 过程相当迂回曲折, 动魄惊心
ceph 扩容的确不是一个十分好的选择

cinder 与多 ceph backend

总结之间的使用习惯与经验, 在之前 Ceph 集群容量用光之前, 决定再添加一个新的 ceph 集群, 而不直接对其进行扩容

环境准备

ceph 集群
openstack cinder 配置

ceph 集群

集群创建

利用 kolla-ansible + docker 容器创建创建 ceph 集群(略)
在第一个 ceph 集群创建池 volumes
在第二个 ceph 集群创建池 dbalogs

创建用户

openstack cinder 在连接 ceph 时候, 需要指定一个用户

当前在第一个 ceph 集群中创建用户 cinder , 允许访问 volumes 池

ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes'

当前在第二个 ceph 集群中创建用户 cinder , 允许访问 dblogs 池

ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=dbalogs'

openstack 集群

cinder 配置

针对第一个 ceph 集群的连接 (/etc/cinder/cinder.conf)

[CEPH_SATA]
glance_api_version=2
volume_backend_name=ceph_sata
rbd_ceph_conf=/etc/ceph/ceph.conf  (复制第一个 ceph 的配置文件到这里)
rbd_user=cinder                    (参考之前创建的 cinder 用户)
rbd_flatten_volume_from_snapshot=False
rados_connect_timeout=-1
rbd_max_clone_depth=5
volume_driver=cinder.volume.drivers.rbd.RBDDriver
rbd_store_chunk_size=4
rbd_secret_uuid=dc4f91c1-8792-4948-b68f-2fcea75f53b9  (第一个 ceph 集群的 uuid)
rbd_pool=volumes           (第一个 ceph 集群的池命名)
host=hh-yun-cinder.vclound.com   (当前主机命名, 用于 cinder-api 连接时候使用)

针对第二个 ceph 集群的连接 (/etc/cinder/cinder.conf)

[CEPH_SSD]
glance_api_version=2
volume_backend_name=ceph_ssd
rbd_ceph_conf=/etc/ceph/ceph2.conf  (复制第二个 ceph 的配置文件到这里)
rbd_user=cinder                    (参考之前创建的 cinder 用户)
rbd_flatten_volume_from_snapshot=False
rados_connect_timeout=-1
rbd_max_clone_depth=5
volume_driver=cinder.volume.drivers.rbd.RBDDriver
rbd_store_chunk_size=4
rbd_secret_uuid=4bf07d3e-a289-456d-9bd9-5a89832b413b  (第二个 ceph 集群的 uuid)
rbd_pool=dbalogs           (第二个 ceph 集群的池命名)
host=hh-yun-cinder.vclound.com   (当前主机命名, 用于 cinder-api 连接时候使用)

定义 cinder 使用两个 backend

enabled_backends=CEPH_SATA, CEPH_SSD

cinder 命令行验证

列出可用的 volume-type

[root@hh-yun-puppet-129021 ~(keystone_admin)]# cinder type-list
+--------------------------------------+----------------+
|                  ID                  |      Name      |
+--------------------------------------+----------------+
| 45fdd68a-ca0f-453c-bd10-17e826a1105e |   CEPH-SATA    |
| 919dc90f-c559-44c9-bc68-2d1dfbe3cf8a |   CEPH-SSD     |
+--------------------------------------+----------------+

列出详细信息

[root@hh-yun-puppet-129021 ~(keystone_admin)]# cinder extra-specs-list
+--------------------------------------+----------------+----------------------------------------------------+
|                  ID                  |      Name      |                    extra_specs                     |
+--------------------------------------+----------------+----------------------------------------------------+
| 45fdd68a-ca0f-453c-bd10-17e826a1105e |   CEPH-SATA    |       {u'volume_backend_name': u'ceph_sata'}       |
| 919dc90f-c559-44c9-bc68-2d1dfbe3cf8a |   CEPH-SSD     | {u'volume_backend_name': u'ceph_ssd'}              |
+--------------------------------------+----------------+----------------------------------------------------+

创建 cinder volume 方法, 通过自定 volume-type 定义在那个 ceph 集群中创建卷

[root@hh-yun-puppet-129021 ~(keystone_admin)]# cinder create --display-name terry-test --volume-type CEPH-SATA 10
+---------------------+--------------------------------------+
|       Property      |                Value                 |
+---------------------+--------------------------------------+
|     attachments     |                  []                  |
|  availability_zone  |                 nova                 |
|       bootable      |                false                 |
|      created_at     |      2017-01-20T07:44:33.371970      |
| display_description |                 None                 |
|     display_name    |              terry-test              |
|      encrypted      |                False                 |
|          id         | fbf5dc68-f671-49d1-a32f-7342e6609048 |
|       metadata      |                  {}                  |
|         size        |                  10                  |
|     snapshot_id     |                 None                 |
|     source_volid    |                 None                 |
|        status       |               creating               |
|       user_id       |   226e71f1c1aa4bae85485d1d17b6f0ae   |
|     volume_type     |              CEPH-SATA               |
+---------------------+--------------------------------------+

显示 volume

[root@hh-yun-puppet-129021 ~(keystone_admin)]# cinder show fbf5dc68-f671-49d1-a32f-7342e6609048
+--------------------------------+--------------------------------------+
|            Property            |                Value                 |
+--------------------------------+--------------------------------------+
|          attachments           |                  []                  |
|       availability_zone        |                 nova                 |
|            bootable            |                false                 |
|           created_at           |      2017-01-20T07:44:33.000000      |
|      display_description       |                 None                 |
|          display_name          |              terry-test              |
|           encrypted            |                False                 |
|               id               | fbf5dc68-f671-49d1-a32f-7342e6609048 |
|            metadata            |                  {}                  |
|     os-vol-host-attr:host      | hh-yun-cinder.vclound.com@CEPH_SATA  |
| os-vol-mig-status-attr:migstat |                 None                 |
| os-vol-mig-status-attr:name_id |                 None                 |
|  os-vol-tenant-attr:tenant_id  |   bb0b51d166254dc99bc7462c0ac002ff   |
|              size              |                  10                  |
|          snapshot_id           |                 None                 |
|          source_volid          |                 None                 |
|             status             |              available               |
|            user_id             |   226e71f1c1aa4bae85485d1d17b6f0ae   |
|          volume_type           |              CEPH-SATA               |
+--------------------------------+--------------------------------------+
上一篇:.Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈


下一篇:《OpenStack云计算实战手册(第2版)》一2.6 注册远程存储的镜像