第七步(2):安装openstack-cinder服务-控制节点
简介
OpenStack 的存储组件—Cinder 和 Swift—让你在你的私有云里构建块存储和对象的存储系统,Openstack 从Folsom 开始使用 Cinder 替换原来的 Nova-Volume 服务,为 Openstack 云平台提供块存储服务,Cinder 接口提供了一些标准功能,允许创建和附加块设备到虚拟机,如“创建卷”,“删除卷”和“附加卷”。还有更多高级的功能,支持扩展容量的能力,快照和创建虚拟机镜像克隆,主要涉及到的组件如下:
cinder-api:接受 API 请求,并将其路由到“cinder-volume“执行,即请求 cinder 要先请求此对外 API。cinder-api的监听端口为8776;
cinder-volume:与块存储服务和例如“cinder-scheduler“的进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。“cinder-volume“服务响应送到块存储服务的读写请求来维持状态。它也可以和多种存储提供者在驱动架构下进行交互。由nova申请镜像、IP、卷分配给虚拟机,nova服务会通过cinder-api给虚拟机申请卷;cinder volum不负责数据存储,它只是一个接口;
通过访问cinder-api,给虚拟机分配存储卷,cinder-scheduler会选择一个可用的存储节点进行调度,api会把创建卷的请求发送到消息队列中,由存储节点上的cinder-volume服务监听消息队列,所调度的存储节点监听到消息后创建卷。
cinder-scheduler 守护进程:选择最优存储提供节点来创建卷。其与“nova-scheduler“组件类似。
cinder-backup 守护进程:“cinder-backup“服务提供任何种类备份卷到一个备份存储提供者。就像“cinder-volume“服务,它与多种存储提供者在驱动架构下进行交互。如果想备份卷中的数据,则会调用cinder-backup把数据备份到指定的存储上;第三方存储必须兼容openstack-cinder接口,才能用于在cinder服务中进行数据存储和卷管理,如卷的拉伸(存储驱动需要支持拉伸)
消息队列:在块存储的进程之间路由信息。
##
cinder相当于就是一个远端磁盘,类似于阿里云的云盘;当虚拟机故障时,可以把虚拟机的云盘卸载,把云盘挂载到新的虚拟机进行使用,这样就不会造成数据的丢失
部署cinder-controller
https://docs.openstack.org/cinder/train/install/cinder-controller-install-rdo.html #部署参考
mysql服务器
1、CREATE DATABASE cinder; #创建数据库
2、GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder123';
#授权用户
haproxy服务器
1、vim /etc/haproxy/haproxy.cfg
listen openstack-cinder-8776
mode tcp
bind 172.31.7.248:8776
server 172.31.7.101 172.31.7.101:8776 check inter 3s fall 3 rise 5
server 172.31.7.102 172.31.7.102:8776 check inter 3s fall 3 rise 5
2、systemctl reload haproxy
controller节点
1、source admin-openrc.sh #导入admin环境变量
2、openstack user create --domain default --password-prompt cinder #创建cinder用户
3、openstack role add --project service --user cinder admin
#把cinder用户添加到service项目,拥有admin权限
4、openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3
#cinder有v2和v3两个并存版本的API,所以需要创建两个版本的service实例
5、openstack endpoint create --region RegionOne volumev2 public http://openstack-vip.linux.local:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 internal http://openstack-vip.linux.local:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 admin http://openstack-vip.linux.local:8776/v2/%\(project_id\)s
#给cinder-api-v2版本的服务注册endpoint
6、openstack endpoint create --region RegionOne volumev3 public http://openstack-vip.linux.local:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 internal http://openstack-vip.linux.local:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 admin http://openstack-vip.linux.local:8776/v3/%\(project_id\)s
#给cinder-api-v3版本的服务注册endpoint;每个api版本的服务都有 3 个网络
7、openstack endpoint list #查看endpoint是否注册成功
8、yum install openstack-cinder -y
9、vim /etc/cinder/cinder.conf
[database] #配置数据库连接
connection = mysql+pymysql://cinder:cinder123@openstack-vip.linux.local/cinder
[DEFAULT]
transport_url = rabbit://openstack:openstack123@openstack-vip.linux.local #配置rabbitmq连接
auth_strategy = keystone #使用keystone做认证
my_ip = 172.31.7.102 #myip需要指定当前controller地址
[keystone_authtoken] #配置keystone认证信息
www_authenticate_uri = http://openstack-vip.linux.local:5000 #keystone地址
auth_url = http://openstack-vip.linux.local:5000
memcached_servers = openstack-vip.linux.local:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder #指定通过cinder账号到keystone做认证
password = cinder
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp #配置锁路径
10、su -s /bin/sh -c "cinder-manage db sync" cinder #初始化cinder数据库
11、到mysql中cinder库中是否能够查看到初始化的表结构
12、vim /etc/nova/nova.conf
[cinder]
os_region_name = RegionOne #告诉nova到RegionOne这个区域中调用cinder
13、systemctl restart openstack-nova-api.service
14、 systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
15、systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
16、tail -f /var/log/cinder/*.log #日志中不能有任何报错
17、curl 172.31.7.248:8776 #查看访问cinder-api是否能够有数据返回
测试
https://docs.openstack.org/cinder/train/install/cinder-verify.html #测试参考
1、openstack volume service list #查看卷服务注册情况