1.创建存储池
在ceph节点中执行如下语句。
- #ceph osd pool create volumes 128
2.配置OPENSTACK 的 CEPH 客户端
在ceph节点两次执行如下语句,两次{your-openstack-server}分别填控制节点和计算节点IP。
如果显示在控制节点和计算节点中没有ceph文件夹,则在两节点中创建对应文件夹。
- #ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf
3.安装CEPH 客户端软件包
控制节点上进行librbd的 Python 绑定
- #yum install python - rbd
计算节点和控制节点进行安装 Python 绑定和客户端命令行工具
- #yum install ceph - common
- #yum install ceph
4.配置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。
- #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。
- #ceph auth get-key client.cinder | ssh {your-compute-node} tee 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,下面还会用到。
5.安装并配置控制节点
5.1先决条件
在控制节点完成下面的步骤以创建数据库:
用数据库连接客户端以 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
5.2安装并配置组件
安装软件包
- #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]
- rpc_backend = rabbit
- 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
- [oslo_messaging_rabbit]
- rabbit_host = controller
- rabbit_userid = openstack
- rabbit_password = CINDER_PASS
- [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
6.重启OPENSTACK
在控制节点重启计算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
7.验证
在控制节点获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
- #.admin - openrc
列出服务组件以验证是否每个进程都成功启动:
- #cinder service - list
并且登录界面后可以创建卷