在一个 Hypervisor 上配置多个 Ceph 后端

2021-09-24 14:27:52 浏览数 (1)

配置 Ceph

首先我们需要准备 Ceph 集群,这个需要创建两个不同的池:

代码语言:javascript复制
$ ceph osd pool create vms 128
$ ceph osd pool create vms2 128

最后创建一个密钥,可以访问两个池:

代码语言:javascript复制
$ ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rwx pool=vms2, allow rx pool=images'

III. 配置 OpenStack Nova

III.1. Nova.conf

因为我们需要使用主机聚集我们需要的特定调度器过滤器,所以使用以下方法配置你的 Nova 调度器:

代码语言:javascript复制
scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,AggregateInstanceExtraSpecsFilter

现在我们使用两个 Nova 配置文件。同一个 hypervisor 上运行两个不同 Nova 实例的唯一方式是使用不同的 host 值。所以这两个不会指向一个真实节点,但是不止一个逻辑条目。但是这两个需要通过 DNS 实例或者 OpenStack controllers 上的/etc/hosts文件知道彼此。

第一个 nova-compute 进程会包括 nova-ceph1.conf:

代码语言:javascript复制
[DEFAULT]
host = compute-ceph1

[libvirt]
images_rbd_ceph_conf = /etc/ceph/ceph.conf
images_rbd_pool = vms
images_type = rbd

第一个 nova-compute 进程会包括 nova-ceph2.conf:

代码语言:javascript复制
[DEFAULT]
host = compute-ceph2

[libvirt]
images_rbd_ceph_conf = /etc/ceph/ceph.conf
images_rbd_pool = vms2
images_type = rbd

现在你需要运行你的 nova 进程:

代码语言:javascript复制
$ nova-compute --config-file /etc/nova/nova-ceph1.conf  --config-file /etc/nova/nova-ceph2.conf

如果你使用 systemd,你可以使用以下单元文件:

代码语言:javascript复制
[Unit]
Description=OpenStack Nova Compute Server
After=syslog.target network.target

[Service]
Environment=LIBGUESTFS_ATTACH_METHOD=appliance
Type=notify
Restart=always
User=nova
ExecStart=/usr/bin/nova-compute --config-file /etc/nova/nova-ceph1.conf  --config-file /etc/nova/nova-ceph2.conf

[Install]
WantedBy=multi-user.target

验证可行:

代码语言:javascript复制
$ nova service-list
 ---- ---------------- --------------- ---------- --------- ------- ---------------------------- ----------------- 
| Id | Binary         | Host          | Zone     | Status  | State | Updated_at                 | Disabled Reason |
 ---- ---------------- --------------- ---------- --------- ------- ---------------------------- ----------------- 
| 1  | nova-conductor | deventer      | internal | enabled | up    | 2015-09-14T09:55:09.000000 | -               |
| 2  | nova-cert      | deventer      | internal | enabled | up    | 2015-09-14T09:55:18.000000 | -               |
| 3  | nova-network   | deventer      | internal | enabled | up    | 2015-09-14T09:55:11.000000 | -               |
| 4  | nova-scheduler | deventer      | internal | enabled | up    | 2015-09-14T09:55:16.000000 | -               |
| 6  | nova-compute   | compute-ceph1 | nova     | enabled | up    | 2015-09-14T09:55:12.000000 | -               |
| 7  | nova-compute   | compute-ceph2 | nova     | enabled | up    | 2015-09-14T09:55:17.000000 | -               |
 ---- ---------------- --------------- ---------- --------- ------- ---------------------------- ----------------- 

快速的跳过一些 Nova 在 Ceph 后端的配置,所以类似 libvirt secret 就不再这里一一解释了。如果你不熟悉这个配置,请看官方文档。

0 人点赞