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

  

  

  

  

  

  

  

  

 

  

  

  

 

  

 

  

  

  

  

 

  

 

  

  

posted @ 2020-01-12 20:18  一叶知秋~~  阅读(1174)  评论(0编辑  收藏  举报