在ceph节点中执行以下语句。node
#ceph osd pool create volumes 128
在ceph节点两次执行以下语句,两次{your-openstack-server}分别填控制节点和计算节点IP。python
若是显示在控制节点和计算节点中没有ceph文件夹,则在两节点中建立对应文件夹。mysql
#ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf
控制节点上进行librbd的 Python 绑定sql
#yum install python-rbd
计算节点和控制节点进行安装 Python 绑定和客户端命令行工具数据库
#yum install ceph-common
#yum install ceph
在ceph节点为Cinder建立新用户后端
#ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes'
在ceph节点把 client.cinder的密钥环复制到控制节点,并更改全部权,{your-volume-server}和{your-cinder-volume-server}处填控制节点IP。api
#ceph auth get-or-create client.cinder | ssh {your-volume-server} sudo tee /etc/ceph/ceph.client.cinder.keyring #ssh {your-cinder-volume-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
在ceph节点执行以下语句{your-nova-compute-server}为计算节点IP。服务器
#ceph auth get-or-create client.cinder | ssh {your-nova-compute-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
在ceph节点把client.cinder用户的密钥存进libvirt。libvirt 进程从 Cinder 挂载块设备时要用它访问集群,在运行 nova-compute 的节点上建立一个密钥的临时副本。网络
{your-compute-node}为计算节点IP。dom
#ceph auth get-key client.cinder | ssh {your-compute-node} tee /etc/ceph/client.cinder.key
在计算节点上执行以下语句,把密钥加进 libvirt 、而后删除临时副本。
#uuidgen
记录下产生的数字,将下面的UUIDGEN替换为该数字,并在计算节点执行下列语句
cat > secret.xml <<EOF <secret ephemeral='no' private='no'> <uuid>UUIDGEN</uuid> <usage type='ceph'> <name>client.cinder secret</name> </usage> </secret> EOF
#sudo virsh secret-define --file secret.xml #sudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c-9293d545c337 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
执行完后,记录好上面产生的uuidgen,下面还会用到。
在控制节点完成下面的步骤以建立数据库:
用数据库链接客户端以 root 用户链接到数据库服务器:
#mysql -u root -p
建立cinde数据库
#CREATE DATABASE cinder;
配置 cinder 数据库的访问权限,下列CINDER_DBPASS用合适的密码替换。
#GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \ IDENTIFIED BY 'CINDER_DBPASS'; #GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \ IDENTIFIED BY 'CINDER_DBPASS';
退出数据库。
得到 admin 凭证来获取只有管理员能执行的命令的访问权限:
# . admin-openrc
建立服务证书:
建立一个 cinder 用户:
#openstack user create --domain default --password-prompt cinder
添加 admin 角色到 cinder 用户上。
#openstack role add --project service --user cinder admin
建立 cinder 和 cinderv2 服务实体:
#openstack service create --name cinder \ --description "OpenStack Block Storage" volume #openstack service create --name cinderv2 \ --description "OpenStack Block Storage" volumev2
建立块设备存储服务的 API 入口点:
#openstack endpoint create --region RegionOne \ volume public http://controller:8776/v1/%\(tenant_id\)s #openstack endpoint create --region RegionOne \ volume internal http://controller:8776/v1/%\(tenant_id\)s #openstack endpoint create --region RegionOne \ volume admin http://controller:8776/v1/%\(tenant_id\)s #openstack endpoint create --region RegionOne \ volumev2 public http://controller:8776/v2/%\(tenant_id\)s #openstack endpoint create --region RegionOne \ volumev2 internal http://controller:8776/v2/%\(tenant_id\)s #openstack endpoint create --region RegionOne \ volumev2 admin http://controller:8776/v2/%\(tenant_id\)s
安装软件包
# yum install openstack-cinder
#yum install openstack-cinder targetcli python-keystone
在控制节点上编辑cinder.conf。
#vi /etc/cinder/cinder.conf
添加以下内容:
注意:
1.若是你为 cinder 配置了多后端, [DEFAULT] 节中必须有 glance_api_version = 2
2.[ceph]中的rbd_secret_uuid后面对应填的刚刚记录的uuid。
[DEFAULT] transport_url = rabbit://openstack:RABBIT_PASS@controller auth_strategy = keystone my_ip = 控制节点管理网络的IP enabled_backends = ceph glance_api_servers = http://controller:9292 [database] connection = mysql+pymysql://cinder:CINDER_PASS@controller/cinder [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = cinder password = CINDER_PASS [oslo_concurrency] lock_path = /var/lib/cinder/tmp [ceph] volume_driver = cinder.volume.drivers.rbd.RBDDriver rbd_pool = volumes rbd_ceph_conf = /etc/ceph/ceph.conf rbd_flatten_volume_from_snapshot = false rbd_max_clone_depth = 5 rbd_store_chunk_size = 4 rados_connect_timeout = -1 glance_api_version = 2 rbd_user = cinder rbd_secret_uuid = a852df2b-55e1-4c1b-9fa2-61e77feaf30f
编辑/etc/nova/nova.conf 添加以下内容:
[cinder]
os_region_name = RegionOne
在控制节点重启计算API 服务:
# systemctl restart openstack-nova-api.service
启动块设备存储服务,并将其配置为开机自启:
# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
启动块存储卷服务及其依赖的服务,并将其配置为随系统启动:
# systemctl enable openstack-cinder-volume.service target.service
# systemctl start openstack-cinder-volume.service target.service
在控制节点得到 admin 凭证来获取只有管理员能执行的命令的访问权限:
# . admin-openrc
列出服务组件以验证是否每一个进程都成功启动:
# cinder service-list
而且登陆界面后能够建立卷