安装并配置一个存储节点

安装并配置一个存储节点

这个部分描述怎样为块存储服务安装并配置存储节点。为简单起见,这里配置一个有一个空的本地块存储设备的存储节点。这个向导用的是 /dev/sdb,但是你可以为你特定的节点中替换成不同的值。

该服务在这个设备上使用 LVM 提供逻辑卷,并 iSCSI 协议提供给实例使用。您可以根据这些小的修改指导,添加额外的存储节点来增加您的环境规模。

前提条件

在你安装和配置块存储服务之前,你必须准备好存储设备。

注解

在存储节点实施这些步骤。

  1. 安装支持的工具包:

    • 安装 LVM 包:

      # yum install lvm2
      
    • 启动LVM的metadata服务并且设置该服务随系统启动:

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

    注解

    一些发行版默认包含了LVM。

  2. 创建LVM 物理卷 /dev/sdb

    # pvcreate /dev/sdb
    Physical volume "/dev/sdb" successfully created
    
  3. 创建 LVM 卷组 cinder-volumes

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

    块存储服务会在这个卷组中创建逻辑卷。

  4. 只有实例可以访问块存储卷组。不过,底层的操作系统管理这些设备并将其与卷关联。默认情况下,LVM卷扫描工具会扫描``/dev`` 目录,查找包含卷的块存储设备。如果项目在他们的卷上使用LVM,扫描工具检测到这些卷时会尝试缓存它们,可能会在底层操作系统和项目卷上产生各种问题。您必须重新配置LVM,让它只扫描包含``cinder-volume``卷组的设备。编辑``/etc/lvm/lvm.conf``文件并完成下面的操作:

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

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

      每个过滤器组中的元素都以``a``开头,即为 accept,或以 r 开头,即为**reject**,并且包括一个设备名称的正则表达式规则。过滤器组必须以``r/.*/``结束,过滤所有保留设备。您可以使用 :命令:`vgs -vvvv` 来测试过滤器。

      警告

      如果您的存储节点在操作系统磁盘上使用了 LVM,您还必需添加相关的设备到过滤器中。例如,如果 /dev/sda 设备包含操作系统:

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

      类似地,如果您的计算节点在操作系统磁盘上使用了 LVM,您也必需修改这些节点上 /etc/lvm/lvm.conf 文件中的过滤器,将操作系统磁盘包含到过滤器中。例如,如果``/dev/sda`` 设备包含操作系统:

      filter = [ "a/sda/", "r/.*/"]
      

安全并配置组件

  1. 安装软件包:

    # yum install openstack-cinder targetcli python-oslo-policy
    
  1. 编辑 /etc/cinder/cinder.conf,同时完成如下操作:

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

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

      用你为块设备存储数据库选择的密码替换 CINDER_DBPASS

    • 在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:

      [DEFAULT]
      ...
      rpc_backend = rabbit
      
      [oslo_messaging_rabbit]
      ...
      rabbit_host = controller
      rabbit_userid = openstack
      rabbit_password = RABBIT_PASS
      

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

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

      [DEFAULT]
      ...
      auth_strategy = keystone
      
      [keystone_authtoken]
      ...
      auth_uri = http://controller:5000
      auth_url = http://controller:35357
      auth_plugin = password
      project_domain_id = default
      user_domain_id = default
      project_name = service
      username = cinder
      password = CINDER_PASS
      

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

      注解

      [keystone_authtoken] 中注释或者删除其他选项。

    • [DEFAULT] 部分,配置 my_ip 选项:

      [DEFAULT]
      ...
      my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
      

      将其中的``MANAGEMENT_INTERFACE_IP_ADDRESS``替换为存储节点上的管理网络接口的IP 地址,第一台节点 10.0.0.41 ,正如 :ref:`example architecture <overview-example-architectures>`中第一个节点所示。

    • 在``[lvm]``部分,配置LVM后端以LVM驱动结束,卷组``cinder-volumes`` ,iSCSI 协议和正确的 iSCSI服务:

      [lvm]
      ...
      volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
      volume_group = cinder-volumes
      iscsi_protocol = iscsi
      iscsi_helper = lioadm
      
    • [DEFAULT] 部分,启用 LVM 后端:

      [DEFAULT]
      ...
      enabled_backends = lvm
      

      注解

      后端名字是任意的。比如,本教程使用驱动的名字作为后端的名字。

    • [DEFAULT] 部分,配置镜像服务的位置:

      [DEFAULT]
      ...
      glance_host = controller
      
    • [oslo_concurrency] 部分,配置锁路径:

      [oslo_concurrency]
      ...
      lock_path = /var/lib/cinder/tmp
      
    • (可选的)为帮助排错,在 “[DEFAULT]”部分启用详细日志。

      [DEFAULT]
      ...
      verbose = True
      

完成安装

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

    # systemctl enable openstack-cinder-volume.service target.service
    # systemctl start openstack-cinder-volume.service target.service
    
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.