配置 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 就不再这里一一解释了。如果你不熟悉这个配置,请看官方文档。