OpenStack Pike安装学习笔记

此文原创,绝大部分资料翻译自OpenStack官方安装GUIDE,转载请注明出处。


目录

目录... 1

前言... 4

OpenStack参考架构... 4

硬件架构及配置... 5

控制器节点... 6

计算节点... 6

块设备存储节点... 6

对象存储节点... 6

实验环境信息... 7

密码表... 7

IP分配表... 8

OpenStack实验环境IP分配... 8

实验环境系统预备... 10

最小硬件需求... 10

实验节点硬件配置... 10

实验节点操作系统准备... 12

最小化安装CentOS 1708操作系统... 12

配置时区... 13

配置IP地址及网关... 13

配置主机名... 14

配置外网DNS,用于解释外网域名(视运营商配置DNS服务器)... 15

配置hosts文件... 15

配置GRUB启动文件,加主机信息,用于标记主机,利于启动识别... 15

关闭防火墙(生产环境为安全故,可不能随意关闭)... 15

配置软件仓库... 15

时间同步... 16

快照虚拟机... 16

OpenStack安装环境准备... 16

安装本地时间同步服务(NTP) @Controller @other. 16

安装方法... 17

配置 @Controller. 17

添加NTP服务自启动... 17

其余节点配置 @other. 17

查看效果 @all17

启用OpenStack-pike库 @Controller. 17

升级软件包... 17

安装OpenStack客户端... 18

防火墙处理(可选)... 18

安装SQL数据库 @Controller. 18

安装mariadb软件包... 18

配置... 18

配置数据库... 19

设置数据库密码... 19

消息队列组件简介... 19

安装和配置消息队列RabbitMQ   @Controller. 19

安装包... 19

配置... 19

添加 openstack 用户... 19

openstack用户配置写和读权限... 20

Memcached组件简介... 20

安装配置Memcached @Controller. 20

安装软件包... 20

配置... 20

配置服务自启动并启动服务... 20

安装配置ETCD @Controller. 20

安装软件包... 20

配置ETCD.. 21

配置服务自启动并启动... 21

OpenStack最小化安装... 21

身份认证服务(Keystone)... 21

Keystone安装 @Controller. 22

准备数据库... 22

安装软件包并配置... 22

安装软件... 22

配置keystone. 22

初始化身份认证服务的数据库:... 23

初始化Fernet keys仓库:... 23

引导身份认证服务... 23

配置 Apache HTTP 服务器... 24

启动 Apache HTTP 服务并配置其随系统启动:... 24

验证OpenStack Project24

配置用户帐户脚本... 25

创建服务实体和API端点... 25

创建服务实体和身份认证服务... 25

验证 @controller. 27

配置文件... 27

取消变量设置... 27

以admin用户进行验证... 28

以demo用户进行验证... 28

令牌请求测试... 28

镜像服务(glance)... 30

服务概览... 30

OpenStack镜像服务包括以下组件:... 30

安装glance @controller. 31

先决准备... 31

安装和配置glance. 33

验证安装... 35

计算服务(Nova)... 36

计算服务概览... 36

OpenStack计算服务组件构成:... 36

安装和配置NOVA @controller. 38

先决准备... 38

安装和配置组件... 43

nova系统服务处理... 45

验证安装... 46

检查部署是否正常... 46

验证nova服务... 46

网络服务(neutron)... 47

网络服务概览... 47

 


 

前言

本文档为OpenStackPike版学习笔记。主要内容参考自openstack.org官方网站docs栏目。

本笔记主要内容记录了搭建分布式OpenStack的过程,1 Controller(控制器节点) + 1 Compute(计算节点) + 1 Cinder(块存储节点) + 1 Swift(对象存储节点)。

基于CentOS71708安装,搭建一个基本实验环境,不可用于生产。如果需要生产环境,还需要更多高级设置。

需要注意的是,RedHat 7操作系统虽然和CentOS一藤并生,但是安装时有一些额外的命令需要运行。

OpenStack参考架构

OpenStack通过各种补充服务提供基础设施即服务IaaS的解决方案。每个服务都提供便于集成的应用程序接口(API)。

下表显示OpenStack常用组件(项目)

OpenStack services

服务

项目名称

描述

Dashboard

Horizon

提供了一个基于web的自服务门户,与OpenStack底层服务交互,诸如启动一个实例,分配IP地址以及配置访问控制。

Compute

Nova

在OpenStack环境中计算实例的生命周期管理。按需响应包括生成、调度、回收虚拟机等操作。

Networking

Neutron

确保为其它OpenStack服务提供网络连接即服务,比如OpenStack计算。为用户提供API定义网络和使用。基于插件的架构其支持众多的网络提供商和技术。

存储类

 

对象存储

Swift

通过一个 RESTful,基于HTTP的应用程序接口存储和任意检索的非结构化数据对象。它拥有高容错机制,基于数据复制和可扩展架构。它的实现并像是一个文件服务器需要挂载目录。在此种方式下,它写入对象和文件到多个硬盘中,以确保数据是在集群内跨服务器的多份复制。

块存储

Cinder

为运行实例而提供的持久性块存储。它的可插拔驱动架构的功能有助于创建和管理块存储设备。

共享服务

 

Identity service

Keystone

为其他OpenStack服务提供认证和授权服务,为所有的OpenStack服务提供一个端点目录。

Image service

Glance

存储和检索虚拟机磁盘镜像,OpenStack计算会在实例部署时使用此服务。

Telemetry

Ceilometer

为OpenStack云的计费、基准、扩展性以及统计等目的提供监测和计量。

高层次服务

 

Orchestration

Heat

Orchestration服务支持多样化的综合的云应用,通过调用OpenStack-native REST API和CloudFormation-compatible Query API,支持:term:`HOT <Heat Orchestration Template (HOT)>`格式模板或者AWS CloudFormation格式模板

硬件架构及配置

控制器节点

控制节点上运行身份认证服务、镜像服务、计算服务的管理部分,网络服务的管理部分,多种网络代理以及仪表板。也需要包含一些支持服务,例如:SQL数据库、消息队列、NTP服务等。

计算节点

计算节点上运行计算服务中管理实例的管理程序部分。支持各类主流虚拟化技术,如Xen、KVM、VMWARE ESXI等。默认情况下,计算服务使用 KVM。

可以部署超过一个计算节点,每个结算节点至少需要两块网卡。

可选:可以在计算节点上运行部分块存储,对象存储,Orchestration 和 Telemetry 服务。

块设备存储节点

块存储节点是可选节点。一般来讲,块存储节点上包含了大量磁盘,拥有极大的存储容量。部署块存储服务和共享文件系统,对外以块设备的方式提供磁盘空间。

为了实验简单起见,计算节点和块存储节点之间的服务流量使用管理网络。生产环境中应该部署一个单独的存储网络以隔离流量,增强性能和安全。

可以部署超过一个块存储节点,每个块存储节点要求至少一块网卡。

对象存储节点

对象存储节点是可选的,一般来讲,对象存储节点和块存储节点一样,也包含大量磁盘,拥有海量存储容量。部署对象存储服务。对象存储节点通过对象存储服务,用这些磁盘来存储账号,容器和对象。

为了简单起见,计算节点和本类节点之间的服务流量使用管理网络。生产环境中应该部署一个单独的存储网络以增强性能和安全。

这个服务要求两个节点。每个节点要求最少一块网卡。你可以部署超过两个对象存储节点。

实验环境信息

可以利用openssl生成:openssl rand -hex 10

 

 

密码名称

密码

描述

ESXI Server root pass

 

虚拟服务器密码

OSCTL node ROOT pass

 

控制节点root密码

OSCOM node ROOT pass

 

计算节点root密码

OSBSN node ROOT pass

 

块存储节点root密码

OSOSN node ROOT pass

 

对象存储节点0 root密码

OSOSN node1 ROOT pass

 

对象存储节点1 root密码

数据库密码(不能使用变量)

 

数据库的root密码

ADMIN_PASS

 

admin用户密码

CINDER_PASS

 

块存储服务cinder用户密码

DASH_DBPASS

 

DB password for the dashboard

DEMO_PASS

 

demo用户的密码

GLANCE_DBPASS

 

镜像服务的数据库密码

GLANCE_PASS

 

镜像服务的 glance用户密码

KEYSTONE_DBPASS

 

认证服务的数据库密码

METADATA_SECRET

 

元数据代理密文

NEUTRON_DBPASS

 

网络服务的数据库密码

NEUTRON_PASS

 

网络服务的 neutron用户密码

NOVA_DBPASS

 

计算服务的数据库密码

NOVA_PASS

 

计算服务中nova用户的密码

PLACEMENT_PASS

 

Placement服务,placement密码

RABBIT_PASS

 

RabbitMQ的openstack用户密码

SWIFT_PASS

 

对象存储服务用户swift的密码

密码表

Linux密码最好可以不含> |这样的管道符号,可以避免一些麻烦。

 


IP分配表

OpenStack实验环境IP分配

主机名/业务名

IP/IP

PREFIX/NetMask

交换机/端口组

描述

备注

OS_CTL

192.168.253.200

24

vSwitch0/VM Network

OpenStack Controller Node External network

VLAN 0

 

192.168.100.200

24

vSwitch0/VM Network1

OpenStack Controller Node Admin network

VLAN 100

 

192.168.200.200

24

vSwitch0/VM Network2

OpenStack Controller Node Tunnel network

VLAN 200

OS_COM

192.168.253.201

24

vSwitch0/VM Network

OpenStack Compute Node manager network

VLAN 0

 

192.168.100.201

24

vSwitch0/VM Network1

OpenStack Compute Node Admin network

VLAN 100

 

192.168.200.201

24

vSwitch0/VM Network2

OpenStack Compute Node Tunnel network

VLAN 200

OS_BSN

192.168.253.202

24

vSwitch0/VM Network

OpenStack Block Storage Node manager network

VLAN 0

 

192.168.200.202

24

vSwitch0/VM Network1

OpenStack Block Storage Node Admin network

VLAN100

OS_OSN

192.168.253.203

24

vSwitch0/VM Network

OpenStack Object Storage Node manager network

VLAN 0

 

192.168.100.203

24

vSwitch0/VM Network1

OpenStack Object Storage Node Admin network

VLAN100

OS_OSN1

192.168.253.204

24

vSwitch0/VM Network

OpenStack Object Storage Node manager network

VLAN 0

 

192.168.100.204

24

vSwitch0/VM Network1

OpenStack Object Storage Node Admin network

VLAN100

wuj-2008r2-1

192.168.253.210

24

vSwitch0/VM Network1

External network

VLAN 0

      
      
      
      
      
      

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

      

实验环境系统预备

本文环境使用了一台物理服务器,基于Intel 2208WT平台,安装VMWare ESXI 6虚拟化环境。利用虚拟化环境,生成虚拟服务器,利用虚拟服务器做OpenStack搭建实验。虚拟服务器分别扮演Controller控制器节点、Compute计算节点、Cinder块存储节点、Swift对象存储节点。

最小硬件需求

仅支持概念验证环境,使用核心服务和几个实例,生产环境的需求配置,需要根据实际情况进行预算,不同使用需求差异巨大。

  • 控制节点: 1 处理器, 4 GB 内存, 及5 GB 存储
  • 计算节点: 1 处理器, 2 GB 内存, 及10 GB 存储

实验节点硬件配置

一、ControllerNode,控制节点

主机名称:OSCTL

主机类型:ESXI 6虚拟机

CPU:4C

MEM:8Gb

HDD:160Gb Thin Provision

ens160:VMXNET3,WAN外网,用于连接互联网,操作系统管理

ens192:VMXNET3,ADMIN,OpenStack内部网络,连接数据库等

ens224:VMXNET3,Tunnel,vxlan隧道等

二、ComputeNode,计算节点

主机名称:OSCOM

主机类型:ESXI 6虚拟机

CPU:2C

MEM:4Gb

HDD:160Gb Thin Provision

ens160:VMXNET3,WAN外网,用于连接互联网,操作系统管理

ens192:VMXNET3,ADMIN,OpenStack内部网络,连接数据库等

ens224:VMXNET3,Tunnel,vxlan隧道等

三、BlockStorage Node,块存储节点

主机名称:OSBSN

主机类型:ESXI 6虚拟机

CPU:2C

MEM:4Gb

ens160:VMXNET3,WAN外网,用于连接互联网,操作系统管理

ens192:VMXNET3,ADMIN,OpenStack内部网络,连接数据库等

ens224:VMXNET3,空

SYS HDD:160Gb Thin Provision

Volume HDD:160Gb Thin Provision

四、ObjectStorage Node,对象存储节点0

主机名称:OSOSN

主机类型:ESXI 6虚拟机

CPU:2C

MEM:4Gb

ens160:VMXNET3,WAN外网,用于连接互联网,操作系统管理

ens192:VMXNET3,ADMIN,OpenStack内部网络,连接数据库等

ens224:VMXNET3,空

SYSHDD:160Gb Thin Provision

VolumeHDD:160Gb Thin Provision

五、ObjectStorage Node,对象存储节点1

主机名称:OSOSN1

主机类型:ESXI 6虚拟机

CPU:2C

MEM:4Gb

ens160:VMXNET3,WAN外网,用于连接互联网,操作系统管理

ens192:VMXNET3,ADMIN,OpenStack内部网络,连接数据库等

ens224:VMXNET3,空

SYSHDD:160Gb Thin Provision

VolumeHDD:160Gb Thin Provision

实验节点操作系统准备

最小化安装CentOS 1708操作系统

使用标准分区结构

/boot      200M

SWAP       16000M

/          剩余空间

存储节点的第二硬盘先空着

用户名密码及IP地址配置,参见表格《OpenStack实验环境密码表》及《OpenStack实验环境IP分配表》

配置时区

mv /etc/localtime /etc/localtime.bak

cp /usr/share/zoneinfo/Asia/Shanghai/etc/localtime

重启生效

timedatectl status

确认时区

配置IP地址及网关

配置ens160为外部管理网络

vi /etc/sysconfig/network-script/ifcfg-ens160(可能因机器文件名稍不同)

配置ens192为内部管理网络

vi /etc/sysconfig/network-script/ifcfg-ens192(可能因机器文件名稍不同)

配置ens224为Tunnel网络

vi /etc/sysconfig/network-script/ifcfg-ens224(可能因机器文件名稍不同)

配置主机名

hostnamectl  --static set-hostname osctl

hostnamectl status

或者

vi /etc/sysconfig/network

vi /etc/hostname

主机名修改需要重新登陆Shell观察效果

主机名不能有下划线_,可以有中横-,否则导致neutron-linuxbridge-agent启动失败

配置外网DNS,用于解释外网域名(视运营商配置DNS服务器)

vi /etc/resolv.conf

配置hosts文件

vi /etc/hosts,注意这里配置openstack内部地址

配置GRUB启动文件,加主机信息,用于标记主机,利于启动识别

vi /boot/grub2/grub.cfg

关闭防火墙(生产环境为安全故,可不能随意关闭)

systemctl stopfirewalld.service

systemctl disablefirewalld.service

firewall-cmd  --state

sed -i '/^SELINUX=.*/cSELINUX=disabled' /etc/selinux/config

sed -i's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config

grep --color=auto '^SELINUX'/etc/selinux/config

setenforce 0

配置软件仓库

CentOS 1708默认有FastMirror插件,不配国内源也会自动搜索最快源。

yum install wget     安装命令行下载工具

wget -O /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all &&  yum makecache    重生软件源缓存

警告当使用RDO包时,推荐禁用EPEL,原因是EPEL中的更新破坏向后兼容性。如果配置了EPEL源,需要使用yum-versionlock插件锁定包版本号。

时间同步

机器间的时间同步非常重要,也可以在后面使用chrony来做时间同步。

yum install ntpdate

/usr/sbin/ntpdatentp6.aliyun.com && hwclock -s

我们的实验环境是虚拟机,对于ESXI虚拟机来说,在VMWare Tools中设置同步也可。

快照虚拟机

参照架构图、实验机信息等,分别配置好其余实验机,如计算节点等

OpenStack安装环境准备

安装本地时间同步服务(NTP) @Controller @other

虽然虚拟机环境可以利用VM TOOLS同步,而互联网环境可以利用NTP同步,不过为了文档的完整性,还是把这一步照做比较好。

本地时间同步服务器在控制节点安装后,其余OpenStack节点都可以到控制节点上进行时间同步。

安装方法 @all

yum install chrony

配置 @Controller

编辑/etc/chrony.conf

添加

server 192.168.100.200 iburst
allow 192.168.100.0/24    #允许此网段服务器过来同步

添加NTP服务自启动

systemctl enable chronyd.service
添加自启动服务
systemctl start chronyd.service
启动服务
systemctl status chronyd.service
查看服务状态,确认服务正常启动

其余节点配置 @other

server 192.168.100.200 iburst
systemctl enable chronyd.service
systemctl start chronyd.service

注释其他行

查看效果 @all

chronyc sources

启用OpenStack-pike库 @all

yum install centos-release-openstack-pike

升级软件包

yum upgrade

安装OpenStack @controller compute

yum install python-openstackclient openstack-utils

防火墙处理(可选)@all

为图实验方便,前面已经关闭了SELINUX

CentOS 如果启用了SELINUX,可以安装 openstack-selinux 软件包以便自动管理 OpenStack 服务的安全策略

yum install openstack-selinux

安装SQL数据库@Controller

大多数 OpenStack 服务使用 SQL 数据库来存储信息。 典型地,数据库运行在控制节点上。指南中的步骤依据不同的发行版使用MariaDB或 MySQL。当然OpenStack 服务也支持其他 SQL 数据库,包括PostgreSQL。

安装mariadb软件包

yum install mariadb mariadb-server python2-PyMySQL
注意大小写

配置

创建并编辑/etc/my.cnf.d/openstack.cnf

在 [mysqld] 部分,设置bind-address,值为控制节点的内部管理网络IP地址以使得其它节点可以通过管理网络访问数据库:

[mysqld]

bind-address = 192.168.100.200

default-storage-engine = innodb

innodb_file_per_table = on

max_connections = 32000

max_connect_errors=1000

collation-server = utf8_general_ci

character-set-server = utf8

init-connect = 'SET NAMES utf8'

 

hosts文件和这里都需要对应起来,不然会导致数据库权限错误

配置数据库

启动数据库服务,并将其配置为开机自启:

systemctl enable mariadb.service

systemctl start mariadb.service

systemctl status mariadb.service

systemctl list-unit-files |grep mariadb.service

设置数据库密码

为了保证数据库服务的安全性,运行脚本。先按回车,再按Y,然后为数据库的root用户设置一个适当的密码,比如:dycos2018再一路Y至结束就可以了。

        mysql_secure_installation

消息队列组件简介

OpenStack 使用消息队列服务(messagequeue)来协调操作和各服务之间的状态信息。

消息队列服务一般运行在控制节点上。

OpenStack支持好几种消息队列服务包括RabbitMQ、Qpid和ZeroMQ。不过,大多数发行版本的OpenStack包支持特定的消息队列服务。

我们安装最为普遍的RabbitMQ 消息队列服务,因为大部分发行版本都支持它。如果想安装不同的消息队列服务,查询与之相关的文档。

安装和配置消息队列RabbitMQ   @Controller

安装包

yum install rabbitmq-server

配置

启动消息队列服务并将其配置为随系统启动

systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
systemctl status rabbitmq-server.service

添加 openstack 用户

rabbitmqctl add_user openstack dycos2018
(红字部分替换为自己的密码)

需要有正确的主机名,否则可能无法连接

openstack用户配置写和读权限

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

rabbitmqctl set_user_tags openstack administrator

rabbitmqctl list_users

查看用户

netstat -ntlp |grep 5672

查看MQ端口

Memcached组件简介

认证服务的认证缓存使用Memcached来缓存令牌。缓存服务memecached运行在控制节点。在生产环境部署中,推荐联合启用防火墙、认证和加密保证它的安全。

安装配置Memcached @Controller

安装软件包

yum install memcached python-memcached

配置

vi /etc/sysconfig/memcached

修改OPTIONS="-l 127.0.0.1,::1,osctl"

 

 

配置服务自启动并启动服务

systemctl enable memcached.service

systemctl start memcached.service

systemctl start memcached.service

安装配置ETCD@Controller

OpenStack services may use Etcd, adistributed reliable key-value store for distributed key locking, storingconfiguration, keeping track of service live-ness and other scenarios.

OpenStack服务要用ETCD,ETCD是一个可靠的分布式键值存储密钥管理,用于存储配置、跟踪服务现场和其他情况。

安装软件包

yum install etcd

配置ETCD

vi /etc/etcd/etcd.conf

设置ETCD_INITIAL_CLUSTER、ETCD_INITIAL_ADVERTISE_PEER_URLS、ETCD_ADVERTISE_CLIENT_URLS、ETCD_LISTEN_CLIENT_URLS等选项,IP为控制器管理IP

配置服务自启动并启动

systemctl enable etcd && systemctl start etcd && systemctl status etcd

OpenStack最小化安装

OpenStack最小安装必须包含身份认证服务、镜像服务、计算服务、网络服务四个模块;后面分别介绍这几个模块的安装方法。

身份认证服务(Keystone)

OpenStack为认证管理、授权管理和服务目录服务提供了单点整合。OpenStack最常用的身份认证服务组件是Keystone。其它OpenStack服务统一调用Keystone API来使用验证功能。此外,提供用户信息但是不在OpenStack项目中的服务(如LDAP服务)也可被整合进先前存在的基础设施中。

 

为了从identity服务中获益,其他的OpenStack服务需要与它合作。当某个OpenStack服务收到来自用户的请求时,该服务询问Identity服务,验证该用户是否有权限进行此次请求。

身份服务包含这些组件:

服务器

    一个中心化的服务器使用RESTful接口来提供认证和授权服务。

驱动

    驱动或服务后端被整合进集中式服务器中。它们被用来访问OpenStack外部仓库的身份信息, 并且它们可能已经存在于OpenStack被部署在的基础设施(例如,SQL数据库或LDAP服务器)中。

模块

    中间件模块运行于使用身份认证服务的OpenStack组件的地址空间中。这些模块拦截服务请求,取出用户凭据,并将它们送入中央是服务器寻求授权。中间件模块和OpenStack组件间的整合使用Python Web服务器网关接口。

当安装OpenStack身份服务,用户必须将之注册到其OpenStack安装环境的每个服务。身份服务才可以追踪那些OpenStack服务已经安装,以及在网络中定位它们。

 

Keystone安装 @Controller

准备数据库

用数据库连接客户端以 root 用户连接到数据库服务器:

mysql -u root -p

创建 keystone 数据库:

CREATE DATABASE keystone;

给keystone数据库授予恰当的权限:

GRANT ALL PRIVILEGES ON keystone.* TO'keystone'@'localhost' IDENTIFIED BY 'dycos2018';

GRANT ALL PRIVILEGES ON keystone.* TO'keystone'@'%' IDENTIFIED BY 'dycos2018';

FLUSH PRIVILEGES;

注意按实际实验环境替换的红字密码部分

第一行命令授权localhost主机访问keystone库

第二行命令授权所有主机访问keystone库(所有主机并不包含localhost)

退出数据库客户端。

quit

安装软件包并配置

安装软件

yum install openstack-keystone httpd mod_wsgi

配置keystone

编辑文件 /etc/keystone/keystone.conf 并完成如下动作:

在配置片段中的省略号(...)表示默认的配置选项你应该保留。

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

[database]

...

connection = mysql+pymysql://keystone:dycos2018@osctl/keystone

注意按实际环境修改keystone数据库密码和主机名。

在 [token]部分,配置Fernet UUID令牌的提供者。

 [token]

...

provider = fernet

初始化身份认证服务的数据库:

su -s /bin/sh -c "keystone-managedb_sync" keystone

确认数据库同步成功

mysql –u keystone –p

use keystone;

show tables;

看到tables中已经有内容

这一步容易因数据库权限错误导致数据库同步失败

初始化Fernet keys仓库:

keystone-manage fernet_setup--keystone-user keystone --keystone-group keystone

keystone-manage credential_setup --keystone-userkeystone --keystone-group keystone

引导身份认证服务

keystone-manage bootstrap \

--bootstrap-password dycos2018 \

--bootstrap-username admin \

--bootstrap-project-name admin \

--bootstrap-role-name admin \

--bootstrap-service-name keystone \

--bootstrap-region-id RegionOne \

--bootstrap-admin-url http://osctl:35357/v3/ \

--bootstrap-internal-url http://osctl:35357/v3/ \

--bootstrap-public-url http://osctl:5000/v3/

注意将红字部分修改为实际自定密码和主机名

配置Apache HTTP 服务器

编辑/etc/httpd/conf/httpd.conf文件,配置ServerName选项为控制节点:

ServerName osctl

注意修改红字部分为自定主机名

拷贝或链接/usr/share/keystone/wsgi-keystone.conf至/etc/httpd/conf.d/wsgi-keystone.conf目录下

ln -s/usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

验证

ls /etc/httpd/conf.d/

启动 Apache HTTP 服务并配置其随系统启动:

systemctl enable httpd.service

systemctl start httpd.service

systemctl status httpd.service

验证OpenStack Project

openstack project list \

--os-username admin \

--os-project-name admin \

--os-user-domain-id default \

--os-project-domain-id default \

--os-identity-api-version 3 \

--os-auth-url http://osctl:5000/v3 \

--os-password dycos2018

ID因机器不同有所不同

配置用户帐户脚本

脚本可以在后面使用方便地切换用户帐户环境

配置admin用户脚本

创建并编辑文件admin-openrc

vi ~/admin-openrc

export OS_USERNAME=admin

export OS_PASSWORD=dycos2018

export OS_USER_DOMAIN_ID=default

export OS_PROJECT_DOMAIN_ID=default

export OS_PROJECT_NAME=admin

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

export OS_AUTH_URL=http://osctl:35357/v3

(注意按实际实验环境修改为自定密码和自定主机名)

配置demo用户脚本

创建并编辑文件demo-openrc

vi ~/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=dycos2018

export OS_AUTH_URL=http://osctl:5000/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

(注意按实际实验环境修改为自定密码和自定主机名)

创建服务实体和API端点

身份认证服务提供服务的目录和他们的位置。每个你添加到OpenStack环境中的服务在目录中需要一个service实体和一些 API Endpoints。

在Openstack环境中,认证服务管理服务目录。服务使用这个目录来决定服务器的环境中可用的服务。

创建服务实体和身份认证服务

调用脚本切换admin用户环境并确认

source ~/admin-openrc

export

创建域default

openstack project create--domain default --description "Service Project" service

创建工程demo

openstack project create --domaindefault  --description "DemoProject" demo

创建用户demo

openstack user create --domain default--password-prompt demo

创建角色user

openstack role create user

将角色授权给项目和用户

openstack role add --project demo --userdemo user

这个命令执行后没有输出。

这些是示例,可按需求,重复命令再创建其他项目和用户

验证 @controller

配置文件

因安全性原因,检查并关闭临时认证令牌机制

For security reasons, disable the temporaryauthentication token mechanism:

编辑/etc/keystone/keystone-paste.ini文件,在[pipeline:public_api]、[pipeline:admin_api]和[pipeline:api_v3]位置移除admin_token_auth。

取消变量设置

unset OS_AUTH_URL OS_PASSWORD

export |grep –I os_auth_url

export |grep OS_PASSWORD   #确认变量已被取消

以admin用户进行验证

运行命令

openstack --os-auth-url http://osctl:35357/v3\

--os-project-domain-name Default \

--os-user-domain-name Default \

--os-project-name admin \

--os-username admin token issue

得到结果

以demo用户进行验证

openstack --os-auth-urlhttp://osctl:5000/v3 \

--os-project-domain-name Default \

--os-user-domain-name Default \

--os-project-name demo \

--os-username demo token issue

这个命令使用demo用户的密码和API端口5000,这样只会允许对身份认证服务API的常规(非管理)访问。

令牌请求测试

openstack token issue


镜像服务(glance)

服务概览

镜像服务 (glance) 允许用户发现、注册和获取虚拟机镜像。glance提供一个 REST API,允许查询虚拟机镜像的metadata并获取一个现存的镜像。

使用glance服务,可以将虚拟机镜像存储到各种位置,如简单的文件系统或对象存储系统。

OpenStack镜像服务是IaaS的核心服务。它接受磁盘镜像或服务器镜像API请求,和来自终端用户或OpenStack计算组件的元数据定义。它也支持包括OpenStack对象存储在内的多种类型仓库上的磁盘镜像或服务器镜像存储。

大量周期性进程运行于OpenStack镜像服务上以支持缓存,加速系统;同步复制(Replication)服务,保证集群中的一致性和可用性。

其它周期性进程包括auditors, updaters, 和 reapers。

OpenStack镜像服务包括以下组件:

glance-api

    接收镜像API的调用,诸如镜像发现、恢复、存储。

glance-registry

    存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。

数据库

    存放镜像元数据。glance支持多种数据库,用户可以依据个人喜好选择数据库。多数的部署使用MySQL或SQLite。

镜像文件的存储仓库

    支持多种类型的仓库,它们有普通文件系统、对象存储、RADOS块设备、HTTP、以及亚马逊S3等。记住,其中一些仓库仅支持只读方式使用。

元数据定义服务

通用的API,服务于厂商、管理员、系统服务以及用户自定义元数据。这种元数据可用于不同的资源,例如镜像,工件,卷,配额以及集合。一个定义包括了新属性的键,描述,约束以及可以与之关联的资源的类型。

警告

    glance-registry是私有内部服务,为OpenStack Image服务。不要向用户暴露该服务。

安装glance@controller

先决准备

建立glance数据库

mysql –u root –p

create database glance;

GRANT ALL PRIVILEGES ON glance.* TO'glance'@'localhost' IDENTIFIED BY 'dycos2018';

GRANT ALL PRIVILEGES ON glance.* TO'glance'@'%' IDENTIFIED BY 'dycos2018';

注意红字部分替换为自定义密码

调用admin用户环境

source /root/admin-openrc

openstack中建立glance用户

openstack user create --domain default --password-promptglance

授权为Admin角色

openstack role add --project service --user glance admin  #命令无输出

创建glance实体

openstack service create --name glance --description "OpenStack Image" image
 

创建镜像服务公共端点(endpoint)

openstack endpoint create --region RegionOne image public http://osctl:9292
 

创建镜像服务内部端点

openstack endpoint create --region RegionOne image internal http://osctl:9292
 

创建镜像服务管理端点

openstack endpoint create --region RegionOne image admin http://osctl:9292
 

安装和配置glance

安装软件包

yum install openstack-glance

编辑配置glance-api.conf

vi /etc/glance/glance-api.conf

[database]

connection = mysql+pymysql://glance:dycos2018@osctl/glance

 

[keystone_authtoken]

auth_uri = http://osctl:5000

auth_url = http://osctl:35357

memcached_servers = osctl:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = glance

password =dycos2018

 

[paste_deploy]

flavor = keystone

 [glance_store]

stores = file,http

default_store = file

filesystem_store_datadir =/var/lib/glance/images/

注意:  检查已注释或删除[keystone_authtoken]部分中的其余配置(默认无)

              标红部分使用合适的密码和主机名替换配置

编辑配置glance-registry.conf

vi /etc/glance/glance-registry.conf

[database]
connection = mysql+pymysql://glance:dycos2018@osctl/glance

[keystone_authtoken]

auth_uri = http://osctl:5000

auth_url = http://osctl:35357

memcached_servers = osctl:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = glance

password = dycos2018

[paste_deploy]

flavor = keystone

注意:  注释或删除[keystone_authtoken]部分中的其余配置

              标红部分使用合适的密码和主机名替换配置

同步数据库

su -s /bin/sh -c "glance-manage db_sync" glance
官方文档注:   可能会有一些不推荐建议等,忽略即可

Ignore any deprecation messages in this output.

确认数据库同步

mysql –u glance –p

use glance;

show tables;

启动服务

systemctl enableopenstack-glance-api.service openstack-glance-registry.service

systemctl startopenstack-glance-api.service openstack-glance-registry.service

systemctl statusopenstack-glance-api.service

systemctl statusopenstack-glance-registry.service

验证安装

使用CirrOS <http://launchpad.net/cirros>对镜像服务进行验证。

CirrOS是一个小型的Linux镜像,十分适合用来进行OpenStack部署测试

调用ADMIN用户环境

. ~/admin-openrc

下载源镜像

cd ~

wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img

上传至镜像服务

这里使用 QCOW2 磁盘格式,bare容器格式上传镜像到镜像服务,设置公共可见,这样所有的项目都可以访问它

openstack image create "cirros" \

--file cirros-0.3.5-x86_64-disk.img \

--disk-format qcow2 \

--container-format bare \

--public

验证上传

openstack image list


计算服务(Nova)

计算服务概览

OpenStack项目是一个开源云计算平台,支持所有类型的云环境。项目旨在实现云简单化、大规模化、高可扩展化和丰富的功能。来自世界各地的云计算专家都为该项目做出贡献。

使用OpenStack计算服务可以托管和管理云计算系统。OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现。

OpenStack计算组件请求OpenStackIdentity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。

OpenStack计算服务组件构成:

nova-api 服务

    接收和响应来自最终用户的计算API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户做一些管理的操作。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。

nova-api-metadata 服务

接受来自虚拟机发送的元数据请求。nova-api-metadata服务一般在安装nova-network服务的多主机模式下使用。更详细的信息,请参考OpenStack管理员手册中的Metadata service。

http://docs.openstack.org/admin-guide/compute-networking-nova.html#metadata-service

nova-compute服务

    一个持续工作的守护进程,通过Hypervisor的API来创建和销毁虚拟机实例。OpenStack支持多种Hypervisor API,例如:

XenServer/XCP 的 XenAPI

KVM 或 QEMU 的 libvirt

VMware 的 VMwareAPI

    具体实现过程还是蛮复杂的。最为基本的,守护进程同意了来自队列的动作请求,转换为一系列的系统命令如启动一个KVM实例,然后,到数据库中更新状态。

nova-scheduler服务

    拿到一个来自队列请求虚拟机实例,然后决定哪台计算服务器主机来运行它。

nova-conductor模块

媒介作用于nova-compute服务与数据库之间。

它排除了由nova-compute服务对云数据库的直接访问。nova-conductor模块可以水平扩展。但是,不要将它部署在运行nova-compute服务的主机节点上。

参考ConfigurationReference Guide

<http://docs.openstack.org/mitaka/config-reference/compute/conductor.html>

nova-cert模块

    服务器守护进程向NovaCert服务提供X509证书。用来为euca-bundle-image生成证书。仅在EC2 API的请求中使用。

nova-network worker 守护进程

    与nova-compute服务类似,不同是nova-networkworker是从队列中接受网络任务,并操作网络。执行任务如,创建桥接的接口或改变IPtables的规则。

nova-consoleauth 守护进程

授权控制台代理所提供的用户令牌。详情可查看nova-novncproxy和nova-xvpvncproxy。该服务必须为控制台代理运行才可奏效。在集群配置中你可以运行二者中任一代理服务而非仅运行一个nova-consoleauth服务。

更多关于nova-consoleauth的信息,请查看Aboutnova-consoleauth

<http://docs.openstack.org/admin-guide/compute-remote-console-access.html#about-nova-consoleauth>

nova-novncproxy 守护进程

    提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。

nova-spicehtml5proxy 守护进程

    提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。当前OpenStack环境下的虚拟桌面主流协议。

nova-xvpvncproxy 守护进程

    提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。

nova-cert 守护进程

   X509 证书。

nova客户端

    用于用户作为租户管理员或最终用户来提交命令。

队列

    一个在守护进程间传递消息的中央集线器。常见实现有RabbitMQ http://www.rabbitmq.com/、Zero MQ<http://www.zeromq.org/>等AMQP消息队列。

SQL数据库

    存储构建时和运行时的状态,为云基础设施,包括:

       可用实例类型

       使用中的实例

       可用网络

       项目

    理论上,OpenStack计算可以支持任何和SQL-Alchemy所支持的后端数据库,通常使用SQLite3来做测试或开发工作,使用MySQL和PostgreSQL 作生产环境。

安装和配置NOVA@controller

先决准备

创建数据库

mysql –u root –p

CREATE DATABASE nova;

CREATE DATABASE nova_api;

CREATE DATABASE nova_cell0;

授权数据库

GRANT ALL PRIVILEGES ON nova.* TO'nova'@'localhost' IDENTIFIED BY 'dycos2018';

GRANT ALL PRIVILEGES ON nova.* TO'nova'@'%' IDENTIFIED BY 'dycos2018';

GRANT ALL PRIVILEGES ON nova_api.* TO'nova'@'localhost' IDENTIFIED BY 'dycos2018';

GRANT ALL PRIVILEGES ON nova_api.* TO'nova'@'%' IDENTIFIED BY 'dycos2018';

GRANT ALL PRIVILEGES ON nova_cell0.* TO'nova'@'localhost' IDENTIFIED BY 'dycos2018';

GRANT ALL PRIVILEGES ON nova_cell0.* TO'nova'@'%' IDENTIFIED BY 'dycos2018';

flush privileges;

#NOTE:Replace NOVA_DBPASS with a suitable password.

调用ADMIN用户环境

. ~/admin-openrc

export #确认

创建NOVA的OpenStack服务证书

创建NOVA用户

openstack user create --domain default--password-prompt nova

授权ADMIN角色给NOVA用户

openstack role add --project service --usernova admin

这个命令运行无输出,可以用下方命令确认

openstack role list –project service –usernova

创建NOVA服务实体

openstack service create --name nova--description "OpenStack Compute" compute

创建计算服务API公共端点

openstack endpoint create --regionRegionOne compute public http://osctl:8774/v2.1

#NOTE:Replace URL with a suitable URL.

创建计算服务API内部端点

openstack endpoint create --regionRegionOne compute internal http://osctl:8774/v2.1

创建计算服务API管理端点

openstack endpoint create --regionRegionOne compute admin http://osctl:8774/v2.1

创建placement服务用户:placement

openstack user create --domain default--password-prompt placement

注意:使用密码表中的PLACEMENT_PASS

授权placement用户为ADMIN角色

openstack role add --project service --userplacement admin

#此命令运行无输出

创建placement服务实体

openstack service create --name placement--description "Placement API" placement

创建placement服务API公共端点

openstack endpoint create --regionRegionOne placement public http://osctl:8778

创建placement服务API内部端点

openstack endpoint create --regionRegionOne placement internal http://osctl:8778

创建placement服务API管理端点

openstack endpoint create --regionRegionOne placement admin http://osctl:8778

安装和配置组件

安装软件包

yum install openstack-nova-apiopenstack-nova-conductor openstack-nova-console openstack-nova-novncproxyopenstack-nova-scheduler openstack-nova-placement-api

编辑配置文件nova.conf

vi /etc/nova/nova.conf

[DEFAULT]

enabled_apis = osapi_compute,metadata

transport_url = rabbit://openstack:dycos2018@osctl  #RabbitMQ

my_ip = 192.168.100.200   #controller Admin IP

use_neutron = True    #网络组件启用neutron

firewall_driver = nova.virt.firewall.NoopFirewallDriver

[api_database]

connection = mysql+pymysql://nova:dycos2018@osctl/nova_api

[database]

connection = mysql+pymysql://nova:dycos2018@osctl/nova

[api]

auth_strategy = keystone

[keystone_authtoken]

auth_uri = http://osctl:5000

auth_url = http://osctl:35357

memcached_servers = osctl:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = nova

password = dycos2018

#验证及注释或删除[keystone_authtoken]部分无其余参数

[vnc]

enabled = true

vncserver_listen = $my_ip

vncserver_proxyclient_address = $my_ip

[glance]

api_servers = http://osctl: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://osctl:35357/v3

username = placement

password = dycos2018

编辑配置文件00-nova-placement-api.conf

因为一个BUG的原因,需要修改文件

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

<Directory /usr/bin>

  <IfVersion >= 2.4>

     Require all granted

  </IfVersion>

  <IfVersion < 2.4>

     Order allow,deny

     Allow from all

  </IfVersion>

</Directory>

重启httpd服务

systemctl restart httpd

初始化填充nova_api数据库

有个权限BUG,同步前先解决一下

chmod 777 /var/log/nova/nova-manage.log

su -s /bin/sh -c "nova-manage api_dbsync" nova

验证填充

mysql –u nova –p

use nova_api;

show tables;

注册cell0数据库

su -s /bin/sh -c "nova-manage cell_v2map_cell0" nova

#Ignore any deprecationmessages in this output.

创建cell1 cell

su -s /bin/sh -c "nova-manage cell_v2create_cell --name=cell1 --verbose" nova

填充nova数据库

su -s /bin/sh -c "nova-manage dbsync" nova

验证cell0和cell1创建成功

nova-manage cell_v2 list_cells

nova系统服务处理

添加自启动

systemctl enable \
openstack-nova-api.service \
openstack-nova-consoleauth.service \
openstack-nova-scheduler.service \
openstack-nova-conductor.service \
openstack-nova-novncproxy.service

启动服务

systemctl start \
openstack-nova-api.service \
openstack-nova-consoleauth.service \
openstack-nova-scheduler.service \
openstack-nova-conductor.service \
openstack-nova-novncproxy.service

验证服务状态

systemctl status \

openstack-nova-api.service \
openstack-nova-consoleauth.service \
openstack-nova-scheduler.service \
openstack-nova-conductor.service \
openstack-nova-novncproxy.service

systemctl list-unit-files |grep openstack-nova

这里注意,之后搭建完成后创建虚拟机时如果无法挂载卷,可能是这里的openstack-nova-metadata-api.service服务没启动的原因。

验证安装

检查部署是否正常

nova-status upgrade check  #3个都是Success

nova-manage cell_v2 discover_hosts

当然,你可以在控制节点的nova.conf文件里[scheduler]模块下添加 discover_hosts_in_cells_interval=-1 这个设置来自动发现

验证nova服务

source /root/admin-openrc

nova service-list

openstack endpoint list  #查看endpoint list


网络服务(neutron)

网络服务概览

OpenStack网络服务,可以创建虚拟网络设备并将其连接到网络。比如创建虚拟交换机、虚拟防火墙、虚拟路由器等,这些虚拟的网络设备可以提供与物理设备几乎等同的功能与性能。OpenStack网络插件还可兼容不同的网络设备和软件,为OpenStack的架构和部署提供了远超物理网络的灵活性和扩展性。是数据中心实现SDN、NFV的关键组件。

Neutron是当前OpenStack上最为主流的网络解决套件。

Neutron组件构成

neutron-server

    接收和路由API请求到合适的OpenStack网络插件,以达到预想的目的。通俗点说就是提供API,用于接收来自云系统的对网络的操作指令,然后通过LB-Agent来操作网络节点与计算节点中的插件,由插件完成具体的网络操作。

插件和代理

    插件具体负责创建网络、子网,插拔(虚拟)网络端口。插件和代理可兼容多个厂商的设备和技术,如:Cisco虚拟及物理交换机、NEC OpenFlow产品、Open vSwitch、Linux bridging以及VMware NSX等。代理提供具体的功能,如LinuxBridge Agent、OpenSwitch Agent、DHCP Agent、L3 Agent等,可提供DHCP动态IP分配、三层IP路由等功能,视具体代理而定。

消息队列

大多数的OpenStackNetworking安装都会用到,用于在neutron-server和各种各样的代理进程间传递信息。也为某些特定的插件扮演数据库的角色,以存储网络状态。OpenStack网络主要和OpenStack计算节点交互,以提供网络连接给实例。

 

安装和配置Neutron

先决准备

创建neutron数据库

mysql -u root -p

CREATE DATABASE neutron;

授权neutron数据库

GRANT ALL PRIVILEGES ON neutron.* TO'neutron'@'localhost' IDENTIFIED BY 'dycos2018';

GRANT ALL PRIVILEGES ON neutron.* TO'neutron'@'%' IDENTIFIED BY 'dycos2018';

quit   #退出

注意红字部分使用合适的密码替代

调用ADMIN凭证环境

source ~/admin-openrc

OpenStack创建Neutron用户

openstack user create --domain default--password-prompt neutron

授权admin角色给neutron用户

openstack role add --project service --userneutron admin

注意:此命令运行无输出,可用下方命令查看确认

openstack role list --project service --userneutron

创建neutron服务实体

openstack service create --name neutron--description "OpenStack Networking" network

创建API端点

注意使用合适的主机名替代红字部分

创建公共端点

openstack endpoint create --regionRegionOne network public http://osctl:9696

创建内部端点

openstack endpoint create --regionRegionOne network internal http://osctl:9696

创建管理端点

openstack endpoint create --regionRegionOne network admin http://osctl:9696

选择网络选项

Neutron部署网络服务时有选项1或选项2两种架构。

选项1采用尽可能简单的架构进行部署,只支持实例连接到公有网络(运营商网络)。没有self-service网络(个人网络<private>),路由器以及浮动IP地址。只有admin或者其他特权用户可管理网络。

选项2在选项1的基础上多了layer-3服务,支持实例连接到私有网络。普通用户可以管理自己的私有网络,包含连接公网和私网的路由器。

典型的私有网络一般使用overlay网络。例如VxLAN,VXLAN包含了额外的数据头,这些数据头增加了开销,减少了有效内容和用户数据的可用空间。在不了解虚拟网络架构的情况下,实例采用以太网最大传输单元 (MTU) 1500字节发送数据包。OpenStack网络服务通过DHCP服务自动给实例提供正确的MTU值。但是,一些云镜像并没有使用DHCP或者忽视了DHCP MTU选项,则需要配置。

注意:选项2同样支持实例连接到公共网络。

我们采用选项2

安装组件

yum install openstack-neutronopenstack-neutron-ml2 openstack-neutron-linuxbridge ebtables

配置服务组件

编译并配置/etc/neutron/neutron.conf

配置数据库访问

[database]

connection = mysql+pymysql://neutron:dycos2018@osctl/neutron

配置插件类型

[DEFAULT]

core_plugin = ml2

service_plugins = router

allow_overlapping_ips = true

命令行配置方式示例

其实安装openstack-utils后,就可以使用命令行的方式对配置文件进行配置了,命令行的方式将十分便利于脚本化安装openstack。openstack-utils我们已经在前面安装过了。下面举几个命令行配置的例子,相信一看就懂。不过首次安装,建议还是手工一步步进行配置,多花一些时间,有利于openstack框架、参数含义的理解。否则使用命令行脚本一复制,一执行,很快装完了,但是没有参与过程,装完了对OpenStack架构了解仍然不多,肯定不是所希望的。

示例上方两项配置的命令行方式修改

openstack-config --set /etc/neutron/neutron.confdatabase connection mysql+pymysql://neutron:dycos2018@osctl/neutron

openstack-config --set/etc/neutron/neutron.conf DEFAULT core_plugin ml2

openstack-config --set/etc/neutron/neutron.conf DEFAULT service_plugins router

openstack-config --set/etc/neutron/neutron.conf DEFAULT allow_overlapping_ips

配置RabbitMQ消息通讯组件的访问

[DEFAULT]

transport_url = rabbit://openstack:dycos2018@osctl

配置keystone身份认证组件的访问

[DEFAULT]

auth_strategy = keystone

[keystone_authtoken]

auth_uri = http://osctl:5000

auth_url = http://osctl:35357

memcached_servers = osctl:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = neutron

password = dycos2018

配置网络服务,以便通知计算节点的网络拓扑变化

[DEFAULT]

notify_nova_on_port_status_changes = true

notify_nova_on_port_data_changes = true

 [nova]

auth_url = http://osctl:35357

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = nova

password = dycos2018

配置锁路径

[oslo_concurrency]

lock_path = /var/lib/neutron/tmp

配置二层插件Modular Layer 2 (ML2)

编辑并配置文件/etc/neutron/plugins/ml2/ml2_conf.ini

启用flat,VLAN以及VXLAN网络驱动

[ml2]

type_drivers = flat,vlan,vxlan

启用VxLAN

[ml2]

tenant_network_types = vxlan

启用LinuxBridge和二层机制

[ml2]

mechanism_drivers =linuxbridge,l2population

注意:Linuxbridge代理只支持VXLAN Overlay网络。

启用端口安全扩展驱动

[ml2]

extension_drivers = port_security

配置虚拟公共网络为flat

[ml2_type_flat]

flat_networks = provider

为私有网络配置认证范围

[ml2_type_vxlan]

vni_ranges = 1:1000

启用IPSET以便增加安全组规则效率

[securitygroup]

enable_ipset = true

配置Linux Bridge

编辑并配置文件/etc/neutron/plugins/ml2/linuxbridge_agent.ini

映射虚拟公共网络至公共网络物理接口

[linux_bridge]

physical_interface_mappings = provider:ens160

请注意将红字部分PROVIDER_INTERFACE_NAME替换成实际环境下的公共网络物理接口系统名

启用二层网络和VxLan

[vxlan]

enable_vxlan = true

local_ip = 192.168.200.200

l2_population = true

注意:请将红字IP地址(OVERLAY_INTERFACE_IP_ADDRESS)配置为实际环境Tunnel物理接口地址

启用安全组并配置桥接代理的防火墙驱动

[securitygroup]

enable_security_group = true

firewall_driver =neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

配置三层代理

编辑并配置文件/etc/neutron/l3_agent.ini

[DEFAULT]

interface_driver = linuxbridge

 

配置DHC代理

编辑并配置文件/etc/neutron/dhcp_agent.ini

 

[DEFAULT]

interface_driver = linuxbridge

dhcp_driver =neutron.agent.linux.dhcp.Dnsmasq

enable_isolated_metadata = true

配置元数据代理

编辑并配置文件/etc/neutron/metadata_agent.ini

配置元数据主机和共享密文

[DEFAULT]

nova_metadata_host = osctl

metadata_proxy_shared_secret = dycos2018

为计算服务配置网络

这一步的目标就是使Compute节点可以使用Neutron网络

编辑并配置文件/etc/nova/nova.conf

[neutron]

url = http://osctl:9696

auth_url = http://osctl:35357

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = neutron

password = dycos2018

service_metadata_proxy = true

metadata_proxy_shared_secret = dycos2018

完成安装

硬链文件/etc/neutron/plugin.ini至/etc/neutron/plugins/ml2/ml2_conf.ini

ln -s /etc/neutron/plugins/ml2/ml2_conf.ini/etc/neutron/plugin.ini

同步数据库

su -s /bin/sh -c "neutron-db-manage--config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.iniupgrade head" neutron

重启计算服务API接口

systemctl restartopenstack-nova-api.service

启动服务并设置自启动(两种选项网络都需要)

systemctl enable \

neutron-server.service \

neutron-linuxbridge-agent.service \

neutron-dhcp-agent.service \

neutron-metadata-agent.service

systemctl start \

neutron-server.service \

neutron-linuxbridge-agent.service \

neutron-dhcp-agent.service \

neutron-metadata-agent.service

选项2网络启动三层服务

systemctl enable neutron-l3-agent.service

systemctl start neutron-l3-agent.service

验证服务启动

systemctl status \

neutron-server.service \

neutron-linuxbridge-agent.service \

neutron-dhcp-agent.service \

neutron-metadata-agent.service \

neutron-l3-agent.service \

 

Horizon

安装

yum install openstack-dashboard

配置

编辑并配置文件/etc/openstack-dashboard/local_settings

配置控制器地址

OPENSTACK_HOST = "osctl"

配置允许访问horizon主机

ALLOWED_HOSTS = ['one.example.com','two.example.com']

*代表允许所有主机

配置memcached

SESSION_ENGINE ='django.contrib.sessions.backends.cache'

 

CACHES = {

   'default': {

        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',

        'LOCATION': 'controller:11211',

    }

}

配置认证服务版本

OPENSTACK_KEYSTONE_URL ="http://%s:5000/v3" % OPENSTACK_HOST

配置多域名支持

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT =True

配置API版本

OPENSTACK_API_VERSIONS = {

   "identity": 3,

    "image":2,

   "volume": 2,

}

配置默认域名

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN ="Default"

配置默认角色

OPENSTACK_KEYSTONE_DEFAULT_ROLE ="user"

配置时区

TIME_ZONE = "Asia/Shanghai"

完成安装

systemctl restart httpd.servicememcached.service

验证服务

http://osctl/dashboard

可以使用前面建的admin或demo,域default

计算节点安装

环境准备

同控制节点,安装系统、配置时区、配置IP地址和网关、配置DNS、配置主机名、配置HOSTS文件、配置GRUB、配置防火墙、配置时间同步、快照虚拟机

安装NOVA

安装PIKE仓库

yum install -ycentos-release-openstack-pike

更新系统

yum upgrade

安装客户端

yum install python-openstackclient

安装安装配置

yum install openstack-selinux

安装组件

yum install openstack-nova-compute

安装工具包

openstack-utils

配置

编辑并配置文件/etc/nova/nova.conf

开启compute和metadata API

[DEFAULT]

enabled_apis = osapi_compute,metadata

配置信息服务

transport_url = rabbit://openstack:dycos2018@osctl

配置认证服务

[api]

auth_strategy = keystone

 

[keystone_authtoken]

auth_uri = http://osctl:5000

auth_url = http://osctl:35357

memcached_servers = osctl:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = nova

password = dycos2018

配置计算节点管理IP

[DEFAULT]

my_ip = 192.168.100.201

启用网络服务

[DEFAULT]

use_neutron = True

firewall_driver =nova.virt.firewall.NoopFirewallDriver

配置远程访问

[vnc]

enabled = True

vncserver_listen = 0.0.0.0

vncserver_proxyclient_address = $my_ip

novncproxy_base_url = http://osctl:6080/vnc_auto.html

配置镜像服务

[glance]

api_servers = http://osctl:9292

配置LOCKPATH

[oslo_concurrency]

lock_path = /var/lib/nova/tmp

配置placement

[placement]

os_region_name = RegionOne

project_domain_name = Default

project_name = service

auth_type = password

user_domain_name = Default

auth_url = http://osctl:35357/v3

username = placement

password = dycos2018

完成安装

检查CPU支持的硬件虚拟化技术

egrep -c '(vmx|svm)' /proc/cpuinfo

如果命令返回为zero,则不支持硬件虚拟化,必须配置libvirt使用QEMU来代替KVM。

配置方法

编辑并配置文件/etc/nova/nova.conf

[libvirt]

virt_type = qemu

启动服务

systemctl enable libvirtd.serviceopenstack-nova-compute.service

systemctl start libvirtd.serviceopenstack-nova-compute.service

添加计算节点到CELL数据库@controller

调用ADMIN环境并检索

source ~/admin-openrc

openstack compute service list --servicenova-compute

CELL发现计算主机

su -s /bin/sh -c "nova-manage cell_v2discover_hosts --verbose" nova

设置配置

[scheduler]

discover_hosts_in_cells_interval = 300

校验安装 @compute

调用ADMIN环境

从控制节点拷贝ADMIN和DEMO环境配置并调用

scp osctl:/root/admin* .

scp osctl:/root/demo* .

source ~/admin-openrc

列出服务组件

openstack compute service list

列出API端点

openstack catalog list

列出镜像

openstack image list

检查CELL及placement API工作状态

(Check the cells and placement API are working successfully)

nova-status upgrade check

安装Neutron

安装

yum install openstack-neutron-linuxbridgeebtables ipset

配置

编辑并配置/etc/neutron/neutron.conf

[DEFAULT]

transport_url =rabbit://openstack:dycos2018@osctl

auth_strategy = keystone

[keystone_authtoken]

auth_uri = http://osctl:5000

auth_url = http://osctl:35357

memcached_servers = osctl:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = neutron

password = dycos2018

[oslo_concurrency]

lock_path = /var/lib/neutron/tmp

编辑并配置/etc/nova/nova.conf

[neutron]

url = http://osctl:9696

auth_url = http://osctl:35357

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = neutron

password = dycos2018

配置选项2网络类型@compute

编辑并配置文件/etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]

physical_interface_mappings =provider:ens160

[vxlan]

enable_vxlan = true

local_ip = 192.168.200.201

l2_population = true

[securitygroup]

enable_security_group = true

firewall_driver =neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

完成安装

启动服务

systemctl restartopenstack-nova-compute.service

systemctl enableneutron-linuxbridge-agent.service

systemctl startneutron-linuxbridge-agent.service


块存储节点安装

安装 @BSN(Block Storage Node)

先决准备

同控制节点:安装CentOS系统、配置时区、配置IP地址和网关、配置DNS、配置主机名、配置HOSTS文件、配置GRUB、配置防火墙、配置时间同步、快照虚拟机、安装PIKE仓库、更新系统、安装SELINUX配置、安装工具包

yum install -ycentos-release-openstack-pike

yum upgrade

yum install openstack-selinuxopenstack-utils

安装LVM2

yum install lvm2 device-mapper-persistent-data

启动服务

systemctl enable lvm2-lvmetad.service

systemctl start lvm2-lvmetad.service

建立PV(第二硬盘)

pvcreate /dev/sdb

建立VG

vgcreate cinder-volumes /dev/sdb

存储设备访问控制

编辑并配置文件/etc/lvm/lvm.conf

devices {

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

测试

vgs –vvvv

安装组件

yum install openstack-cinder targetclipython-keystone

配置

编辑并配置/etc/cinder/cinder.conf

[database]

connection =mysql+pymysql://cinder:dycos2018@osctl/cinder

[DEFAULT]

my_ip = 192.168.100.202

transport_url =rabbit://openstack:dycos2018@osctl

auth_strategy = keystone

enabled_backends = lvm

glance_api_servers = http://osctl:9292

[keystone_authtoken]

auth_uri = http://osctl:5000

auth_url = http://osctl:35357

memcached_servers = osctl:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = cinder

password = dycos2018

[lvm]

volume_driver =cinder.volume.drivers.lvm.LVMVolumeDriver

volume_group = cinder-volumes

iscsi_protocol = iscsi

iscsi_helper = lioadm

[oslo_concurrency]

lock_path = /var/lib/cinder/tmp

完成安装

systemctl enable openstack-cinder-volume.servicetarget.service

systemctl startopenstack-cinder-volume.service target.service

安装@Controller

先决准备

准备数据库

mysql -u root –p

CREATE DATABASE cinder;

GRANT ALL PRIVILEGES ON cinder.* TO'cinder'@'localhost' IDENTIFIED BY 'dycos2018';

MariaDB [(none)]> GRANT ALL PRIVILEGESON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'dycos2018';

调用ADMIN环境

. admin-openrc

创建用户

openstack user create --domain default--password-prompt cinder

授予权限

openstack role add --project service --usercinder admin

openstack role list --project service --usercinder

建立V2、V3服务入口

openstack service create --name cinderv2--description "OpenStack Block Storage" volumev2

openstack service create --name cinderv3--description "OpenStack Block Storage" volumev3

建立API端点

openstack endpoint create --regionRegionOne volumev2 public http://osctl:8776/v2/%\(project_id\)s

openstack endpoint create --regionRegionOne volumev2 internal http://osctl:8776/v2/%\(project_id\)s

openstack endpoint create --regionRegionOne volumev2 admin http://osctl:8776/v2/%\(project_id\)s

openstack endpoint create --region RegionOnevolumev3 public http://osctl:8776/v3/%\(project_id\)s

openstack endpoint create --regionRegionOne volumev3 internal http://osctl:8776/v3/%\(project_id\)s

openstack endpoint create --regionRegionOne volumev3 admin http://osctl:8776/v3/%\(project_id\)s

安装组件

yum install openstack-cinder

配置

编辑并配置/etc/cinder/cinder.conf

[database]

connection =mysql+pymysql://cinder:dycos2018@osctl/cinder

[DEFAULT]

my_ip = 192.168.100.200

transport_url =rabbit://openstack:dycos2018@osctl

auth_strategy = keystone

[keystone_authtoken]

auth_uri = http://osctl:5000

auth_url = http://osctl:35357

memcached_servers = osctl:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = cinder

password = dycos2018

[oslo_concurrency]

lock_path = /var/lib/cinder/tmp

填充数据库

su -s /bin/sh -c "cinder-manage dbsync" cinder

验证数据填充

mysql –u cinder –p

use cinder;

show tables;

配置NOVA

编辑并配置/etc/nova/nova.conf

[cinder]

os_region_name = RegionOne

完成安装

systemctl restartopenstack-nova-api.service

systemctl enableopenstack-cinder-api.service openstack-cinder-scheduler.service

systemctl startopenstack-cinder-api.service openstack-cinder-scheduler.service

 

 

至此,OpenStack测试环境安装完成啦。

接下来,推荐看看cloudman的每天5分钟玩转 OpenStack吧

https://www.cnblogs.com/CloudMan6/archive/2016/02.html



参考文档:

https://docs.openstack.org/install-guide/

https://www.leolan.top/index.php/posts/208.html



  • 0
    点赞
  • 2
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值