openstack安装使用(Yoga版本)

在这里插入图片描述
演示具体只体现centos配置,至于Ubuntu和SUSE,请移步官方文档

安装指南

官方网址:https://docs.openstack.org/install-guide/common/conventions.html

$ command
#任何用户(包括root用户)都可以运行以提示符为前缀的命令$
# command
用户root必须运行以提示符为前缀的命令# 。您还可以在这些命令前面加上sudo 命令(如果可用)来运行它们。

前言

摘要

OpenStack系统由几个单独安装的关键服务组成。这些服务根据您的云需求协同工作,包括计算、身份、网络、图像、块存储、对象存储、遥测、编排和数据库服务。您可以单独安装这些项目中的任何一个,并将它们独立配置或配置为连接的实体。
包括配置选项的说明和示例配置文件。
本指南记录了从 Pike 版本开始的 OpenStack 安装。它涵盖多个版本。

Warring:本指南正在开发中,并且会经常更新。预发布包已用于测试,某些说明可能不适用于最终版本。请报告您遇到的任何错误,帮助我们改进本指南。

操作系统

目前,本指南介绍了以下 Linux 发行版的 OpenStack 安装:

openSUSE 和 SUSE Linux Enterprise Server
您可以通过 Open Build Service Cloud 存储库使用 openSUSE Leap 42.3、openSUSE Leap 15、SUSE Linux Enterprise Server 12 SP4、SUSE Linux Enterprise Server 15 上的软件包来安装 OpenStack。

Red Hat Enterprise Linux and CentOS
您可以通过 RDO 存储库使用 Red Hat Enterprise Linux 7 和 8 及其衍生版本上提供的软件包来安装 OpenStack。

OpenStack Wallaby 适用于 CentOS Stream 8。OpenStack Ussuri 和 Victoria 适用于 CentOS 8 和 RHEL 8。OpenStack Train 及更早版本适用于 CentOS 7 和 RHEL 7。

Ubuntu
您可以使用 Canonical 的 Ubuntu 16.04+ (LTS) 的 Ubuntu 云存档存储库提供的软件包来完成安装。

Pike 和 Queens 的 Ubuntu Cloud Archive pockets 提供适用于 Ubuntu 16.04 LTS 的 OpenStack 软件包;OpenStack Queens 可使用 Ubuntu 18.04 LTS 直接安装;Rocky 和 ​​Stein 的 Ubuntu Cloud Archive pockets 为 Ubuntu 18.04 LTS 提供 OpenStack 软件包;Ubuntu Cloud Archive pocket for Victoria 提供适用于 Ubuntu 20.04 LTS 的 OpenStack 软件包。

开始使用 OpenStack

OpenStack项目是一个适用于所有类型云的开源云计算平台,其目标是实现简单、可大规模扩展、功能丰富。来自世界各地的开发人员和云计算技术人员创建了 OpenStack 项目。

OpenStack通过一组相互关联的服务提供基础设施即服务 (IaaS)解决方案。每个服务都提供一个 应用程序编程接口(API)来促进这种集成。根据您的需要,您可以安装部分或全部服务。

OpenStack 服务

OpenStack 项目导航器 可让您浏览构成 OpenStack 架构的 OpenStack 服务。这些服务按服务类型和版本系列进行分类。

OpenStack 架构

以下部分更详细的描述了 OpenStack 架构:

概述

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

OpenStack通过一组相互关联的服务提供基础设施即服务 (IaaS)解决方案。每个服务都提供一个 应用程序编程接口(API)来促进这种集成

本指南涵盖了主要 OpenStack 服务的逐步部署,使用适合具有足够 Linux 经验的 OpenStack 新用户的功能示例架构。本指南并非旨在用于生产系统安装,而是为了了解 OpenStack 的目的而创建最低限度的概念验证。

熟悉这些 OpenStack 服务的基本安装、配置、操作和故障排除后,您应该考虑使用生产架构进行部署的以下步骤:

  • 确定并实施必要的核心和可选服务,以满足性能和冗余要求。
  • 使用防火墙、加密和服务策略等方法提高安全性。
  • 使用 Ansible、Chef、Puppet 或 Salt 等部署工具来自动化生产环境的部署和管理。OpenStack 项目有几个部署项目,每个版本都有特定指南: Yoga 版本 Xena 版本 Wallaby 版本 Victoria 版本 Ussuri 版本 Train 版本 Stein 版本 Rocky 版本 Queens 版本 Pike 版本

具体版本版本详情请移步官方文档查看,这里不再做过多赘述:
官方文档:https://docs.openstack.org/install-guide/overview.html#networking

示例架构

该示例架构需要至少两个节点(主机)来启动基本 虚拟机 或实例。块存储和对象存储等可选服务需要额外的节点。

提醒:本指南中使用的示例架构是最低配置,不适用于生产系统安装。它旨在为学习 OpenStack 提供最低限度的概念验证。有关为特定用例创建架构或如何确定需要哪种架构的信息,请参阅 架构设计指南

此示例架构与最小生产架构的不同之处如下:

  • 网络代理驻留在控制器节点上,而不是一个或多个专用网络节点上。
  • 自助服务网络的覆盖(隧道)流量穿过管理网络而不是专用网络。

有管其他版本的生产架构信息请参阅官方文档:https://docs.openstack.org/install-guide/overview.html#networking

在这里插入图片描述
硬件要求

控制器:
控制器节点运行身份服务、图像服务、放置服务、计算管理部分、网络管理部分、各种网络代理和仪表板。它还包括 SQL 数据库、消息队列NTP 等支持服务。

可选地,控制器节点运行块存储、对象存储、编排和遥测服务的部分。

控制器节点至少需要两个网络接口。

计算:
计算节点运行计算的 虚拟机 管理程序部分,用于操作实例。默认情况下,Compute 使用 KVM 管理程序。计算节点还运行网络服务代理,将实例连接到虚拟网络,并通过 安全组 为实例提供防火墙服务。

您可以部署多个计算节点。每个节点至少需要两个网络接口。

块存储:
可选的块存储节点包含块存储和共享文件系统服务为实例提供的磁盘。

为了简单起见,计算节点和该节点之间的服务流量使用管理网络。生产环境应实施单独的存储网络以提高性能和安全性。

您可以部署多个块存储节点。每个节点至少需要一个网络接口。

对象存储:
可选的对象存储节点包含对象存储服务用于存储帐户、容器和对象的磁盘。

为了简单起见,计算节点和该节点之间的服务流量使用管理网络。生产环境应实施单独的存储网络以提高性能和安全性。

该服务需要两个节点。每个节点至少需要一个网络接口。您可以部署两个以上的对象存储节点。

联网

网络:选择以下虚拟网络选项之一

网络选项1:提供商网络
提供商网络选项以最简单的方式部署 OpenStack 网络服务,主要使用第 2 层(桥接/交换)服务和网络的 VLAN 分段。本质上,它将虚拟网络与物理网络连接起来,并依赖物理网络基础设施来提供第 3 层(路由)服务。此外,DHCP 服务还向实例提供 IP 地址信息。

OpenStack 用户需要有关底层网络基础设施的更多信息,以创建与基础设施完全匹配的虚拟网络。

Warring:此选项缺乏对自助(专用)网络、第 3 层(路由)服务以及 LBaaS和 FWaaS等高级服务的支持。如果您需要这些功能,请考虑下面的自助服务网络选项。

在这里插入图片描述
网络选项2:自助服务网络
自助服务网络选项通过第 3 层(路由)服务增强了提供商网络选项,这些服务支持 使用 VXLAN 等覆盖分段方法的 自助服务 网络。本质上,它使用 NAT将虚拟网络路由到物理网络。此外,此选项还为 LBaaS 和 FWaaS 等高级服务奠定了基础。

OpenStack 用户无需了解数据网络上的底层基础设施即可创建虚拟网络。如果相应配置了第 2 层插件,这还可以包括 VLAN 网络。

在这里插入图片描述

环境

您必须使用具有管理权限的帐户来配置每个节点。以用户身份运行命令root或配置sudo 实用程序。

当服务使用 SysV Init 脚本而不是本机 systemd 文件时,openSUSE 上的 systemctl enable 调用会输出警告消息。可以忽略此警告。

为了获得最佳性能,我们建议您的环境满足或超过硬件要求中的硬件要求。

以下最低要求应支持具有核心服务和多个CirrOS实例的概念验证环境:

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

随着 OpenStack 服务和虚拟机数量的增加,实现最佳性能的硬件要求也随之增加。如果启用其他服务或虚拟机后性能下降,请考虑向您的环境添加硬件资源。

为了最大限度地减少混乱并为 OpenStack 提供更多资源,我们建议对 Linux 发行版进行最小化安装。此外,您必须在每个节点上安装 64 位版本的发行版。

每个节点上的单个磁盘分区适用于大多数基本安装。但是,您应该考虑使用逻辑卷管理器 (LVM)来安装带有可选服务(例如块存储)的安装。

出于首次安装和测试的目的,许多用户选择将每个主机构建为虚拟机(VM)。VM 的主要优点包括:

  • 一台物理服务器可以支持多个节点,每个节点几乎具有任意数量的网络接口。
  • 能够在整个安装过程中定期拍摄“快照”,并在出现问题时“回滚”到工作配置。

如果您选择在虚拟机上安装,请确保您的虚拟机管理程序提供了一种在提供商网络接口上禁用 MAC 地址过滤的方法。

安全

OpenStack 服务支持多种安全方法,包括密码、策略和加密。此外,包括数据库服务器和消息代理在内的支持服务支持密码安全。

为了简化安装过程,本指南仅涵盖适用的密码安全性。您可以手动创建安全密码,但服务配置文件中的数据库连接字符串不能接受“@”等特殊字符。我们建议您使用pwgen等工具 或运行以下命令来生成它们:

openssl rand -hex 10

对于 OpenStack 服务,本指南用于SERVICE_PASS引用服务帐户密码和SERVICE_DBPASS引用数据库密码。
下表提供了需要密码的服务列表及其在指南中的相关参考。

密码名称描述
数据库密码(未使用变量)数据库的根密码
ADMIN_PASS用户密码admin
CINDER_DBPASS块存储服务的数据库密码
CINDER_PASS块存储服务用户密码 cinder
DASH_DBPASS仪表板的数据库密码
DEMO_PASS用户密码 demo
GLANCE_DBPASS图片服务的数据库密码
GLANCE_PASS图片服务用户密码 glance
KEYSTONE_DBPASSidentity 服务的数据库密码
METADATA_SECRET元数据代理的密码
NEUTRON_DBPASS网络服务的数据库密码
NEUTRON_PASS网络服务用户的密码 neutron
NOVA_DBPASS计算服务的数据库密码
NOVA_PASS计算服务用户的密码 nova
PLACEMENT_PASS投放服务用户密码 placement
RABBIT_PASSRabbitMQ用户的密码 openstack

OpenStack 和支持服务在安装和操作期间需要管理权限。在某些情况下,服务对主机进行修改可能会干扰 Ansible、Chef 和 Puppet 等部署自动化工具。例如,某些 OpenStack 服务添加了sudo可能干扰安全策略的根包装器。

网络服务采用内核网络参数的默认值并修改防火墙规则。为了避免初始安装期间出现大多数问题,我们建议在您的主机上使用受支持发行版的库存部署。但是,如果您选择自动部署主机,请在继续操作之前检查应用于它们的配置和策略。

主机联网

在您选择部署的体系结构的每个节点上安装操作系统后,必须配置网络接口。我们建议您禁用任何自动网络管理工具并手动编辑适合您的发行版的配置文件。有关如何在您的发行版上配置网络的更多信息,请参阅文档。

所有节点都需要 Internet 访问来实现管理目的,例如软件包安装、安全更新、DNS和 NTP。在大多数情况下,节点应通过管理网络接口获取 Internet 访问权限。为了强调网络分离的重要性,示例架构使用管理网络的私有地址空间,并假设物理网络基础设施通过NAT 或其他方法提供 Internet 访问。示例架构使用提供商(外部)网络的可路由 IP 地址空间,并假设物理网络基础设施提供直接 Internet 访问。

在提供商网络架构中,所有实例都直接连接到提供商网络。在自助服务(专用)网络架构中,实例可以连接到自助服务或提供商网络。自助服务网络可以完全驻留在 OpenStack 中,或者通过提供商网络使用NAT提供某种级别的外部网络访问。

在这里插入图片描述

示例架构假设使用以下网络:

  • 使用网关 10.0.0.1 在 10.0.0.0/24 上进行管理
    该网络需要一个网关来为所有节点提供 Internet 访问,以用于管理目的,例如软件包安装、安全更新、DNS和 NTP。
  • 提供商位于 203.0.113.0/24 上,网关为 203.0.113.1
    该网络需要网关来提供对 OpenStack 环境中的实例的 Internet 访问。

您可以修改这些范围和网关以与您的特定网络基础设施配合使用。

网络接口名称因发行版而异。传统上,接口使用eth后跟序列号。为了涵盖所有变化,本指南将第一个接口称为编号最小的接口,将第二个接口称为编号最大的接口。

除非您打算使用此示例架构中提供的确切配置,否则您必须修改此过程中的网络以匹配您的环境。除了 IP 地址之外,每个节点还必须通过名称解析其他节点。例如,controller名称必须解析为10.0.0.11,即控制器节点上管理接口的 IP 地址。

控制节点

配置网络接口
1、将第一个接口配置为管理接口:
IP地址:10.0.0.11
网络掩码:255.255.255.0(或 /24)
默认网关:10.0.0.1
2、提供商接口使用特殊配置,没有为其分配IP地址,将第二个接口配置为提供者接口:
替换INTERFACE_NAME为实际的接口名称。例如, eth1或ens33。

编辑/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME文件以包含以下内容:
不要更改HWADDR和UUID键。

DEVICE=INTERFACE_NAME
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"

配置解析名称:
1、将节点的主机名设置为 controller
2、编辑/etc/hosts文件以包含以下内容:

# controller
10.0.0.11       controller

# compute1
10.0.0.31       compute1

# block1
10.0.0.41       block1

# object1
10.0.0.51       object1

# object2
10.0.0.52       object2

3、重新启动系统以激活更改。

计算节点

配置网络接口
1、将第一个接口配置为管理接口:
IP地址:10.0.0.31
网络掩码:255.255.255.0(或 /24)
默认网关:10.0.0.1

其他计算节点应使用 10.0.0.32、10.0.0.33 等

2、提供商接口使用特殊配置,没有为其分配IP地址,将第二个接口配置为提供者接口:
替换INTERFACE_NAME为实际的接口名称。例如, eth1或ens33。

编辑/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME文件以包含以下内容:
不要更改HWADDR和UUID键。

DEVICE=INTERFACE_NAME
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"

配置解析名称:
1、将节点的主机名设置为 compute1
2、编辑/etc/hosts文件以包含以下内容:

# controller
10.0.0.11       controller

# compute1
10.0.0.31       compute1

# block1
10.0.0.41       block1

# object1
10.0.0.51       object1

# object2
10.0.0.52       object2

3、重新启动系统以激活更改。

块存储节点(可选)

如果您需要部署块存储服务,请额外配置1个存储节点。
配置网络接口
配置管理界面:
IP地址:10.0.0.41
网络掩码:255.255.255.0(或 /24)
默认网关:10.0.0.1

配置解析名称:
1、将节点的主机名设置为 block1
2、编辑/etc/hosts文件以包含以下内容:

# controller
10.0.0.11       controller

# compute1
10.0.0.31       compute1

# block1
10.0.0.41       block1

# object1
10.0.0.51       object1

# object2
10.0.0.52       object2

3、重新启动系统以激活更改。

验证连接性

我们建议您在继续操作之前验证与 Internet 以及节点之间的网络连接。

1、从控制器节点,测试对Internet的访问:

# ping -c 4 docs.openstack.org
PING files02.openstack.org (23.253.125.17) 56(84) bytes of data.
64 bytes from files02.openstack.org (23.253.125.17): icmp_seq=1 ttl=43 time=125 ms
64 bytes from files02.openstack.org (23.253.125.17): icmp_seq=2 ttl=43 time=125 ms
64 bytes from files02.openstack.org (23.253.125.17): icmp_seq=3 ttl=43 time=125 ms
64 bytes from files02.openstack.org (23.253.125.17): icmp_seq=4 ttl=43 time=125 ms


--- files02.openstack.org ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 125.192/125.282/125.399/0.441 ms

2、从控制器节点,测试对计算节点上管理界面的访问:

# ping -c 4 compute1

PING compute1 (10.0.0.31) 56(84) bytes of data.
64 bytes from compute1 (10.0.0.31): icmp_seq=1 ttl=64 time=0.263 ms
64 bytes from compute1 (10.0.0.31): icmp_seq=2 ttl=64 time=0.202 ms
64 bytes from compute1 (10.0.0.31): icmp_seq=3 ttl=64 time=0.203 ms
64 bytes from compute1 (10.0.0.31): icmp_seq=4 ttl=64 time=0.202 ms

--- compute1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.202/0.217/0.263/0.030 ms

3、从计算节点,测试对Internet的访问:

# ping -c 4 openstack.org

PING openstack.org (174.143.194.225) 56(84) bytes of data.
64 bytes from 174.143.194.225: icmp_seq=1 ttl=54 time=18.3 ms
64 bytes from 174.143.194.225: icmp_seq=2 ttl=54 time=17.5 ms
64 bytes from 174.143.194.225: icmp_seq=3 ttl=54 time=17.5 ms
64 bytes from 174.143.194.225: icmp_seq=4 ttl=54 time=17.4 ms

--- openstack.org ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3022ms
rtt min/avg/max/mdev = 17.489/17.715/18.346/0.364 ms

4、从计算节点,测试对控制器的节点上管理界面的访问:

# ping -c 4 controller

PING controller (10.0.0.11) 56(84) bytes of data.
64 bytes from controller (10.0.0.11): icmp_seq=1 ttl=64 time=0.263 ms
64 bytes from controller (10.0.0.11): icmp_seq=2 ttl=64 time=0.202 ms
64 bytes from controller (10.0.0.11): icmp_seq=3 ttl=64 time=0.203 ms
64 bytes from controller (10.0.0.11): icmp_seq=4 ttl=64 time=0.202 ms

--- controller ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.202/0.217/0.263/0.030 ms

网络时间协议(NTP)

要正确同步节点之间的服务,您可以安装 Chrony服务 ,它是NTP的实现。我们建议您将控制节点配置为引用更准确(较低层)的服务,并配置其他节点来引用该控制器节点

控制节点

建议参考此此方式安装:chrony 时间同步服务

其他节点

建议参考此此方式安装:chrony 时间同步服务

验证操作
chronyc sources

OpenStack 软件包

由于发布计划不同,发行版OpenStack 软件包作为发行版的一部分或其他方法发布。在所有节点上执行这些过程

此处描述的OpenStack包需要在所有节点上完成:控制器、计算和存储节点
在继续操作之前,您的主机必须包含可用于您的发行版的最新基本的安装包
禁用或删除任何自动更新服务,因为他们会影响您的OpenStack环境

如果您是Ubuntu 或 SUSE版本请移步官方网站
https://docs.openstack.org/install-guide/environment-packages.html

适用于RHCE 和 Centos 的软件包

Warring:
从Ussuri 版本开始,您将需要使用 CentOS8 或 RHEL 8。以前的 OpenStack 版本将需要使用 CentOS7 或 RHEL 7。其中包含针对不同发行版和版本的说明。

我们建议在使用 RDO 包时禁用 EPEL,因为 EPEL 中的更新会破坏向后兼容性。或者,最好使用插件来固定封装版本 yum-versionlock

以下步骤仅适用于 RHEL,centos 不需要这些步骤

1、使用 RHEL 时,假定您已使用 Red Hat Subscription Management 注册系统,并且 根据您的版本默认启用rhel-7-server-rpms或存储库。rhel-8-for-x86_64-baseos-rpms
有关注册 RHEL 7 系统的更多信息,请参阅《 Red Hat Enterprise Linux 7 系统管理员指南》
2、除了rhel-7-server-rpms在 RHEL 7 系统上之外,您还需要启用rhel-7-server-optional-rpms、rhel-7-server-extras-rpms和rhel-7-server-rh-common-rpms存储库:

subscription-manager repos --enable=rhel-7-server-optional-rpms \
  --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms

有关注册 RHEL 8 系统的更多信息,请参阅《 Red Hat Enterprise Linux 8 安装指南》页面貌似已经被丢失了,不知后续是否会更新
3、除了rhel-8-for-x86_64-baseos-rpms在 RHEL 8 系统上之外,您还需要启用rhel-8-for-x86_64-appstream-rpms、 rhel-8-for-x86_64-supplementary-rpms和codeready-builder-for-rhel-8-x86_64-rpms 存储库:

subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms \
  --enable=rhel-8-for-x86_64-supplementary-rpms --enable=codeready-builder-for-rhel-8-x86_64-rpms
启动OpenStack 存储库

在 CentOS 上,extras存储库提供启用 OpenStack 存储库的 RPM。extrasCentOS默认包含该存储库,因此您只需安装该软件包即可启用 OpenStack 存储库。对于 CentOS8,您还需要启用 PowerTools 存储库。

如想安装其他版本请移步官方网站:
https://docs.openstack.org/install-guide/environment-packages-rdo.html

安装Victoria 版本时,运行:

yum install centos-release-openstack-victoria
yum config-manager --set-enabled powertools

在 RHCE上,下载并安装RDO存储库RPM以启用OpenStack 存储库。

在RHCE 7 上:

yum install https://rdoproject.org/repos/rdo-release.rpm

在RHCE 8 上:

dnf install https://www.rdoproject.org/repos/rdo-release.el8.rpm

RDO 存储库 RPM 安装最新的可用 OpenStack 版本。

完成安装

1、升级所有节点上的软件包:

yum upgrade

如果升级过程包含新内核,请重新启动主机以激活它

2、安装适合您的版本的 OpenStack 客户端。

对于 Centos 7 和 RHEL 7

yum install python-openstackclient

对于 Centos 8 和 RHEL 8

yum install python3-openstackclient

3、RHEL 和 CentOS默认启用 SELinux 。安装该 openstack-selinux软件包以自动管理 OpenStack 服务的安全策略:

yum install openstack-selinux

SQL数据库

大多数 OpenStack 服务使用 SQL 数据库来存储信息。数据库通常运行在控制节点上。本指南中的过程使用 MariaDB 或 MySQL,具体取决于发行版。OpenStack 服务还支持其他 SQL 数据库,包括 PostgreSQL

如果您在 OpenStack 服务上看到或 错误日志消息,请验证最大连接数设置是否正确应用于您的环境。在 MariaDB 中,您可能还需要更改 open_files_limit 配置。Too many connectionsToo many open files

安装和配置组件

1、 安装软件包:

yum install mariadb mariadb-server python2-PyMySQL

2、 创建并编辑 /etc/my.cnf.d/openstack.cnf 文件 (如果需要,备份现有配置文件/etc/my.cnf.d/ )并完成以下操作:

  • 创建一个 [mysqld] 的section, 并将 bind-address key 设置为控制节点的管理IP地址,以供其他节点通过管理网络访问。 设置附加键以启用有用的选项和 UTF-8 字符集:
[mysqld]
bind-address = 10.0.0.11

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

1、启动数据库服务并将其配置为随系统启动而启动:

systemctl enable mariadb.service
systemctl start mariadb.service

2、 通过运行脚本来保护数据库 mysql_secure_installation 。特别是,为数据库帐户选择合适的密码 root:

mysql_secure_installation

消息队列

消息队列运行在控制节点上

OpenStack 使用 消息队列 来协调服务之间的操作和状态信息。消息队列服务通常运行在控制器节点上。OpenStack 支持多种消息队列服务,包括 RabbitMQQpidZeroMQ。然而,大多数打包 OpenStack 的发行版都支持特定的消息队列服务。本指南实现了 RabbitMQ 消息队列服务,因为大多数发行版都支持它。如果您希望实现不同的消息队列服务,请参阅与其相关的文档。

官方网站:
https://docs.openstack.org/install-guide/environment-messaging.html

安装和配置组件

1、安装包:

yum install rabbitmq-server

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

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

3、添加openstack用户:

或者可以在web页面上添加并修改合适的密码

rabbitmqctl add_user openstack RABBIT_PASS
# Creating user "openstack" ...

4、允许openstack用户进行配置、写入和读取访问

rabbitmqctl set_permissions openstack ".*" ".*" ".*"
# Setting permissions for user "openstack" in vhost "/" ...

内存缓存

服务的Identity服务认证机制使用Memcached来缓存令牌。memcached 服务通常运行在控制器节点上。对于生产部署,我们建议启用防火墙、身份验证和加密的组合来保护它。

安装和配置组件

1、安装软件包:
对于 CentOS 7 和 RHEL 7

yum install memcached python-memcached

对于 CentOS 8 和 RHEL 8

yum install memcached python3-memcached

2、 编辑 /etc/sysconfig/memcached 文件并完成以下操作:

  • 配置服务以使用控制器节点的管理IP地址。这是为了允许其他节点通过管理网络进行访问:
OPTIONS="-l 127.0.0.1,::1,controller"
完成安装
  • 启动Memcached服务并将其配置为随系统启动而启动:
systemctl enable memcached.service
systemctl start memcached.service

其他

etcd 服务运行在控制器节点上。
OpenStack 服务可以使用 Etcd,这是一种分布式可靠键值存储,用于分布式键锁定、存储配置、跟踪服务活跃度和其他场景。

安装和配置组件

1、安装包:

yum install etcd

2、编辑该文件,将、 、、 /etc/etcd/etcd.conf 设置为控制节点的管理IP地址,以供其他节点通过管理网络访问:ETCD_INITIAL_CLUSTERETCD_INITIAL_ADVERTISE_PEER_URLSETCD_ADVERTISE_CLIENT_URLSETCD_LISTEN_CLIENT_URLS

#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://10.0.0.11:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_INITIAL_CLUSTER="controller=http://10.0.0.11:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
完成安装

1、启用并启动etcd服务:

systemctl enable etcd
systemctl start etcd

安装openstack 服务

Yoga 的最小部署

您至少需要安装以下服务。按照下面指定的顺序安装服务:

1、身份服务 keystone

OpenStack 身份服务提供了用于管理身份验证、授权和服务目录的单点集成。
身份服务通常是用户交互的第一个服务。经过身份验证后,最终用户可以使用其身份访问其他 OpenStack 服务。同样,其他 OpenStack 服务利用身份服务来确保用户的真实身份,并发现其他服务在部署中的位置。Identity服务还可以与一些外部用户管理系统(例如LDAP)集成。

用户和服务可以使用服务目录来定位其他服务,服务目录由身份服务管理。顾名思义,服务目录是 OpenStack 部署中可用服务的集合。每项服务可以有一个或多个端点,每个端点可以是以下三种类型之一:管理、内部或公共。在生产环境中,出于安全原因,不同的端点类型可能驻留在向不同类型的用户公开的单独网络上。例如,公共 API 网络可能从互联网上可见,因此客户可以管理他们的云。管理 API 网络可能仅限于管理云基础设施的组织内的操作员。内部 API 网络可能仅限于包含 OpenStack 服务的主机。此外,OpenStack 支持多个区域以实现可扩展性。RegionOne地区。在身份服务中创建的区域、服务和端点共同构成了部署的服务目录。部署中的每个 OpenStack 服务都需要一个服务条目,其对应的端点存储在身份服务中。这一切都可以在安装和配置身份服务后完成。

安装和配置
本节介绍如何在控制节点上安装和配置代号为 keystone 的 OpenStack Identity 服务。出于可扩展性的目的,此配置部署 Fernet 令牌和 Apache HTTP 服务器来处理请求。

先决条件
在安装和配置身份服务之前,您必须创建一个数据库。
1)使用数据库访问客户端以用户身份连接数据库root:

mysql -u root -p

2)创建 keystone 数据库:

MariaDB [(none)]> CREATE DATABASE keystone;

3)授予对keystone 数据库的正确访问权限:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';

替换 KEYSTONE_DBPASSWD为合适的密码。

4)退出数据库访问客户端

安装和配置组件
1)运行以下命令来安装软件包:

yum install openstack-keystone httpd mod_wsgi

对于 RHEL/Centos8 及以上版本,安装 python3-mod_wsgi

2)编辑 /etc/keystone/keystone.conf 文件并完成以下操作:

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

[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

替换KEYSTONE_DBPASS 为您为数据库选择的密码。

注释掉或删掉connection 该部分中的任何其他选项 [database]
controller 在本列中,主机必须是可解析的

在[token] 部分中,配置 Frent 令牌提供程序:

[token]
# ...
provider = fernet

3)填充身份服务数据库:

su -s /bin/sh -c "keystone-manage db_sync" keystone

4)初始化 Fernet 密钥存储库:

和标志用于指定将用于运行 keystone–keystone-user的–keystone-group操作系统的用户/组。提供这些是为了允许在另一个操作系统用户/组下运行 keystone。在下面的示例中,我们将用户和组称为用户和组keystone。

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

5)引导身份服务:

在 Queens 版本之前,keystone 需要在两个单独的端口上运行,以适应 Identity v2 API,该 API 通常在端口 35357 上运行单独的仅管理服务。删除 v2 API 后,keystone 可以在同一端口上运行所有接口。

keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://controller:5000/v3/ \
  --bootstrap-internal-url http://controller:5000/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne

替换ADMIN_PASS 为合适管理用户的密码

配置Apache http 服务器
1)编辑 /etc/httpd/conf/httpd.conf 文件并配置 ServerName引用控制器节点的选项:

ServerName controller

2)创建文件的链接 /usr/share/keystone/wsgi-keystone.conf

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

SSL
安全部署应将 Web 服务器配置为使用 SSL 或在 SSL 终止器后面运行。

完成安装
1)启动 Apache http 服务将其配置为随系统启动而启动:

systemctl enable httpd.service
systemctl start httpd.service

2)通过设置适当的环境变量来配置管理账户:

export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3

此处显示的这些值是从 中创建的默认值。keystone-manage bootstrap
替换为keystone-install-configure-rdo中命令ADMIN_PASS中使用的密码 。keystone-manage bootstrap

创建域、项目、用户和角色
Identity 服务为每个 OpenStack 服务提供身份验证服务。身份验证服务使用域、项目、用户和角色的组合。
1)尽管本指南中的keystone-manage 引导步骤中已经存在“默认”域,但创建新域的正式方法是:

openstack domain create --description "An Example Domain" example

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | An Example Domain                |
| enabled     | True                             |
| id          | 2f4f80574fd84fe6ba9067228ae0a50c |
| name        | example                          |
| tags        | []                               |
+-------------+----------------------------------+

2)本指南使用的服务项目包含您添加到环境中的每项服务的唯一用户。创建service 项目:

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

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 24ac7f19cd944f4cba1d77469b2a73ed |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

3)常规 (非管理) 任务使用非特权项目和用户。作为示例,创建 myproject 项目和 myuser 用户

  • 创建myproject项目:
openstack project create --domain default \
  --description "Demo Project" myproject

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 231ad6e7ebba47d6a1e57e1cc07ae446 |
| is_domain   | False                            |
| name        | myproject                        |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

为此项目创建其他用户时,请勿重复此步骤

  • 创建myuser 用户:
openstack user create --domain default \
  --password-prompt myuser

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | aeda23aa78f44e859900e22c24817832 |
| name                | myuser                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

创建myrole 角色:

openstack role create myrole

+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 997ce8d05fc143ac97d83fdfb5998552 |
| name      | myrole                           |
+-----------+----------------------------------+

添加 myrole 角色到 myproject 项目和 myuser 用户:

openstack role add --project myproject --user myuser myrole
# 该命令不提供任何输出

您可以重复此过程来创建其他项目和用户

验证操作
在安装其他服务之前验证身份服务的运行情况。

在控制节点上执行这些命令

1)取消设置临时变量 OS_AUTH_URL 和 OS_PASSWORD 环境变量:

unset OS_AUTH_URL OS_PASSWORD

2)作为admin 用户,请求身份验证令牌:

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

Password:
+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:14:07.056119Z                                     |
| id         | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
|            | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
|            | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+

该命令使用用户的密码 admin

3)作为myuser 上一节中创建的用户,请求身份验证令牌:

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

Password:
+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:15:39.014479Z                                     |
| id         | gAAAAABWvi9bsh7vkiby5BpCCnc-JkbGhm9wH3fabS_cY7uabOubesi-Me6IGWW |
|            | yQqNegDDZ5jw7grI26vvgy1J5nCVwZ_zFRqPiz_qhbq29mgbQLglbkq6FQvzBRQ |
|            | JcOzq3uwhzNxszJWmzGC7rJE_H0A_a3UFhqv8M4zMRYSbS2YF0MyFmp_U       |
| project_id | ed0b60bf607743088218b0a533d5943f                                |
| user_id    | 58126687cbcc4888bfa9ab73a2256f27                                |
+------------+-----------------------------------------------------------------+

创建Openstack 客户端环境脚本
前面的部分使用环境变量和命令选项的组合来通过 openstack客户端与身份服务进行交互。为了提高客户端操作的效率,OpenStack 支持简单的客户端环境脚本(也称为 OpenRC 文件)。这些脚本通常包含所有客户端的通用选项,但也支持独特的选项。有关更多信息,请参阅 《OpenStack 最终用户指南》

创建脚本
admin为项目和用户创建客户端环境脚本demo 。本指南的后续部分将引用这些脚本来加载客户端操作的适当凭据。

客户端环境脚本的路径不受限制。为方便起见,您可以将脚本放置在任何位置,但请确保它们可访问并位于适合您的部署的安全位置,因为它们确实包含敏感凭据。

1)创建并编辑 admin-openrc 文件并添加以下内容:

OpenStack 客户端还支持使用clouds.yaml文件

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:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

替换为您在身份服务中 ADMIN_PASS 为用户选择的密码: admin

2)创建并编辑 demo-openrc 文件并添加以下内容

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
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

替换为您在身份服务中DEMO_PASS为用户选择的密码:demo

使用脚本
要作为特定项目和用户运行客户端,您只需在运行它们之前加载关联的客户端环境脚本即可。例如:
1)加载admin-openrc文件以使用身份服务的位置以及admin项目和用户凭据填充环境变量:

. admin-openrc

2)请求身份验证令牌:

openstack token issue

+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:44:35.659723Z                                     |
| id         | gAAAAABWvjYj-Zjfg8WXFaQnUd1DMYTBVrKw4h3fIagi5NoEmh21U72SrRv2trl |
|            | JWFYhLi2_uPR31Igf6A8mH2Rw9kv_bxNo1jbLNPLGzW_u5FC7InFqx0yYtTwa1e |
|            | eq2b0f6-18KZyQhs7F3teAta143kJEWuNEYET-y7u29y0be1_64KYkM7E       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+
2、图像服务 glance

镜像服务(glance)使用户能够发现、注册和检​​索虚拟机镜像。它提供了一个 REST API,使您能够查询虚拟机映像元数据并检索实际映像。您可以将通过映像服务提供的虚拟机映像存储在各种位置,从简单的文件系统到对象存储系统(例如 OpenStack 对象存储)。

为简单起见,本指南描述了配置图像服务以使用后端file,该后端上传并存储在托管图像服务的控制器节点上的目录中。默认情况下,该目录是/var/lib/glance/images/.

在继续之前,请确保控制器节点此目录中至少有几 GB 的可用空间。请记住,由于file后端通常位于控制器节点本地,因此它通常不适合多节点概览部署。

安装和配置
在安装配置前,必须创建数据库、服务凭证和API端点
1)创建数据库,完成以下步骤:

  • 使用数据库访问客户端以用户身份链接数据库root
mysql -uroot -p
  • 创建glance 数据库
MariaDB [(none)]> CREATE DATABASE glance;
  • 授予对glance数据库的正确访问权限:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
  IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
  IDENTIFIED BY 'GLANCE_DBPASS';

替换GLANCE_DBPASS 为合适的密码。

  • 退出数据库访问客户端

2)获取admin凭证以访问仅限管理的CLI命令:

. admin-openrc

3)创建服务凭证,请完成以下步骤:

  • 创建glance用户
openstack user create --domain default --password-prompt glance

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 3f4e777c4062483ab8d9edd7dff829df |
| name                | glance                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
  • 将admin角色添加到 glance 用户和 service 项目中:
openstack role add --project service --user glance admin
#该命令不提供任何输出
  • 创建glance服务实体:
openstack service create --name glance \
  --description "OpenStack Image" image

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Image                  |
| enabled     | True                             |
| id          | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
| name        | glance                           |
| type        | image                            |
+-------------+----------------------------------+

4)创建图像服务API端点:

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

+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 340be3625e9b4239a6415d034e98aace |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller:9292           |
+--------------+----------------------------------+

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

+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | a6e4b153c2ae4c919eccfdbb7dceb5d2 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller:9292           |
+--------------+----------------------------------+

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

+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 0c37ed58103f4300a84ff125a539032d |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller:9292           |
+--------------+----------------------------------+

注册配额限制(可选)
如果您决定在 Glance 中使用每租户配额,则必须首先在 Keystone 中注册限制:

openstack --os-cloud devstack-system-admin registered limit create \
  --service glance --default-limit 1000 --region RegionOne image_size_total

+---------------+----------------------------------+
| Field         | Value                            |
+---------------+----------------------------------+
| default_limit | 1000                             |
| description   | None                             |
| id            | 9cedfc5de80345a9b13ed00c2b5460f2 |
| region_id     | RegionOne                        |
| resource_name | image_size_total                 |
| service_id    | e38c84a2487f49fd9864193bdc8a3174 |
+---------------+----------------------------------+

openstack --os-cloud devstack-system-admin registered limit create \
  --service glance --default-limit 1000 --region RegionOne image_stage_total

+---------------+----------------------------------+
| Field         | Value                            |
+---------------+----------------------------------+
| default_limit | 1000                             |
| description   | None                             |
| id            | 5a68712b6ba6496d823d0c66e5e860b9 |
| region_id     | RegionOne                        |
| resource_name | image_stage_total                |
| service_id    | e38c84a2487f49fd9864193bdc8a3174 |
+---------------+----------------------------------+

openstack --os-cloud devstack-system-admin registered limit create \
  --service glance --default-limit 100 --region RegionOne image_count_total

+---------------+----------------------------------+
| Field         | Value                            |
+---------------+----------------------------------+
| default_limit | 100                              |
| description   | None                             |
| id            | beb91b043296499f8e6268f29d8b2749 |
| region_id     | RegionOne                        |
| resource_name | image_count_total                |
| service_id    | e38c84a2487f49fd9864193bdc8a3174 |
+---------------+----------------------------------+

openstack --os-cloud devstack-system-admin registered limit create \
  --service glance --default-limit 100 --region RegionOne image_count_uploading

+---------------+----------------------------------+
| Field         | Value                            |
+---------------+----------------------------------+
| default_limit | 100                              |
| description   | None                             |
| id            | fc29649c047a45bf9bc03ec4a7bcb8af |
| region_id     | RegionOne                        |
| resource_name | image_count_uploading            |
| service_id    | e38c84a2487f49fd9864193bdc8a3174 |
+---------------+----------------------------------+

请务必use_keystone_quotas=True在您的glance-api.conf文件中进行设置。

安装和配置组件
1)安装软件包:

yum install openstack-glance

2)编辑/etc/glance/glance-api.conf文件并完成以下操作:

  • 在[database]部分中,配置数据库访问:
[database]
# ...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance

替换GLANCE_DBPASS为您为图像服务数据库选择的密码。

  • 在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问:
[keystone_authtoken]
# ...
www_authenticate_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_PASS为用户选择的密码 。glance
注释掉或删除该 [keystone_authtoken]部分中的任何其他选项。

  • 在[glance_store]部分中,配置本地文件系统存储和图像文件的位置:
[glance_store]
# ...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
  • 在[oslo_limit]部分中,配置对 keystone 的访问:
[oslo_limit]
auth_url = http://controller:5000
auth_type = password
user_domain_id = default
username = MY_SERVICE
system_scope = all
password = MY_PASSWORD
endpoint_id = ENDPOINT_ID
region_name = RegionOne

确保 MY_SERVICE 帐户具有对系统范围资源(如限制)的读者访问权限:

openstack role add --user MY_SERVICE --user-domain Default --system all reader
  • 在[DEFAULT]部分中,可以选择启用每租户配额:
[DEFAULT]
use_keystone_quotas = True

请注意,如果启用此功能,必须已如上所述创建注册限制

3)填充图像数据库:

su -s /bin/sh -c "glance-manage db_sync" glance
#忽略此输出中的任何弃用消息。

完成安装

启动镜像服务并将其配置为在系统启动时启动

systemctl enable openstack-glance-api.service
systemctl start openstack-glance-api.service

验证操作
使用CirrOS验证映像服务的操作 ,CirrOS 是一个小型 Linux 映像,可帮助您测试 OpenStack 部署。

在控制节点上执行这些命令

1)获取admin凭证以访问仅限管理的CLI命令:

.admin-openrc

2)下载源图片:

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

3)使用QCOW2 磁盘格式、裸容器格式和公共可见性图像上传到图像服务,以便所有项目都可以访问它:

glance image-create --name "cirros" \
  --file cirros-0.4.0-x86_64-disk.img \
  --disk-format qcow2 --container-format bare \
  --visibility=public

+------------------+------------------------------------------------------+
| Field            | Value                                                |
+------------------+------------------------------------------------------+
| checksum         | 133eae9fb1c98f45894a4e60d8736619                     |
| container_format | bare                                                 |
| created_at       | 2015-03-26T16:52:10Z                                 |
| disk_format      | qcow2                                                |
| file             | /v2/images/cc5c6982-4910-471e-b864-1098015901b5/file |
| id               | cc5c6982-4910-471e-b864-1098015901b5                 |
| min_disk         | 0                                                    |
| min_ram          | 0                                                    |
| name             | cirros                                               |
| owner            | ae7a98326b9c455588edd2656d723b9d                     |
| protected        | False                                                |
| schema           | /v2/schemas/image                                    |
| size             | 13200896                                             |
| status           | active                                               |
| tags             |                                                      |
| updated_at       | 2015-03-26T16:52:10Z                                 |
| virtual_size     | None                                                 |
| visibility       | public                                               |
+------------------+------------------------------------------------------+

OpenStack 动态生成 ID,因此您将在示例命令输出中看到不同的值。

4)确认上传图像并验证属性:

glance image-list

+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 38047887-61a7-41ea-9b49-27987d5e8bb9 | cirros | active |
+--------------------------------------+--------+--------+
3、安置服务 placement

安置服务并不提供具体的操作步骤,概述的过程请移步官方网站。
https://docs.openstack.org/placement/yoga/install/

从PyPl 安装和配置 placement

PyPI 中的包安装和配置放置服务。放置适用于 Python 2.7 版本,但建议使用 3.6 或更高版本。
假设您有一个可用的 MySQL 服务器和一个可用的 Python 环境,包括pip软件包安装程序。根据您的环境,您可能希望在virtualenv中安装放置。

本文档描述了如何使用uwsgi作为其 Web 服务器来运行放置。这只是托管服务的多种不同方式之一。Placement 是一个行为良好的WSGI应用程序,因此应该可以直接托管在任何 WSGI 服务器上。

如果在 OpenStack 环境中使用放置,您需要在启动使用它的服务之前、在它使用的服务之后确保它已启动并运行。这意味着在Keystone之后,但在其他任何事情之前。

在安装服务之前,您需要创建数据库、服务凭证和API端点。

PyPI 安装 pip

示例均使用该pip命令,pip3根据您安装和python 版本,这可能需要不同的路径或拼写

python-openstackclient
如果尚未安装,请安装openstack命令行工具:

pip install python-openstackclient

创建数据库
放置主要使用 MySQL/MariaDB 进行测试,因此这就是此处所描述的内容。它还可以与 PostgreSQL 以及sqlalchemy支持的许多其他数据库很好地配合使用。

1)使数据库访问客户端以用户身份连接到数据库服务器,或者需要根据需要root使用:sudo

mysql

2)创建placement 数据库:

MariaDB [(none)]> CREATE DATABASE placement;

3)授权对数据库的正确访问权限:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' \
  IDENTIFIED BY 'PLACEMENT_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' \
  IDENTIFIED BY 'PLACEMENT_DBPASS';

替换PLACEMENT_DBPASS为合适的密码。

4)退出数据库访问客户端

配置用户和端点

1)获取admin凭证以访问仅限管理的CLI命令:

. admin-openrc

2)使用您选择的创建一个放置服务用户 PLACEMENT_PASS:

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

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | fa742015a6494a949f67629884fc7ec8 |
| name                | placement                        |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

3)将 placement 用户添加到具有 admin 角色的服务项目:

openstack role add --project service --user placement admin
#该命令不提供任何输出

4)在服务目录中创建 placement API 条目:

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

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Placement API                    |
| enabled     | True                             |
| id          | 2d1a27022e6e4185b86adac4444c495f |
| name        | placement                        |
| type        | placement                        |
+-------------+----------------------------------+

5)创建 placement API 服务端点:

根据您的环境,端点的 URL 将因端口(可能是 8780 而不是 8778,或者根本没有端口)和主机名而异。您有责任确定正确的 URL。

openstack endpoint create --region RegionOne \
placement public http://controller:8778

+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 2b1b2637908b4137a9c2e0470487cbc0 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 2d1a27022e6e4185b86adac4444c495f |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+

openstack endpoint create --region RegionOne \
placement internal http://controller:8778

+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 02bcda9a150a4bd7993ff4879df971ab |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 2d1a27022e6e4185b86adac4444c495f |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+

openstack endpoint create --region RegionOne \
placement admin http://controller:8778

+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 3d71177b9e0f406f98cbff198d74b182 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 2d1a27022e6e4185b86adac4444c495f |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+

安装和配置组件
放置配置文件的默认位置是/etc/placement/placement.confOS_PLACEMENT_CONFIG_DIR可以通过在环境中设置来选择不同的目录。还可以使用部分配置文件或不使用配置文件来运行服务,并在环境中设置一些选项。有关此处未提及的其他配置设置,请参阅配置指南

在下面的步骤中,controller用作运行 keystone、mysql 和placement 的主机的主机名的替代。这些可能是不同的。keystone 主机(用于 auth_url和www_authenticate_uri)应该是身份服务的无版本公共端点。

1)安装放置和所需的数据库:

pip install openstack-placement pymysql

2)创建 /etc/placement/placement.conf 文件并完成以下操作:

  • 创建一个[placement_database]部分并配置数据库访问:
[placement_database]
connection = mysql+pymysql://placement:PLACEMENT_DBPASS@controller/placement

替换PLACEMENT_DBPASS为您为放置数据库选择的密码。

  • 创建[api]和[keystone_authtoken]部分,配置身份服务访问:
[api]
auth_strategy = keystone  # use noauth2 if not using keystone

[keystone_authtoken]
www_authenticate_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 = placement
password = PLACEMENT_PASS

替换为您在身份服务中PLACEMENT_PASS为用户选择的密码 。placement

user_name、password、project_domain_name和 的值user_domain_name需要与您的梯形校正配置同步。

3)填充placement 数据库:

placement-manage db sync

另一种方法是使用该 placement_database.sync_on_startup选项。

完成安装
现在放置本身已经安装完毕,我们需要在 Web 服务器中启动该服务。下面提供了一个非常基本的 Web 服务器,虽然性能相对较高,但设置起来并不易于管理。由于 Web 服务器有很多,管理它们的方法也有很多,因此根据个人喜好随意选择。

1)安装uwsgi软件包(这些说明针对版本 2.0.18):

pip install uwsgi

2)在终端窗口中使用放置WSGI应用程序运行服务器:
确保您使用正确的uwsgi二进制文件。它可能位于您路径中的多个位置。错误的版本会失败并抱怨错误的论点。

uwsgi -M --http :8778 --wsgi-file /usr/local/bin/placement-api \
--processes 2 --threads 10

3)在另一个终端中使用确认服务器正在运行 curl,URL应与配置用户和端点中设置的公共端点匹配

curl http://controller:8778/

输出将如下所示:

{
   "versions" : [
      {
         "id" : "v1.0",
         "max_version" : "1.31",
         "links" : [
            {
               "href" : "",
               "rel" : "self"
            }
         ],
         "min_version" : "1.0",
         "status" : "CURRENT"
      }
   ]
}

RHEL 和 Centos 安装放置请参考官方文档
https://docs.openstack.org/placement/yoga/install/install-rdo.html

验证安装:

admin在进行这些调用之前,您需要向身份服务进行身份验证 。有许多不同的方法可以做到这一点,具体取决于您的系统的设置方式。如果您没有admin-openrc文件,则会有类似的文件。

1)获取admin凭证以访问仅限管理的CLI命令:

. admin-openrc

2)执行状态检查以确保一切正常:

 placement-status upgrade check
+----------------------------------+
| Upgrade Check Results            |
+----------------------------------+
| Check: Missing Root Provider IDs |
| Result: Success                  |
| Details: None                    |
+----------------------------------+
| Check: Incomplete Consumers      |
| Result: Success                  |
| Details: None                    |
+----------------------------------+

该命令的输出将因版本而异

3)针对放置API运行一些命令:

  • 安装osc-placement插件:

此示例使用PyPI和pip,但如果您使用的是分发包,则可以从其存储库安装该包。迁移到 python3 后,您将需要指定pip3或从您的发行版安装 python3-osc-placement。

  • 列出可用的资源类和特征:
openstack --os-placement-api-version 1.2 resource class list --sort-column name
+----------------------------+
| name                       |
+----------------------------+
| DISK_GB                    |
| IPV4_ADDRESS               |
| ...                        |

openstack --os-placement-api-version 1.6 trait list --sort-column name
+---------------------------------------+
| name                                  |
+---------------------------------------+
| COMPUTE_DEVICE_TAGGING                |
| COMPUTE_NET_ATTACH_INTERFACE          |
| ...                                   |
4、计算服务 Nova

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

OpenStack Compute 与 OpenStack Identity 进行交互以进行身份​​验证,与 OpenStack Placement 进行交互以进行资源库存跟踪和选择,与 OpenStack Image 服务进行交互以进行磁盘和服务器映像,以及与 OpenStack Dashboard 进行交互以用于用户和管理界面。图像访问受到项目和用户的限制;每个项目的配额是有限的(例如实例的数量)。OpenStack Compute 可以在标准硬件上水平扩展,并下载镜像来启动实例。

OpenStack 计算由以下区域及其组件组成:

nova-api 服务:
接受并响应最终用户计算 API 调用。该服务支持 OpenStack 计算 API。它执行一些策略并启动大多数编排活动,例如运行实例。

nova-api-metadata 服务:
接受来自实例的元数据请求。有关更多信息,请参阅 元数据服务

nova-compute 服务:
一个工作守护进程,通过虚拟机管理程序 API 创建和终止虚拟机实例。例如:

  • 用于 KVM 或 QEMU 的 libvirt
  • 适用于 VMware 的 VMwareAPI

处理相当复杂。基本上,守护进程接受队列中的操作并执行一系列系统命令,例如启动 KVM 实例并更新其在数据库中的状态。

nova-scheduler 服务:
从队列中获取虚拟机实例请求并确定其在哪个计算服务器主机上运行。

nova-conductor 模块:
调解nova-compute服务和数据库之间的交互。它消除了对服务进行的云数据库的直接访问 nova-compute。该nova-conductor模块水平缩放。但是,请勿将其部署在nova-compute运行服务的节点上。有关详细信息,请参阅配置选项conductor中的部分 。

nova-novncproxy 守护进程:
提供用于通过 VNC 连接访问正在运行的实例的代理。支持基于浏览器的 novnc 客户端。

nova-spicehtml5proxy 守护进程:
提供用于通过 SPICE 连接访问正在运行的实例的代理。支持基于浏览器的 HTML5 客户端。

队列
用于在守护进程之间传递消息的中央集线器。通常使用 RabbitMQ实现,但 也可以使用其他选项。

SQL数据库
存储云基础设施的大多数构建时和运行时状态,包括:

  • 可用实例类型
  • 使用中的实例
  • 可用网络
  • 项目

理论上,OpenStack Compute 可以支持 SQLAlchemy 支持的任何数据库。常见的数据库有用于测试和开发工作的 SQLite3、MySQL、MariaDB 和 PostgreSQL。

安装和配置控制节点
在安装和配置计算服务之前,您必须创建数据库、服务凭证和 API 端点。

1)创建数据库

  • 使用数据库访问客户端以用户身份连接数据库服务器root:
mysql -u root -p
  • 创建nova_api、nova和nova_cell0数据库:
MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> CREATE DATABASE nova_cell0;
  • 授予对数据库的正确访问权限:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';

替换NOVA_DBPASS为合适的密码。

  • 退出数据库访问客户端。

2)获取admin凭据以访问仅限管理的 CLI 命令:

. admin-openrc

3)创建计算服务凭证:

  • 创建nova用户:
openstack user create --domain default --password-prompt nova

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 8a7dbf5279404537b1c7b86c033620fe |
| name                | nova                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
  • admin为用户添加角色nova:
openstack role add --project service --user nova admin
#该命令不提供任何输出
  • 创建nova服务实体:
openstack service create --name nova \
--description "OpenStack Compute" compute

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | 060d59eac51b4594815603d75a00aba2 |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+

4)创建计算API服务端点:

openstack endpoint create --region RegionOne \
compute public http://controller:8774/v2.1

+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | 3c1caa473bfe4390a11e7177894bcc7b          |
| interface    | public                                    |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | 060d59eac51b4594815603d75a00aba2          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1               |
+--------------+-------------------------------------------+

openstack endpoint create --region RegionOne \
compute internal http://controller:8774/v2.1

+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | e3c918de680746a586eac1f2d9bc10ab          |
| interface    | internal                                  |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | 060d59eac51b4594815603d75a00aba2          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1               |
+--------------+-------------------------------------------+

openstack endpoint create --region RegionOne \
compute admin http://controller:8774/v2.1

+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | 38f7af91666a47cfb97b4dc790b94424          |
| interface    | admin                                     |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | 060d59eac51b4594815603d75a00aba2          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1               |
+--------------+-------------------------------------------+

5)安装安装 Placement 服务并配置用户和端点:

  • 更多相关信息,请参考 3、放置服务

安装和配置组件

1)安装软件包:

yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-novncproxy openstack-nova-scheduler

2)编辑 /etc/nova/nova.conf 文件并完成以下操作:

  • 在[DEFAULT]部分中,仅启用计算和元数据 API:
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata
  • 在[api_database]和[database]部分中,配置数据库访问:
[api_database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api

[database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova

替换NOVA_DBPASS为您为计算数据库选择的密码。

  • 在[DEFAULT]部分中,配置RabbitMQ消息队列访问:
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller:5672/

替换为您为 帐户RABBIT_PASS选择的密码。openstackRabbitMQ

  • 在[api]和[keystone_authtoken]部分中,配置身份服务访问:
[api]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
www_authenticate_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 = nova
password = NOVA_PASS

替换为您在身份服务中NOVA_PASS为用户选择的密码。nova

注释掉或删除该[keystone_authtoken] 部分中的任何其他选项。

  • [service_user]部分中,配置服务用户令牌:
[service_user]
send_service_user_token = true
auth_url = https://controller/identity
auth_strategy = keystone
auth_type = password
project_domain_name = Default
project_name = service
user_domain_name = Default
username = nova
password = NOVA_PASS

替换为您在身份服务中NOVA_PASS为用户选择的密码。nova

  • 在[DEFAULT]部分中,配置选项my_ip以使用控制器节点的管理接口 IP 地址:
[DEFAULT]
# ...
my_ip = 10.0.0.11
  • 配置/etc/nova/nova.conf[neutron] 的部分。有关更多详细信息,请参阅网络服务安装指南。
  • 在本[vnc]部分中,将 VNC 代理配置为使用控制器节点的管理接口 IP 地址:
[vnc]
enabled = true
# ...
server_listen = $my_ip
server_proxyclient_address = $my_ip
  • 在[glance]部分中,配置图像服务 API 的位置:
[glance]
# ...
api_servers = http://controller:9292
  • 在[oslo_concurrency]部分中,配置锁定路径:
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
  • 在[placement]部分中,配置对 Placement 服务的访问:
[placement]
# ...
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = PLACEMENT_PASS

替换为您为安装 PlacementPLACEMENT_PASS时创建的服务用户选择的密码 注释掉或删除该部分中的任何其他选项。placement[placement]

3)填充 nova-api 数据库:

su -s /bin/sh -c "nova-manage api_db sync" nova
# 忽略此输出中的任何弃用消息

4)注册cell0数据库:

su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

5)创建cell1单元格:

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

6)填充 nova 数据库:

su -s /bin/sh -c "nova-manage db sync" nova

7)验证 nova cell0 和 cell1 是否以正确注册:

su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
+-------+--------------------------------------+----------------------------------------------------+--------------------------------------------------------------+----------+
|  Name |                 UUID                 |                   Transport URL                    |                     Database Connection                      | Disabled |
+-------+--------------------------------------+----------------------------------------------------+--------------------------------------------------------------+----------+
| cell0 | 00000000-0000-0000-0000-000000000000 |                       none:/                       | mysql+pymysql://nova:****@controller/nova_cell0?charset=utf8 |  False   |
| cell1 | f690f4fd-2bc5-4f15-8145-db561a7b9d3d | rabbit://openstack:****@controller:5672/nova_cell1 | mysql+pymysql://nova:****@controller/nova_cell1?charset=utf8 |  False   |
+-------+--------------------------------------+----------------------------------------------------+--------------------------------------------------------------+----------+

完成安装

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

安装和配置计算节点
在计算节点上安装和配置计算服务。该服务支持多个虚拟机管理程序来部署实例或虚拟机 (VM)。为简单起见,此配置在支持虚拟机硬件加速的计算节点上使用 Quick EMUlator (QEMU) 虚拟机管理程序以及基于内核的 VM (KVM) 扩展。在传统硬件上,此配置使用通用 QEMU 虚拟机管理程序。您可以按照这些说明进行少量修改,以通过其他计算节点水平扩展您的环境。

本部分假设您按照本指南中的说明逐步配置第一个计算节点。如果要配置其他计算节点,请按照与示例架构部分中的第一个计算节点类似的方式准备它们。每个额外的计算节点都需要一个唯一的 IP 地址。

安装和配置组件

1)安装软件包:

yum install openstack-nova-compute

2)编辑 /etc/nova/nova.conf 文件并完成以下操作:

  • 在[DEFAULT]部分中,仅启用计算和元数据 API:
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata
  • 在[DEFAULT]部分中,配置RabbitMQ消息队列访问:
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

替换为您为 帐户RABBIT_PASS选择的密码。openstackRabbitMQ

  • 在[api]和[keystone_authtoken]部分中,配置身份服务访问:
[api]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
www_authenticate_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 = nova
password = NOVA_PASS

替换为您在身份服务中NOVA_PASS为用户选择的密码。nova

注释掉或删除该[keystone_authtoken] 部分中的任何其他选项。

  • 在[service_user]部分中,配置服务用户令牌:
[service_user]
send_service_user_token = true
auth_url = https://controller/identity
auth_strategy = keystone
auth_type = password
project_domain_name = Default
project_name = service
user_domain_name = Default
username = nova
password = NOVA_PASS

替换为您在身份服务中NOVA_PASS为用户选择的密码。nova

  • 在[DEFAULT]部分中,配置my_ip选项:
[DEFAULT]
# ...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS

替换MANAGEMENT_INTERFACE_IP_ADDRESS为计算节点上管理网络接口的 IP 地址,对于示例架构中的第一个节点,通常为 10.0.0.31 。

  • 配置/etc/nova/nova.conf[neutron]的部分。 有关更多详细信息,请参阅网络服务安装指南。
  • 在[vnc]部分中,启用并配置远程控制台访问:
[vnc]
# ...
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html

服务器组件监听所有IP地址,代理组件仅监听计算节点的管理接口IP地址。基本 URL 指示您可以使用 Web 浏览器访问该计算节点上的实例的远程控制台的位置。

如果访问远程控制台的Web浏览器位于无法解析controller主机名的主机上,则必须替换 controller为控制节点的管理接口IP地址。

  • 在[glance]部分中,配置图像服务 API 的位置:
[glance]
# ...
api_servers = http://controller:9292
  • 在[oslo_concurrency]部分中,配置锁定路径:
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
  • 在[placement]部分中,配置 Placement API:
[placement]
# ...
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = PLACEMENT_PASS

替换为您在身份服务中PLACEMENT_PASS为用户选择的密码 。placement注释掉该[placement]部分中的任何其他选项。

完成安装

1)确定您的计算节点是否支持虚拟机硬件加速:

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

如果此命令返回值,则您的计算节点支持硬件加速,通常不需要额外的配置。one or greater
如果此命令返回值zero,则您的计算节点不支持硬件加速,您必须配置libvirt为使用 QEMU 而不是 KVM。

  • 编辑文件[libvirt]中的部分/etc/nova/nova.conf如下:
[libvirt]
# ...
virt_type = qemu

2)启动计算服务及其依赖项,并将它们配置为在系统启动时自动启动:

systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service

如果nova-compute服务无法启动,请检查 /var/log/nova/nova-compute.log。该错误消息可能表明控制节点上的防火墙正在阻止访问端口 5672。将防火墙配置为打开控制节点上的端口 5672,并重新启动 计算节点上的服务。AMQP server on controller:5672 is unreachablenova-compute

将计算节点添加到单元数据库
在控制节点上运行以下命令

1)获取管理员凭据以启用仅限管理员的 CLI 命令,然后确认数据库中存在计算主机:

. admin-openrc

openstack compute service list --service nova-compute
+----+-------+--------------+------+-------+---------+----------------------------+
| ID | Host  | Binary       | Zone | State | Status  | Updated At                 |
+----+-------+--------------+------+-------+---------+----------------------------+
| 1  | node1 | nova-compute | nova | up    | enabled | 2017-04-14T15:30:44.000000 |
+----+-------+--------------+------+-------+---------+----------------------------+

2)发现计算机

su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting compute nodes from cell 'cell1': ad5a5985-a719-4567-98d8-8d148aaae4bc
Found 1 computes in cell: ad5a5985-a719-4567-98d8-8d148aaae4bc
Checking host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3
Creating host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3

当您添加新的计算节点时,您必须在控制器节点上运行以注册这些新的计算节点。或者,您可以在以下位置设置适当的间隔 :nova-manage cell_v2 discover_hosts/etc/nova/nova.conf

[scheduler]
discover_hosts_in_cells_interval = 300

验证操作
在控制节点上执行这些命令

1)获取admin凭据以访问仅限管理的 CLI 命令:

. admin-openrc

2)列出服务组件以验证每个进程的成功启动和注册:

openstack compute service list

+----+--------------------+------------+----------+---------+-------+----------------------------+
| Id | Binary             | Host       | Zone     | Status  | State | Updated At                 |
+----+--------------------+------------+----------+---------+-------+----------------------------+
|  1 | nova-scheduler     | controller | internal | enabled | up    | 2016-02-09T23:11:15.000000 |
|  2 | nova-conductor     | controller | internal | enabled | up    | 2016-02-09T23:11:16.000000 |
|  3 | nova-compute       | compute1   | nova     | enabled | up    | 2016-02-09T23:11:20.000000 |
+----+--------------------+------------+----------+---------+-------+----------------------------+

此输出应指示在控制器节点上启用的两个服务组件和在计算节点上启用的一个服务组件。

3)列出身份服务中的 API 端点以验证与身份服务的连接:

下面的端点列表可能会有所不同,具体取决于 OpenStack 组件的安装。

openstack catalog list

+-----------+-----------+-----------------------------------------+
| Name      | Type      | Endpoints                               |
+-----------+-----------+-----------------------------------------+
| keystone  | identity  | RegionOne                               |
|           |           |   public: http://controller:5000/v3/    |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:5000/v3/  |
|           |           | RegionOne                               |
|           |           |   admin: http://controller:5000/v3/     |
|           |           |                                         |
| glance    | image     | RegionOne                               |
|           |           |   admin: http://controller:9292         |
|           |           | RegionOne                               |
|           |           |   public: http://controller:9292        |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:9292      |
|           |           |                                         |
| nova      | compute   | RegionOne                               |
|           |           |   admin: http://controller:8774/v2.1    |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:8774/v2.1 |
|           |           | RegionOne                               |
|           |           |   public: http://controller:8774/v2.1   |
|           |           |                                         |
| placement | placement | RegionOne                               |
|           |           |   public: http://controller:8778        |
|           |           | RegionOne                               |
|           |           |   admin: http://controller:8778         |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:8778      |
|           |           |                                         |
+-----------+-----------+-----------------------------------------+

4)列出图像服务中的图像以验证与图像服务的连接:

openstack image list

+--------------------------------------+-------------+-------------+
| ID                                   | Name        | Status      |
+--------------------------------------+-------------+-------------+
| 9a76d9f9-9620-4f2e-8c69-6c5691fae163 | cirros      | active      |
+--------------------------------------+-------------+-------------+

5)检查单元格和放置 API 是否成功运行以及其他必要的先决条件是否已到位:

nova-status upgrade check

+--------------------------------------------------------------------+
| Upgrade Check Results                                              |
+--------------------------------------------------------------------+
| Check: Cells v2                                                    |
| Result: Success                                                    |
| Details: None                                                      |
+--------------------------------------------------------------------+
| Check: Placement API                                               |
| Result: Success                                                    |
| Details: None                                                      |
+--------------------------------------------------------------------+
| Check: Cinder API                                                  |
| Result: Success                                                    |
| Details: None                                                      |
+--------------------------------------------------------------------+
| Check: Policy Scope-based Defaults                                 |
| Result: Success                                                    |
| Details: None                                                      |
+--------------------------------------------------------------------+
| Check: Policy File JSON to YAML Migration                          |
| Result: Success                                                    |
| Details: None                                                      |
+--------------------------------------------------------------------+
| Check: Older than N-1 computes                                     |
| Result: Success                                                    |
| Details: None                                                      |
+--------------------------------------------------------------------+
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值