文档章节

oVirt虚拟化平台对接cinder-ceph

安静美男子
 安静美男子
发布于 2017/05/19 11:02
字数 1606
阅读 192
收藏 0

说明:

1. cinder配置按照openstack 官方文档配置。

2. 将cinder-api cinder-scheduler cinder-volumes服务部署在一台节点。

3. oVirt调用cinder是要注意keystone版本以及细节。
###############################openstack 基本环境############################
1.安装openstack 包
1.1 启用OpenStack库
# yum install centos-release-openstack-mitaka

1.2 升级包
# yum upgrade

1.3 安装 OpenStack 客户端
# yum install python-openstackclient
# yum install openstack-selinux

2.安装mariadb
2.1 安装软件包
# yum install mariadb mariadb-server python2-PyMySQL

2.2 修改配置
vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.0.230 

default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
# systemctl enable mariadb.service
# systemctl start mariadb.service

2.3 设置root密码
# mysql_secure_installation

3.消息队列
3.1 安装包
# yum install rabbitmq-server

3.2 启动消息队列服务并将其配置为随系统启动
# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service

3.3 添加 openstack 用户
# rabbitmqctl add_user openstack pass1234
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"

4.安装memcached
4.1 安装包
# yum install memcached python-memcached
(可能需要其他依赖libevent)
4.2 设置开机启动
# systemctl enable memcached.service
# systemctl start memcached.service

####################以上部分为openstack基本环境要求#######################

####################openstack 认证服务环境################################
1.安装与配置
1.1 创建keystone数据库
# mysql -u root -p 
# CREATE DATABASE keystone;
1.2 数据库授权
# GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';
  GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';
1.3 生成一个随机值在初始的配置中作为管理员的令牌
# openssl rand -hex 10
1cc14ab18f01e6e33a2a

1.4 安装keystone相关包
# yum install openstack-keystone httpd mod_wsgi

1.5 修改keystone配置
vim  /etc/keystone/keystone.conf
[DEFAULT]
admin_token = 1cc14ab18f01e6e33a2a
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[token]
provider = fernet

1.6 初始化身份认证服务的数据库
# su -s /bin/sh -c "keystone-manage db_sync" keystone

1.7 初始化Fernet keys
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

1.8 配置Apache HTTP 服务器

# vim /etc/httpd/conf/httpd.conf
ServerName controller

1.9 创建wsgi-keystone.conf
# vim /etc/httpd/conf.d/wsgi-keystone.conf

Listen 5000
Listen 35357

<VirtualHost *:5000>
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:35357>
    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-admin
    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>

1.10 关闭selinux
# setenforce 0
1.11 配置hosts
# vim /etc/hosts
192.168.0.230 controller

1.11 启动apache服务
#  systemctl enable httpd.service
#  systemctl start httpd.service


2  创建服务实体和API端点
2.1 配置环境变量
# export OS_TOKEN=1cc14ab18f01e6e33a2a
# export OS_URL=http://controller:35357/v3
# export OS_IDENTITY_API_VERSION=3

2.2 创建服务实体和API端点
2.2.1 创建服务实体和身份认证服务:
# openstack service create \
  --name keystone --description "OpenStack Identity" identity

2.2.2 创建认证服务的 API 端点
# openstack endpoint create --region RegionOne \
  identity public http://controller:5000/v3
  
# openstack endpoint create --region RegionOne \
  identity internal http://controller:5000/v3
  
# openstack endpoint create --region RegionOne \
  identity admin http://controller:35357/v3

3 创建域、项目、用户和角色
3.1 创建域``default``:
# openstack domain create --description "Default Domain" default

3.2 创建管理的项目、用户和角色

# openstack project create --domain default \
  --description "Admin Project" admin

# openstack user create --domain default \
  --password-prompt admin
  
# openstack role create admin

# openstack role add --project admin --user admin admin


4. 验证操作

4.1 因为安全性的原因,关闭临时认证令牌机制:
编辑 /etc/keystone/keystone-paste.ini 文件,从``[pipeline:public_api]``,[pipeline:admin_api]``和``[pipeline:api_v3]``部分删除``admin_token_auth 。

重置``OS_TOKEN``和``OS_URL`` 环境变量:
# unset OS_TOKEN OS_URL

作为 admin 用户,请求认证令牌:
# openstack --os-auth-url http://controller:35357/v3 \
  --os-project-domain-name default --os-user-domain-name default \
  --os-project-name admin --os-username admin token issue
  
5 创建 OpenStack 客户端环境脚本
# vim admin-openrc

export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

验证:
# . admin-openrc
# openstack token issue

################################openstack块存储服务配置#####################
1  openstack 块存储服务配置
1.1 创建cinder数据库
# mysql -u root -p
 > CREATE DATABASE cinder;

1.2 数据库授权
# GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
  IDENTIFIED BY 'CINDER_DBPASS';
  GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
  IDENTIFIED BY 'CINDER_DBPASS';

1.3 获得 admin 凭证来获取只有管理员能执行的命令的访问权限
# . admin-openrc

要创建服务证书,完成这些步骤
1.4 创建cinder用户
# openstack user create --domain default --password-prompt cinder
# openstack role add --project admin --user cinder admin

1.5 创建 cinder 和 cinderv2 服务实体:
# openstack service create --name cinder \
  --description "OpenStack Block Storage" volume
#  openstack service create --name cinderv2 \
  --description "OpenStack Block Storage" volumev2
  
1.6 创建块存储api入口
#  openstack endpoint create --region RegionOne \
  volume public http://controller:8776/v1/%\(tenant_id\)s
  
# openstack endpoint create --region RegionOne \
  volume internal http://controller:8776/v1/%\(tenant_id\)s
  
# openstack endpoint create --region RegionOne \
  volume admin http://controller:8776/v1/%\(tenant_id\)s

#  openstack endpoint create --region RegionOne \
  volumev2 public http://controller:8776/v2/%\(tenant_id\)s  

# openstack endpoint create --region RegionOne \
  volumev2 internal http://controller:8776/v2/%\(tenant_id\)s 

# openstack endpoint create --region RegionOne \
  volumev2 admin http://controller:8776/v2/%\(tenant_id\)s

1.7 cinder安装并配置组件  
1.7.1 安装包
# yum install openstack-cinder

1.7.2 设置cinder.conf
# vim /etc/cinder/cinder.conf
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

[DEFAULT]
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 10.0.0.11

[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

[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 = admin
username = cinder
password = CINDER_PASS

[oslo_concurrency]

lock_path = /var/lib/cinder/tmp

说明:将 CINDER_PASS 替换为你在认证服务中为 cinder 用户选择的密码。
在 [DEFAULT 部分,配置``my_ip`` 来使用控制节点的管理接口的IP 地址。

1.7.3 初始化块设备服务的数据库
# su -s /bin/sh -c "cinder-manage db sync" cinder

1.7.4 启动cinder服务
# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

1.7.8 配置hosts
# vim /etc/hosts
192.168.0.230 controller

####################配置ceph存储后端#################################
1.1 创建pools
# ceph osd pool create volumes 128
# ceph osd pool create images 128
# ceph osd pool create backups 128
# ceph osd pool create vms 128

1.2 安装ceph包
# yum install ceph-common

~~~~~如果此节点没有ceph配置,需拷贝ceph.conf~~~~~~~~~~
1.3 创建cephx用户
# ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rwx pool=images'

1.4 创建本地配置
# ceph auth get-or-create client.cinder | sudo tee /etc/ceph/ceph.client.cinder.keyring
# ceph auth get-key client.cinder | tee client.cinder.key


1.5 创建secret-key(计算节点ovirt需要)
# uuidgen
457eb676-33da-42ec-9a8c-9293d545c337

# cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
  <uuid>457eb676-33da-42ec-9a8c-9293d545c337</uuid>
  <usage type='ceph'>
    <name>client.cinder secret</name>
  </usage>
</secret>
EOF
# sudo virsh secret-define --file secret.xml
Secret 457eb676-33da-42ec-9a8c-9293d545c337 created

#sudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c-9293d545c337 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml


1.6 修改cinder.conf
# vi /etc/cinder/cinder.conf 
[DEFAULT]
enabled_backends = ceph

[ceph]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = ceph
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
glance_api_version = 2
rbd_user = cinder
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337

# 1.7 启动cinder-volume服务
# systemctl enable openstack-cinder-volume.service target.service
# systemctl start openstack-cinder-volume.service target.service


#########################################对接Ovirt虚拟平台##################
1.1 ovirt-engin认证方式是keystone v2
# openstack domain list
+----------------------------------+---------+---------+----------------+
| ID                               | Name    | Enabled | Description    |
+----------------------------------+---------+---------+----------------+
| 0899c04522f94791afd9f3a73bc45bcd | default | True    | Default Domain |
+----------------------------------+---------+---------+----------------+

# vim  /etc/keystone/keystone.conf
[identity] 
default_domain_id  = 0899c04522f94791afd9f3a73bc45bcd

# su -s /bin/sh -c "keystone-manage --config-file /etc/keystone/keystone.conf db_sync" keystone

# systemctl restart httpd

1.2 cinder创建新的存储类型

# cinder type-create ceph

# cinder type-key ceph set volume_backend_name=ceph

1.3 cinder默认卷个数修改
cinder quota-defaults default
cinder quota-usage default
cinder quota-update --volumes 100 --snapshots 100 --gigabytes 5000 default
cinder quota-class-update --volumes 100 --snapshots 100 --gigabytes 5000 default
#############################################################################
curl -i http://controller:35357/v2.0/tokens -X POST -H "Content-Type: application/json" -H "Accept: application/json" -H "User-Agent: python-cinderclient" -d '{"auth": {"tenantName": "admin", "passwordCredentials": {"username": "admin", "password": "pass1234"}}}'
 

© 著作权归作者所有

共有 人打赏支持
安静美男子
粉丝 18
博文 30
码字总数 18579
作品 0
成都
程序员
私信 提问
qemu-guest-agent原理及实践

QEMU Guest Agent是运行在虚拟机内部的一个守护程序(qemu-guest-agent.service),用它来辅助Hypervisor实现对Guest的管理。QEMU为宿主机和虚拟机提供了一个数据通道(channel),这个通道的...

hNicholas
2018/09/11
0
0
mvn 3.0.5 编译 ovirt 3.2遇到的问题

调用指令 mvn clean install -Pgwt-admin,gwt-user安装 ovirt 3.2的源代码,失败结果如下 [INFO] [INFO] --- maven-install-plugin:2.3.1:install (default-install) @ api --- [INFO] Inst......

zhukaijie
2015/04/21
353
0
【Ovirt 笔记】engine 用户扩展管理分析与整理

文前说明 作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。 本文仅供学习交流使用,侵权必删。 不用...

羽杰
2018/06/13
0
0
隔离部分-预集成指标

内存部分: 缺陷: a.LibVMI需要获取认证信息,可实现的方法,去掉认证,使oVirt暂时挂掉。 b.需要获取VM的root权限,以及IP;或有VM提供相关信息作为参数。 缺陷: a.LibVMI需要获取认证信息...

Lucus_Guo
2015/06/01
2
0
ovirt3.5 openldap配置

求ovirt3.5 配置登陆域的教程 基于openldap , krb5 。 好笑的是我之前分享过安装方式给别人,结果自己忘掉了 krb5配置部分ovirt-china 上之前有的 但是....ovirt关闭啦! 这尼玛就尴尬了...

jaakan
2017/01/06
610
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux下端口转发工具rinetd介绍

linux下简单好用的工具rinetd,实现端口映射/转发/重定向,针对TCP协议,不支持UDP。 官网地址 http://www.boutell.com/rinetd 里面介绍及使用齐全。 使用场景举例: 阿里云内网Redis连接问题...

ouhoo
10分钟前
1
0
Oracle学习日志-5(算数运算符,比较运算符和逻辑运算符)

因为有编程基础,所以对于这一章还是很好理解,只需要注意对NULL的运算。 操作的表格 算数运算符 查询商品名字和商品售价,并商品售价乘2 SELECT product_name,sale_price * 2 AS "sale_pri...

白话
23分钟前
1
0
搜索引擎(Lucene介绍、分词器详解)

Lucene介绍 Lucene简介 最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简...

这很耳东先生
28分钟前
0
0
quartz详细介绍

quartz常用api Scheduler 调度程序交互的主要API。 Job 希望由调度程序执行的组件实现的接口。 JobDetail 用于定义作业的实例。 JobDataMap 可以包含不限量的序列化数据,在job运行的时候可以...

大笨象会跳舞吧
28分钟前
1
0
kotlin使用jackson序列化enum

默认情况下,我们序列化与反序列化enum是它的name,事实上大部分情况下我们需要序列化的是我们自定义的value,那应该怎么做呢? 这种情况下我们就需要@JsonValue与@JsonCreator data class U...

weidedong
32分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部