OpenStack q版本的搭建及其架构各个组件之间的关系

OpenStack-Queens安装部署手册及其架构

                                        2018年8月1日

前言

概述
本文档描述了在CentOS/redhat 操作系统下OpenStack Q版本平台的系统规划、部署流程和安装步骤,总结了安装过程中,可能遇到的问题及解决思路,文档主要用于积累搭建经验,内部分享,共同进步。

文档反馈
欢迎提出宝贵意见,以便改进文档,如对文档有任何疑问和建议,请发送邮件至1962791632@qq.con
技术支持
搭建可参照官网https://docs.openstack.org/install-guide/

OpenStack概述
OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。

目录
前言 2
目录 3
一、简介 4
二、架构介绍 4
2.1概念架构 4
2.2逻辑架构 5
2.3详细架构图 6
三、组件介绍 8
3.1 Nova-计算服务 9
3.2 Neutron-网络服务 10
3.3 Swift-对象存储服务 11
3.4 Cinder-块存储服务 13
3.5 Glance-镜像服务 14
3.6 Keystone-认证服务 15
3.7 Horizon-UI服务 16
四、服务器初始配置 16
五、准备安装环境 17
六、安装Keystone 21
七、安装Glance 24
八、安装Nova 26
九、安装Neutron 30
十、安装Horizon 41
十一、安装Cinder 42

一、简介

二、架构介绍
2.1概念架构

七大核心组件可以搭建出一个相对完整的云计算环境,Glance(提供镜像)、Nova(提供计算)、Neutron(提供网络)、Cinder和Swift(提供存储)、Horizon(提供图形化管理界面)、Keystone(为所有的组件提供认证和访问策略服务)
Heat(自动化管理应用生命周期) 和 Sahara(大数据服务)可选
Ceilometer(子项目,为计费和监控提供服务所需数据) 计量:获取用户对资源使用情况 。监控:确保资源处于健康状态。

2.2逻辑架构

为了设计、部署和配置OpenStack,管理员必须理解明白OpenStack的逻辑架构。正如OpenStack概念架构图显示,OpenStack包含一些独立的部分,称作OpenStack服务。所有服务授权认证都是通过Identity服务。单个服务通过公共APIs与其他服务进行交互,特权管理员用户命令除外。在内部,OpenStack服务是由几个进程组成。所有服务至少有一个API进程,用来监听API请求,预处理它们并传递它们到其他服务。除了Identity服务外,其他服务实际工作是由不同的进程完成。对于一个服务之间的进程通信,使用AMQP消息块。这些服务状态存储在一个数据库中。当部署和配置OpenStack云,可以选择不同的消息队列服务和数据库服务,如RabbitMQ、MySQL、MariaDB和SQLite。上面的图显示了大多数通用的OpenStack云。
2.3详细架构图

OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。(四个节点可按现有服务器来分配安装,也可安装在通一台机器上,单机部署)
控制节点负责对其余节点进行控制,包括虚拟机生命周期管理,网络分配,存储等
计算节点负责虚拟机运行
网络节点负责对外网络以及内网之间的通信
存储节点负责对虚拟机的额外存储管理等

控制节点架构
控制节点包括以下服务
管理支持服务
基础管理服务
扩展管理服务
1)管理支持服务包含MySQL与Rabbit-mq两个服务
MySQL:数据库作为基础/扩展服务产生的数据存放的地方
Rabbit-mq:消息代理(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务
2)基础管理服务包含Keystone,Glance,Nova,Neutron,Horizon五个服务
Keystone:认证管理服务,提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库
Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制作相应的模板
Nova:计算管理服务,提供了对计算节点的Nova的管理,使用Nova-API进行通信
Neutron:网络管理服务,提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理面板
Horizon:控制台服务,提供了以Web的形式对所有节点的所有服务的管理,通常把该服务称为DashBoard
3)扩展管理服务包含Cinder,Swift,Trove,Heat,Centimeter五个服务
Cinder:提供管理存储节点的Cinder相关,同时提供Cinder在Horizon中的管理面板
Swift:提供管理存储节点的Swift相关,同时提供Swift在Horizon中的管理面板
Trove:提供管理数据库节点的Trove相关,同时提供Trove在Horizon中的管理面板
Heat:提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。
Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作
控制节点一般来说只需要一个网络端口用于通信/管理各个节点

网络节点架构
网络节点仅包含Neutron服务
Neutron:负责管理私有网段与公有网段的通信,以及管理虚拟机网络之间的通信/拓扑,管理虚拟机之上的防火等等
网络节点包含三个网络端口
eth0:用于与控制节点进行通信 (管理)
eth1:用于与除了控制节点之外的计算/存储节点之间的通信(存储)
eth2:用于外部的虚拟机与相应网络之间的通信(业务)

计算节点架构
计算节点包含Nova,Neutron,Telemeter三个服务
1)基础服务
Nova:提供虚拟机的创建,运行,迁移,快照等各种围绕虚拟机的服务,并提供API与控制节点对接,由控制节点下发任务
Neutron:提供计算节点与网络节点之间的通信服务
2)扩展服务
Telmeter:提供计算节点的监控代理,将虚拟机的情况反馈给控制节点,是Centimeter的代理服务
计算节点包含最少两个网络端口
eth0:与控制节点进行通信,受控制节点统一调配
eth1:与网络节点,存储节点进行通信

存储节点架构
存储节点包含Cinder,Swift等服务
Cinder:块存储服务,提供相应的块存储,简单来说,就是虚拟出一块磁盘,可以挂载到相应的虚拟机之上,不受文件系统等因素影响,对虚拟机来说,这个操作就像是新加了一块硬盘,可以完成对磁盘的任何操作,包括挂载,卸载,格式化,转换文件系统等等操作,大多应用于虚拟机空间不足的情况下的空间扩容等等

Swift:对象存储服务,提供相应的对象存储,简单来说,就是虚拟出一块磁盘空间,可以在这个空间当中存放文件,也仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件
存储节点包含最少两个网络接口
eth0:与控制节点进行通信,接受控制节点任务,受控制节点统一调配
eth1:与计算/网络节点进行通信,完成控制节点下发的各类任务

三、组件介绍
组件之间的关系图如下:

3.1 Nova-计算服务

Nova是基于用户需求为实例提供计算资源管理,它基于Python语言管理,本身没有提供任何虚拟化能力,它使用libvirt API来与被支持的Hypervisors交互,整个工作流程如上图所示,Nova-API对外提供了标准化接口。接受和响应最终用户的Compute API的请求;Nova-Scheduler是从队列上得到一个虚拟机实例请求并且决定它应该在哪里运行(使用多种过滤器或算法调度,比如简单算法和将实例放在负载小的机器上);Nova-compute处理管理虚拟机生命周期,通过消息队列接收实例生命周期管理的请求,然后工作
Nova支持的虚拟化技术,KVM,LXC,QEMU,UML,vSphere,Xen

3.2 Neutron-网络服务
网络主要了解vlan和vxlan两种工作模式

vlan 虚拟机通过安全组,桥可以出端口和物理网络连通,这里的控制节点负责dhcp提供IP地址给到物理网络处广播的实例。

vxlan优势:4096个vlan远不能满足大规模云计算数据中心的需求,vxlan可以解决这个问题,其次可以提供多租户场景,租户可以自定义网络,且无需考虑·与其他租户IP地址的重叠,最后可以通过隧道技术可以实现私有网络的通信
3.3 Swift-对象存储服务
Swift 开源项目提供了弹性伸缩,高可用的分布式对象存储服务,适合存储大规模非结构化的数据,架构图如下

代理服务(proxy server):对外提供对象服务API,会根据环的信息来查找服务器地址并转发用户请求到相应的账户、容器或者对象服务。
认证服务(Authentication Server)验证访问用户的身份信息,并获得一个对象访问令牌,在一定的时间内会一直有效,验证访问令牌的有效性并缓存下来,知道过期
缓存服务 (Cache Server)缓存包括对象服务令牌,账户和容器的存在信息,不会缓存本身的数据。
对象服务(Object Server)提供容器元数据和内容服务每个对象的内容会以文件的形势存储在文件系统中,元数据会作为文件属性来存储,建议采用支持扩展属性的XFS文件系统。
3.4 Cinder-块存储服务
块存储是什么?
操作系统获得存储空间的方式一般有两种:
通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区、格式化、创建文件系统;或者直接使用裸硬盘存储数据(数据库)
通过 NFS、CIFS 等 协议,mount 远程的文件系统
第一种裸硬盘的方式叫做 Block Storage(块存储),每个裸硬盘通常也称作 Volume(卷) 第二种叫做文件系统存储。NAS 和 NFS 服务器,以及各种分布式文件系统提供的都是这种存储。

块存储服务是什么?
lock Storage Servicet 提供对 volume 从创建到删除整个生命周期的管理。
从 instance 的角度看,挂载的每一个 Volume 都是一块硬盘。
OpenStack 提供 Block Storage Service 的是 Cinder,其具体功能是:
提供 REST API 使用户能够查询和管理 volume、volume snapshot 以及 volume type
提供 scheduler 调度 volume 创建请求,合理优化存储资源的分配
通过 driver 架构支持多种 back-end(后端)存储方式,包括 LVM,NFS,Ceph 和其他诸如 EMC、IBM 等商业存储产品和方案

工作流如上图所示,和nova工作方式一样,只是一个是计算,一个是存储,Cinder-api接收到请求,Cinder-scheduler 去调度到合适的存储节点由Cinder-volume去创建存储卷
3.5 Glance-镜像服务
Glance是镜像服务,用来注册、登录和检索虚拟机镜像,负责镜像文件的注册、查询和存储管理。
glance-api 负责接受Image API请求,处理image查询和存储等
glance-registry 负责存储,处理和检索image的元数据(大小,类型等)
使用数据库来存储image文件的元数据
支持不同的存储仓库来存储image文件,包括swift,本地磁盘,RADOS块设备,Amazon S3,HTTP

3.6 Keystone-认证服务

两大功能:
(1)用户管理:验证用户身份信息合法性
(2)服务目录管理:提供各个服务目录的(Service Catalog:包括service和endpoint)服务,无论任何服务或者客户访问openstack都要访问keystone获取服务列表,以及每个服务的endpoint

Keystone基本概念介绍

  1.user:User即用户,指的是使用openstack service的用户,可以是人,服务,系统,就是说只要是访问openstack service 的对象都可以称为User
2.Credentials:是用于确认用户身份的凭证。说白了就是“信物”,可以是:
(1):用户名和密码
(2):用户名跟API Key(秘钥)

(1)(2)用户第一次确认身份的方法

(3):一个keystone分配的身份的token          

(3)用户已经确认身份后的方法 (token是有时间限制的)

3.Authentication:
(1):用户身份验证的过程。keystone服务通过检查用户的Credentials来确定用户的身份
(2):第一次验证身份是使用用户名与密码或者用户名与API Key的形式。当用户的Credentials被验证后,keystone会给用户分配一个Authentication token 供该用户的后续请求操作(返回的token中就包含User的Role列表)

3.7 Horizon-UI服务
提供一个web界面操作openstack的系统,使用Django框架基于openstack API开发。

四、服务器初始配置

1、关闭NetworkManeger
systemctl disable NetworkManager
systemctl stop NetworkManager

2、关闭防火墙
systemctl disable firewalld
systemctl stop firewalld

3、关闭selinux(重启生效)
vi /etc/selinux/config —> SELINUX=disabled
验证:

4、更改主机名
hostnamectl set-hostname –static controller (compute)
hostname controller (compute)
vim /etc/hosts —> # controller
172.31.227.20 controller

compute

172.31.227.21 compute

验证:
ping –c 4 controller
ping –c 4 compute 互通

5、配置ssh 优化
vim /etc/ssh/sshd_config
UseDNS=no

6、yum 源配置(queens+mysqld数据库)
需要配置 os extras cloud virt updates

cat mysql-community.repo
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

五、准备安装环境
网络配置(做链路聚合)
(1)两个千兆网卡绑定为bond0作为管理网
vim ifcfg-ens5f0
BOOTPROTO=none
DEVICE=ens5f0
ONBOOT=yes
SLAVE=yes
MASTER=bond0

vim ifcfg-ens5f1
BOOTPROTO=none
DEVICE=ens5f1
ONBOOT=yes
SLAVE=yes
MASTER=bond0

vim ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=static
IPADDR=172.31.226.104
NETMASK=255.255.255.0
GATEWAY=172.31.226.1
BONDING_OPTS=”xmit_hash_policy=layer2+3 mode=4 miimon=80”

(2)两个万兆网卡绑定为bond0作为业务网
vim ifcfg-ens7f0
BOOTPROTO=none
DEVICE=ens7f0
ONBOOT=yes
SLAVE=yes
MASTER=bond1

vim ifcfg-ens9f0
BOOTPROTO=none
DEVICE=ens9f0
ONBOOT=yes
SLAVE=yes
MASTER=bond1

vim ifcfg-bond1
DEVICE=bond1
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=static
IPADDR=172.31.228.104
NETMASK=255.255.255.0
BONDING_OPTS=”xmit_hash_policy=layer2+3 mode=4 miimon=80”

chrony 时间同步
ntp或者是chrony,用一个,其中一个关闭
(1)控制节点
yum install chrony
vim /etc/chrony.conf  allow 172.31.226.0/24
systemctl enable chronyd.service
systemctl start chronyd.service

(2)计算节点
yum install chrony
vim /etc/chrony.conf  server controller iburst
systemctl enable chronyd.service
systemctl start chronyd.service

(3)验证
[root@compute ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
====================================================================^? controller 0 10 0 - +0ns[ +0ns] +/- 0ns
OpenStack 软件包准备

yum upgrade 不用做

yum install python-openstackclient
yum install openstack-selinux

数据库安装(主控)

(1)安装
rpm -qa |grep mysql
mysql-community-server-5.7.22-1.el7.x86_64
mysql-community-client-5.7.22-1.el7.x86_64
mysql-community-libs-5.7.22-1.el7.x86_64
mysql-community-libs-compat-5.7.22-1.el7.x86_64
mysql-community-common-5.7.22-1.el7.x86_64
yum安装红色部分即可

(2)配置
vim /etc/my.cnf.d/openstack.cnf (新建)
[mysqld]
bind-address = 172.31.226.104

default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

(3)启动
systemctl enable mysqld
systemctl start mysqld
原始密码在 cat /var/log/mysqld.log
原始密码进数据库改密码
mysql -uroot -p
set password=password(‘Thinkbig!1’);

Message queue 安装(主控)

yum install rabbitmq-server
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
rabbitmqctl add_user openstack RABBIT_PASS
rabbitmqctl set_permissions openstack “.” “.” “.*”

Memcached 安装(主控)

yum install memcached python-memcached
vim /etc/sysconfig/memcached  OPTIONS=”-l 127.0.0.1,::1,controller”
systemctl enable memcached.service
systemctl start memcached.service

Etcd 安装(主控)

yum install etcd
vim /etc/etcd/etcd.conf 

[Member]

ETCD_DATA_DIR=”/var/lib/etcd/default.etcd”
ETCD_LISTEN_PEER_URLS=”http://控制管理ip:2380”
ETCD_LISTEN_CLIENT_URLS=”http:// 控制管理ip:2379”
ETCD_NAME=”controller”

[Clustering]

ETCD_INITIAL_ADVERTISE_PEER_URLS=”http:// 控制管理ip:2380”
ETCD_ADVERTISE_CLIENT_URLS=”http:// 控制管理ip:2379”
ETCD_INITIAL_CLUSTER=”controller=http:// 控制管理ip:2380”
ETCD_INITIAL_CLUSTER_TOKEN=”etcd-cluster-01”
ETCD_INITIAL_CLUSTER_STATE=”new”

systemctl enable etcd
systemctl start etcd

六、安装Keystone

Keystone(仅仅安装在主控节点)

(1)先决条件
登录: mysql -u root –p
创建Keystone数据库: CREATE DATABASE keystone;
赋予权限:GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’localhost’ IDENTIFIED BY ‘KEYSTONE_DBPASS’;
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’%’ IDENTIFIED BY ‘KEYSTONE_DBPASS’;
退出数据库:exit;

(2)安装配置
安装: yum install openstack-keystone httpd mod_wsgi
配置: vim /etc/keystone/keystone.conf (直接添加)
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[token]
provider = fernet
填充Keystone服务数据库:
su -s /bin/sh -c “keystone-manage db_sync” keystone
初始化Fernet密钥存储库:
keystone-manage fernet_setup –keystone-user keystone –keystone-group keystone
keystone-manage credential_setup –keystone-user keystone –keystone-group keystone
引导身份服务:
keystone-manage bootstrap –bootstrap-password ADMIN_PASS \
–bootstrap-admin-url http:// controller:35357 / v3 / \
–bootstrap-internal-url http:// controller:5000 / v3 / \
- bootstrap-public-url http:// controller:5000 / v3 / \
–bootstrap-region-id RegionOne

(3)配置Apache HTTP服务器
vim /etc/httpd/conf/httpd.conf  ServerName controller
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

(4)完成安装
systemctl enable httpd.service
systemctl start httpd.service
配置管理的账户可以使创建登录操作,类似权限允许
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
会遇到一种情况,部分权限允许没有写进去,这时候可以用export | grep OS_查看什么权限没写进去,然后写进去
(5)创建一个域,项目,用户和角色
创建域
openstack domain create –description “An Example Domain” example
创建service项目
openstack project create –domain default –description “Service Project” service
创建demo项目和用户(普通权限)
openstack project create –domain default –description “Demo Project” demo
openstack user create –domain default –password-prompt demo
创建user角色
openstack role create user
将user添加到demo项目和用户
openstack role add –project demo –user demo user

(6)验证
unset OS_AUTH_URL OS_PASSWORD

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

openstack –os-auth-url http://controller:5000/v3 \
–os-project-domain-name Default –os-user-domain-name Default \
–os-project-name demo –os-username demo token issue

(7)创造环境脚本
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

vim demo-openrc 
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

使用验证
. admin-openrc
openstack token issue


七、安装Glance

(1)先决条件
登录数据库: mysql -u root –p
创建Glance数据库: CREATE DATABASE glance;
授予Glance数据库权限:
GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@’localhost’ IDENTIFIED BY ‘GLANCE_DBPASS’;
GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@’%’ IDENTIFIED BY ‘GLANCE_DBPASS’;
退出数据库: exit;

(2)创建Glance用户并将admin添到Glance和service
. admin-openrc
openstack role add –project service –user glance admin

(3) 创建Glance服务实体
openstack service create –name glance –description “OpenStack Image” image

(4)创建图像服务API端点
openstack endpoint create –region RegionOne image public http://controller:9292
openstack endpoint create –region RegionOne \
image internal http://controller:9292
openstack endpoint create –region RegionOne \
image admin http://controller:9292

(5)安装配置部件
yum install openstack-glance

vim /etc/glance/glance-api.conf 

[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
flavor = keystone
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

vim /etc/glance/glance-registry.conf
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
flavor = keystone

(6)完成安装
填充数据库
su -s /bin/sh -c “glance-manage db_sync” glance
开机自启
systemctl enable openstack-glance-api.service \
openstack-glance-registry.service
systemctl start openstack-glance-api.service \
openstack-glance-registry.service

(7)验证操作
. admin-openrc
wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
openstack image create “cirros” \
–file cirros-0.3.5-x86_64-disk.img \
–disk-format qcow2 –container-format bare \
–public
openstack image list

八、安装Nova

控制节点
(1)创建数据库
登录:mysql -u root –p
创建三个数据库: CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
给数据库授予一定权限:
GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova’@’localhost’ \
IDENTIFIED BY ‘NOVA_DBPASS’;
GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova’@’%’ \
IDENTIFIED BY ‘NOVA_DBPASS’;
GRANT ALL PRIVILEGES ON nova.* TO ‘nova’@’localhost’ \
IDENTIFIED BY ‘NOVA_DBPASS’;
GRANT ALL PRIVILEGES ON nova.* TO ‘nova’@’%’ \
IDENTIFIED BY ‘NOVA_DBPASS’;
GRANT ALL PRIVILEGES ON nova_cell0.* TO ‘nova’@’localhost’ \
IDENTIFIED BY ‘NOVA_DBPASS’;
GRANT ALL PRIVILEGES ON nova_cell0.* TO ‘nova’@’%’ \
IDENTIFIED BY ‘NOVA_DBPASS’;
退出数据库:exit;
(2)创建nova用户,添加admin角色进去,创建服务实体,创建API服务端点
. admin-openrc
openstack user create –domain default –password-prompt nova
添加admin角色进去
openstack role add –project service –user nova admin
创建服务实体
openstack service create –name nova \
–description “OpenStack Compute” compute
创建API服务端点
openstack endpoint create –region RegionOne \
compute public http://controller:8774/v2.1
openstack endpoint create –region RegionOne \
compute internal http://controller:8774/v2.1
openstack endpoint create –region RegionOne \
compute admin http://controller:8774/v2.1
创建展示位置服务
openstack user create –domain default –password-prompt placement
给Placement添加admin项目
openstack role add –project service –user placement admin
创建Placement服务实体
openstack service create –name placement –description “Placement API” placement
创建Placement服务端点
openstack endpoint create –region RegionOne placement public http://controller:8778
openstack endpoint create –region RegionOne placement internal http://controller:8778
openstack endpoint create –region RegionOne placement admin http://controller:8778

(3)安装配置
安装:
yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler openstack-nova-placement-api
配置:
vim /etc/nova/nova.conf 
[DEFAULT]
enabled_apis = osapi_compute,metadata
[api_database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
[api]
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 = nova
password = NOVA_PASS
[DEFAULT]
my_ip = 10.0.0.11
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[vnc]
enabled = true
server_listen = myipserverproxyclientaddress= m y i p s e r v e r p r o x y c l i e n t a d d r e s s = my_ip
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[placement]
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = PLACEMENT_PASS

vim /etc/httpd/conf.d/00-nova-placement-api.conf

选择vlan网络要disabled l3服务

OPENSTACK_NEUTRON_NETWORK = {

‘enable_router’: False,
‘enable_quotas’: False,
‘enable_distributed_router’: False,
‘enable_ha_router’: False,
‘enable_lb’: False,
‘enable_firewall’: False,
‘enable_vpn’: False,
‘enable_fip_topology_check’: False,
}
TIME_ZONE = “TIME_ZONE”

配置修改好后 重启服务 systemctl restart httpd.service memcached.service
验证方法 打开http://controller/dashboard.

十一、安装Cinder

控制节点的安装
(1)配置数据库并授权
mysql -u root -p
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO ‘cinder’@’localhost’ \
IDENTIFIED BY ‘CINDER_DBPASS’;
GRANT ALL PRIVILEGES ON cinder.* TO ‘cinder’@’%’ \
IDENTIFIED BY ‘CINDER_DBPASS’;

(2)管理员权限新建用户cinder
openstack user create –domain default –password-prompt cinder
openstack role add –project service –user cinder admin
openstack service create –name cinder \
–description “OpenStack Block Storage” volume
openstack service create –name cinderv2 \
–description “OpenStack Block Storage” volumev2
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

(3)安装包,对配置文件进行配置
yum install openstack-cinder
vim /etc/cinder/cinder.conf
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
[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
[DEFAULT]
my_ip = 10.0.0.11
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
(4)填充数据库
su -s /bin/sh -c “cinder-manage db sync” cinder
vim /etc/nova/nova.conf
[cinder]
os_region_name = RegionOne
(5)完成安装,自启服务
systemctl restart openstack-nova-api.service
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
存储节点的安装
(1)准备好存储(ceph)
(2)安装软件包,进行配置
安装:
yum install openstack-cinder targetcli python-keystone
配置文件
vim /etc/cinder/cinder.conf
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
[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
[DEFAULT]
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS

ceph的配置
[DEFAULT]
enabled_backends = ceph
glance_api_version = 2
[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

[DEFAULT]
glance_api_servers = http://controller:9292
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp

完成安装
systemctl enable openstack-cinder-volume.service target.service
systemctl start openstack-cinder-volume.service target.service

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值