zoukankan      html  css  js  c++  java
  • Openstack之十:安装块存储服务cinder控制节点与cinder存储节点

    一、部署块存储cinder:

    官方部署文档:https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/common/get-started-block-storage.html

    OpenStack的存储组件—Cinder和Swift—让你在你的私有云里构建块存储和对象的存储系统,Openstack从Folsom开始使用Cinder替换原来的Nova-Volume服务,为Openstack云平台提供块存储服务,Cinder接口提供了一些标准功能,允许创建和附加块设备到虚拟机,如“创建卷”,“删除卷”和“附加卷”。还有更多高级的功能,支持扩展容量的能力,快照和创建虚拟机镜像克隆,主要涉及到的组件如下:

    cinder-api:接受API请求,并将其路由到“cinder-volume“执行,即请求cinder要先请求此对外API。

    cinder-volume:与块存储服务和例如“cinder-scheduler“的进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。“cinder-volume“服务响应送到块存储服务的读写请求来维持状态。它也可以和多种存储提供者在驱动架构下进行交互。

    cinder-scheduler守护进程:选择最优存储提供节点来创建卷。其与“nova-scheduler“组件类似。

    cinder-backup守护进程:“cinder-backup“服务提供任何种类备份卷到一个备份存储提供者。就像“cinder-volume“服务,它与多种存储提供者在驱动架构下进行交互。

    消息队列:在块存储的进程之间路由信息。

    二、在数据库创建用户并授权

    1、创建 cinder 数据库并授权

    [root@openstack-1 ~]# mysql
    Welcome to the MariaDB monitor.  Commands end with ; or g.
    Your MariaDB connection id is 9
    Server version: 10.3.10-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    MariaDB [(none)]> CREATE DATABASE cinder; #创建cinder数据库用户
    Query OK, 1 row affected (0.056 sec)
    
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%'   #授权并设置密码
        ->   IDENTIFIED BY 'cinder';
    Query OK, 0 rows affected (0.114 sec)
    
    MariaDB [(none)]> 
    

    2、在控制端进行测试,mysql数据库是否可以连接过去,此时可以看到可以连接:

    [root@openstack-1 ~]# mysql -ucinder -pcinder
    Welcome to the MariaDB monitor.  Commands end with ; or g.
    Your MariaDB connection id is 10
    Server version: 10.3.10-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    MariaDB [(none)]> 
    

    三、在控制端进行配置

    1、获得 admin 凭证来获取只有管理员能执行的命令的访问权限:

    $ . admin-openrc
    

    2、要创建服务证书,完成这些步骤:

    创建一个 cinder 用户:

    $ openstack user create --domain default --password-prompt cinder
    
    User Password:
    Repeat User Password:
    +---------------------+----------------------------------+
    | Field               | Value                            |
    +---------------------+----------------------------------+
    | domain_id           | default                          |
    | enabled             | True                             |
    | id                  | 9d7e33de3e1a498390353819bc7d245d |
    | name                | cinder                           |
    | options             | {}                               |
    | password_expires_at | None                             |
    +---------------------+----------------------------------+

    3、添加 admin 角色到 cinder 用户上。

    $ openstack role add --project service --user cinder admin
    

    4、创建“cinderv2”和“cinderv3”不同版本的服务

    $ openstack service create --name cinderv2 
      --description "OpenStack Block Storage" volumev2
    
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description | OpenStack Block Storage          |
    | enabled     | True                             |
    | id          | eb9fd245bdbc414695952e93f29fe3ac |
    | name        | cinderv2                         |
    | type        | volumev2                         |
    +-------------+----------------------------------+
    

     cinderv3版本的cinder服务

    $ openstack service create --name cinderv3 
      --description "OpenStack Block Storage" volumev3
    
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description | OpenStack Block Storage          |
    | enabled     | True                             |
    | id          | ab3bbbef780845a1a283490d281e7fda |
    | name        | cinderv3                         |
    | type        | volumev3                         |
    +-------------+----------------------------------+
    

    5、创建块设备存储服务的 API 入口点:

    $ openstack endpoint create --region RegionOne 
      volumev2 public http://openstack-vip.net:8776/v2/%(project_id)s  # openstack-vip.net是控制台解析VIP地址的域名
      
    $ openstack endpoint create --region RegionOne 
      volumev2 internal http://openstack-vip.net:8776/v2/%(project_id)s
      
    $ openstack endpoint create --region RegionOne 
      volumev2 admin http://openstack-vip.net:8776/v2/%(project_id)s
    
    $ openstack endpoint create --region RegionOne 
      volumev3 public http://openstack-vip.net:8776/v3/%(project_id)s
      
    $ openstack endpoint create --region RegionOne 
      volumev3 internal http://openstack-vip.net:8776/v3/%(project_id)s
    
    $ openstack endpoint create --region RegionOne 
      volumev3 admin http://openstack-vip.net:8776/v3/%(project_id)s
    

    四、在HAProxy进行配置

    由于添加了API接口,就会有新的端口8776,所以需要将端口在haproxy进行监听,通过VIP地址进行转发在控制端服务器上。

    vim  /etc/haproxy/haproxy.cfg

    listen openstack_cinder_port_8776
        bind 192.168.7.248:8776
        mode tcp
        log global
        server 192.168.7.100 192.168.7.100:8776 check inter 3000 fall 3 rise 5
        server 192.168.7.101 192.168.7.101:8776 check inter 3000 fall 3 rise 5 backup
    

    重启haproxy服务

    # systemctl restart haproxy
    

    五、在控制端安装并配置组件

    1、安装软件包

    # yum install openstack-cinder  -y

    2、编辑 /etc/cinder/cinder.conf,同时完成如下动作:

    在 [database] 部分,配置数据库访问:

    [database]
    # ...
    connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
    
    用你为块设备存储数据库选择的密码替换 CINDER_DBPASS,将controller改为本地解析VIP地址的域名(openstack-vip.net)。

    3、在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限:

    [DEFAULT]
    # ...
    transport_url = rabbit://openstack:RABBIT_PASS@controller 
    

    用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。  

    4、在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:

    [DEFAULT]
    # ...
    auth_strategy = keystone
    
    [keystone_authtoken]
    # ...
    auth_uri = http://controller:5000
    auth_url = http://controller:35357
    memcached_servers = controller:11211  #替换为VIP解析的域名或者VIP地址
    auth_type = password
    project_domain_name = default
    user_domain_name = default
    project_name = service
    username = cinder
    password = CINDER_PASS #cinder密码
    

    将 CINDER_PASS 替换为你在认证服务中为 cinder 用户选择的密码。  

    5、在 [oslo_concurrency] 部分,配置锁路径:

    [oslo_concurrency]
    # ...
    lock_path = /var/lib/cinder/tmp
    

    6、初始化块设备服务的数据库:

    # su -s /bin/sh -c "cinder-manage db sync" cinder
    

    在计算节点使用块设备存储

    1、编辑文件 /etc/nova/nova.conf 并添加如下到其中:

    [cinder]
    os_region_name = RegionOne

    在控制端进行操作:

    在重启计算节点的nova服务

     # systemctl restart libvirtd.service openstack-nova-compute.service
    

    启动块设备存储服务,并将其配置为开机自启:  

    # systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
    # systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
    

    六、在计算节点安装并配置cinder存储节点

    1、安装支持的工具包:

    安装 LVM 包:

    # yum install lvm2
    

    2、启动LVM的metadata服务并且设置该服务随系统启动:

    # systemctl enable lvm2-lvmetad.service
    # systemctl start lvm2-lvmetad.service
    

    3、创建LVM 物理卷 /dev/sdb

    # pvcreate /dev/sdb
    
    Physical volume "/dev/sdb" successfully created
    

    4、创建 LVM 卷组 cinder-volumes

    # vgcreate cinder-volumes /dev/sdb
    
    Volume group "cinder-volumes" successfully created
    

    5、编辑``/etc/lvm/lvm.conf``文件并完成下面的操作: 

    在``devices``部分,添加一个过滤器,只接受``/dev/sdb``设备,拒绝其他所有设备:

    devices {
    ...
    filter = [ "a/sdb/", "r/.*/"]
    

    安全并配置组件

    1、安装软件包:

    # yum install openstack-cinder targetcli python-keystone
    

    2、编辑 /etc/cinder/cinder.conf,同时完成如下动作:

    在 [database] 部分,配置数据库访问:

    [database]
    # ...
    connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
    

    用你为块设备存储数据库选择的密码替换 CINDER_DBPASS,controller为VIP解析的域名。

    3、在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限:

    [DEFAULT]
    # ...
    transport_url = rabbit://openstack:RABBIT_PASS@controller
    

    用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。  

    4、在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:

    [DEFAULT]
    # ...
    auth_strategy = keystone
    
    [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
    

    将 CINDER_PASS 替换为你在认证服务中为 cinder 用户选择的密码。  

    5、在``[lvm]``部分中,配置LVM后端,包括LVM驱动,``cinder-volumes``卷组 ,iSCSI 协议和适当的 iSCSI服务。如果``[lvm]``部分不存在,则创建它:

    [lvm]
    volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
    volume_group = cinder-volumes
    iscsi_protocol = iscsi
    iscsi_helper = lioadm
    

    6、在 [DEFAULT] 部分,启用 LVM 后端:

    [DEFAULT]
    # ...
    enabled_backends = lvm
    

    7、在 [DEFAULT] 区域,配置镜像服务 API 的位置:

    [DEFAULT]
    # ...
    glance_api_servers = http://controller:9292
    

    写VIP地址解析的域名就需要在cinder服务器上修改hosts配置文件,进行解析VIP地址:

    vim /etc/hosts
    
    192.168.7.248  openstack-vip.net

    8、在 [oslo_concurrency] 部分,配置锁路径:

    [oslo_concurrency]
    # ...
    lock_path = /var/lib/cinder/tmp
    

    9、启动块存储卷服务及其依赖的服务,并将其配置为随系统启动:

    # systemctl enable openstack-cinder-volume.service target.service
    # systemctl start openstack-cinder-volume.service target.service
    

      

      

      

      

      

      

      

      

     

      

      

      

      

     

      

      

      

      

     

      

     

      

      

  • 相关阅读:
    自动封箱和拆箱
    关于Java的一道内存的题目
    volatile关键字
    阶乘尾零
    Java之final的解析
    从1到n整数中1出现的次数
    最小安装雷达数量
    二叉树重建
    最短路径—Dijkstra算法
    PAT A1063——set的常见用法详解
  • 原文地址:https://www.cnblogs.com/struggle-1216/p/12168111.html
Copyright © 2011-2022 走看看