Openstack 10 云环境安装

时间:2022-12-11 21:28:03
  • 概述
  • 资源规划
  • Undercloud Installation

  • Overcloud Installation
  • Trouble Shooting
  • 附录

本指南介绍了如何使用 Red Hat OpenStack Platform director 在企业级环境中安装 Red Hat OpenStack Platform 10 的信息。这包括合理规划 OSP 10资源、部署 director 以及通过 director 安装 undercloud 和 overcloud 从而创建一个 OpenStack 环境。

1. 概述

Red Hat OpenStack Platform director 是一个安装和管理完整的 OpenStack 环境的工具组,它主要基于 OpenStack 项目 - TripleO("OpenStack-On-OpenStack" 的缩写)。这个项目利用 OpenStack 组件来安装一个可以完全工作的 OpenStack 环境。它包括了新的 OpenStack 组件来部署并控制裸机系统作为 OpenStack 的节点,这为安装一个完整、稳定、高效的 Red Hat OpenStack Platform 环境提供了一个简洁的方法。

如图所示,Red Hat OpenStack Platform director 使用两个主要概念:Undercloud 和 Overcloud。Undercloud 可以安装并配置 Overcloud。

Openstack 10 云环境安装

1.1 Undercloud

Undercloud 是主要的 director 节点,它是由单一系统(Red Hat)组成的一个 OpenStack 安装,部署和管理 OpenStack 环境(Overcloud)的必备组件。Undercloud 的组件具有以下功能:

  • 环境规划: Undercloud 提供了为用户分配 Red Hat OpenStack Platform 角色(Compute、Controller 和不同的存储节点)的功能。
  • 逻辑系统控制: Undercloud 使用每个节点的智能平台管理界面(Platform Management Interface,简称 IPMI)来进行电源管理控制,并使用一个基于 PXE 的服务来发现硬件的属性来在每个节点上安装 OpenStack。通过这个功能,可以把裸机系统部署为 OpenStack 节点。
  • 编配(Orchestration): Undercloud 提供了一组 YAML 模板来创建一个 OpenStack 环境。

Undercloud 包括以下组件:

  • OpenStack Dashboard(horizon):director 的基于 web 的控制台。
  • OpenStack Bare Metal(ironic)和 OpenStack Compute(nova):管理裸机节点。
  • OpenStack Networking(neutron)和 Open vSwitch:控制裸机节点的网络。
  • OpenStack Image Server(glance):存储写到裸机上的镜像。
  • OpenStack Orchestration(heat)和 Puppet:提供对节点的编配功能,并在 director 把 Overcloud 镜像写入到磁盘后配置节点。
  • OpenStack Telemetry(ceilometer):监控并采集数据。
  • OpenStack Identity(keystone):提供 director 组件的验证和授权功能。
  • MariaDB: director 的后台数据库。
  • RabbitMQ: director 组件的消息队列。

Openstack 10 云环境安装

 1.2 Overcloud

Overcloud 是一个通过 Undercloud 创建的 Red Hat OpenStack Platform 环境,它包括一个或多个以下类型的节点:

  • Controller(控制器):OpenStack 环境提供管理、网络和高可用性服务的节点。一个默认 Controller 节点包括以下组件:horizon、keystone、nova API、neutron server、Open vSwitch、glance、cinder volume、cinder API、swift storage、swift proxy、heat engine、heat API、ceilometer、MariaDB 和 RabbitMQ。Controller 还会使用 Pacemaker 和 Galera 来实现高可用性功能。
  • Compute(计算):OpenStack 环境提供计算资源的节点。随着时间的推移,可以通过添加更多节点来扩展您的环境。一个默认的 Compute 节点包括以下组件:nova Compute、nova KVM、ceilometer agent 和 Open vSwitch。

 

 2. 资源规划

2.1 最小配置节点

  • 一个作为 Red Hat OpenStack Platform director 的主机 。
  • 一个作为 Red Hat OpenStack Platform Compute 节点的主机 。
  • 一个作为 Red Hat OpenStack Platform Controller 节点的主机 。

2.2 网络配置

Provisioning 网络: director 是用来部署和管理 Overcloud 节点的私有网络。Provisioning 网络提供了 DHCP 和 PXE 引导功能来帮助发现在 Overcloud 中使用的主机。这个网络最好使用一个主干(trunk)接口中的原生 VLAN,这样 director 服务器就可以处理 PXE 引导和 DHCP 请求。另外,这个网络也可被用来通过 IPMI 对所有 Overcloud 节点进行电源管理。

External 网络: 远程连接到所有节点的一个独立网络。连接到这个网络的接口需要一个可路由的 IP 地址(静态定义或通过一个外部 DHCP 服务动态分配)。

IPMI 网络:节点电源管理的网络,该网络在安装 Undercloud 前被预先定义。

Internal API 网络:Internal API 网络被用来处理经过 API 、RPC 消息和数据库进行的 OpenStack 服务间的通讯。

Tenant 网络: Neutron 为每个租户提供自己的网络。这可以通过使用 VLAN 隔离(VLAN segregation,每个租户网络都是一个网络 VLAN)实现,也可以使用 VXLAN 或 GRE 通道(tunneling)实现。每个租户网络的网络数据会被相互隔离,并都有一个相关联的 IP 子网。通过网络命名空间,多个租户子网可以使用相同的地址。

Openstack 10 云环境安装

 

3. Undercloud Installation

创建 Red Hat OpenStack Platform 环境的第一步是在 Undercloud 系统上安装 director。这需要进行一些先期的步骤来启用所需的订阅(subscription)和软件仓库(repository)。

3.1 创建 director 安装用户

[root@director ~]# useradd stack

[root@director ~]# passwd stack # specify a password

[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack

[root@director ~]# chmod 0440 /etc/sudoers.d/stack

[root@director ~]# su – stack

3.2 设置主机名

sudo hostnamectl set-hostname undercloud.localdomain

sudo hostnamectl set-hostname --transient manager.example.com

3.3. 注册系统

要安装 RHEL OpenStack Platform installer,首先需要使用 Red Hat Subscription Manager 注册系统,并订阅所需频道。

3.4 安装 director 软件包

sudo yum install -y python-tripleoclient

3.5 修改 sample 配置文件并安装

cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf.

openstack undercloud install

修改配置文件可见 这里 ,出现图中所示提示,即为安装成功 。

Openstack 10 云环境安装

 

4. Overcloud Installation

4.1 安装 Overcloud 镜像

director 需要以下几个磁盘镜像来部署 Overcloud 节点:

  • 一个内省内核和 ramdisk - 用于通过 PXE 引导进行裸机系统内省。
  • 一个实施内核和 ramdisk - 用于系统部署和实施。
  • 一个 Overcloud 内核、ramdisk 和完整镜像 - 写到节点硬盘中的一个基本的 Overcloud 系统。

从 rhosp-director-images 和 rhosp-director-images-ipa 软件包中获得这些镜像:

sudo yum install rhosp-director-images rhosp-director-images-ipa

 把新镜像归档复制到 stack 用户的家目录(/home/stack/images)的 images 目录中,并且获取镜像:

cp /usr/share/rhosp-director-images/overcloud-full-latest-8.0.tar ~/images/.
cp /usr/share/rhosp-director-images/ironic-python-agent-latest-8.0.tar ~/images/.
cd ~/images
for tarfile in *.tar; do tar -xf $tarfile; done
把这些镜像导入到 director:
openstack overcloud image upload --image-path /home/stack/images/

查看镜像列表:

Openstack 10 云环境安装

4.2 注册 Overcloud 节点

在注册节点前,最好设置节点的磁盘为 RAID0 , 并且设置节点的启动顺序为 PXE 引导启动。

注册节点:

openstack overcloud node import ~/instackenv.json
openstack baremetal node list

instackkenv.json 文件中存放的是节点的信息,包括 ip ,用户名,密码等信息,示例如:

{
   "nodes":[
      {
           "pm_type":"pxe_ipmitool",
           "pm_user":"admin",
           "pm_password":"admin",
           "pm_addr":"***"
      },
      {
           "pm_type":"pxe_ipmitool",
           "pm_user":"admin",
           "pm_password":"admin",
           "pm_addr":"***"
      }
   ]
}

 4.3 管理内省节点

for node in $(openstack baremetal node list -c UUID -f value) ; do openstack baremetal node manage $node; done

openstack overcloud node introspect --all-manageable –provide

4.4 设置节点属性

openstack baremetal node set --property capabilities='profile:control,boot_option:local' [uuid]
openstack baremetal node set --property capabilities='profile:compute,boot_option:local' [uuid]

4.5 安装 overcloud 节点

openstack overcloud deploy
--templates -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml
-e ~/templates/network-environment.yaml -e ~/templates/storage-environment.yaml
--control-scale 3 --compute-scale 3 --ceph-storage-scale 3 --control-flavor control
--compute-flavor compute --ceph-storage-flavor ceph-storage --ntp-server pool.ntp.org
--neutron-network-type vxlan --neutron-tunnel-types vxlan

如图所示,即安装成功:

Openstack 10 云环境安装

 

5. Trouble Shooting

5.1 Overcloud deployment failed for "No valid host was found...code:500"

1. Make sure that enough nodes are in available state, not in maintenance mode and not already used by an existing instance:

 openstack baremetal node list

2. Make sure the undercloud is able to connect to the overcloud hypervisors using the power credentials (e.g. ipmi_address, ipmi_username and ipmi_password):

 ipmitool -I lanplus -H 10.43.138.12 -L ADMINISTRATOR -p 6320 -U admin -R 3 -N 5 -P redhat power status

3. Make sure that you have Compute services running and enabled:

openstack compute service list --service nova-compute

4. Make sure the node's properties matches completely with the assigned flavor's properties field. The node's property is populated at the introspection stage:

openstack baremetal node show UUID -c properties

5. If overcloud node can’t inspect, the probably reason is the provisioning network is not correct, need check it again and again.

关于该问题的详细分析见 这里 。

 

6. 附录

6.1 PXE 基础知识

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client端和Server端的网络模式,Client通过网络从远端服务器下载镜像,并支持通过网络启动操作系统,在启动过程中,Client要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol) 协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等。

Openstack 10 云环境安装

6.2 RAID 0 和 RAID 1

RAID,Redundant Arrays of Independent Drivers, 独立磁盘构成的具有冗余能力的阵列。由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。在服务器整个系统中, RAID 被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的 I/O 性能。

 

RAID 0: 把连续的数据分散到多个磁盘上存取,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。如果要做RAID 0,一台服务器至少需要两块硬盘,其读写速度是一块硬盘的两倍。如果有N块硬盘,那么读写速度就是一块硬盘的N倍。虽然读写速度可以提高,但由于没有数据备份功能,因此安全性会低很多。

 

RAID 1: 通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据。同样地,要做RAID1也是至少需要两块硬盘,单读取数据时,一块会被读取,一块会被用作备份数据。其数据安全性就会较高,但是磁盘空间利用率是比较低的。

 

参考文档:

Openstack Docs: https://docs.openstack.org/tripleo-docs/latest/install/installation/installation.html

No valid host was found...code:500 Trouble Shooting: https://www.golinuxhub.com/2018/08/how-to-fix-no-valid-host-was-found-not-enough-available-500.html