• 第七步(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  #查看卷服务注册情况
    
  • 相关阅读:
    【Docker 命令】- top命令
    笛卡尔的情书
    thinkphp5.0 中使用第三方无命名空间的类库
    配置thinkphp3.2 404页面
    svn取消文件夹关联的方法(svn取消关联)
    wamp php.ini 配置的坑
    meta标签中的http-equiv属性使用介绍
    META http-equiv="refresh" 实现网页自动跳转
    关于onclick的执行原理
    redis启动出错Creating Server TCP listening socket 127.0.0.1:6379: bind: No error
  • 原文地址:https://www.cnblogs.com/dongzhanyi123/p/13299930.html
Copyright © 2020-2023  润新知