部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求...

281
鲲鹏云平台解决方案 部署指南 文档版本 03 发布日期 2020-06-24 华为技术有限公司

Transcript of 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求...

Page 1: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

鲲鹏云平台解决方案

部署指南

文档版本 03

发布日期 2020-06-24

华为技术有限公司

Page 2: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

版权所有 © 华为技术有限公司 2020。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。 商标声明

和其他华为商标均为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 i

Page 3: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

目 录

1 K8S 集群 部署指南(CentOS 7.6).........................................................................................11.1 介绍.............................................................................................................................................................................................. 11.2 环境要求......................................................................................................................................................................................21.3 部署集群......................................................................................................................................................................................41.3.1 配置部署环境..........................................................................................................................................................................51.3.2 手动部署.................................................................................................................................................................................. 51.3.2.1 安装与配置 K8s.................................................................................................................................................................. 51.3.2.2 部署集群............................................................................................................................................................................... 81.3.2.3 运行与验证........................................................................................................................................................................ 101.3.3 自动化工具部署................................................................................................................................................................... 121.3.3.1 自动化部署工具介绍.......................................................................................................................................................121.3.3.2 自动化工具部署过程.......................................................................................................................................................15

2 OpenStack Stein 部署指南(CentOS 7.6)....................................................................... 222.1 介绍............................................................................................................................................................................................ 222.2 环境要求................................................................................................................................................................................... 222.3 配置 yum 源............................................................................................................................................................................. 252.4 安装并验证............................................................................................................................................................................... 252.4.1 基础部分................................................................................................................................................................................ 262.4.2 安装配置并验证 Keystone................................................................................................................................................ 372.4.3 安装配置并验证 Placement............................................................................................................................................. 432.4.4 安装配置并验证 Glance(控制节点).......................................................................................................................... 472.4.5 安装配置并验证 Neutron................................................................................................................................................. 512.4.6 安装配置并验证 Nova....................................................................................................................................................... 612.4.7 安装配置并验证 Cinder..................................................................................................................................................... 702.4.8 安装配置并验证 Swift........................................................................................................................................................ 772.4.9 安装配置并验证 Ceilometer............................................................................................................................................ 902.4.10 安装配置并验证 Heat................................................................................................................................................... 1012.4.11 安装配置并验证 Horizon............................................................................................................................................. 106

3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)...........................................................1103.1 介绍......................................................................................................................................................................................... 1103.2 环境要求................................................................................................................................................................................. 1113.3 配置部署环境........................................................................................................................................................................ 113

鲲鹏云平台解决方案部署指南 目 录

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 ii

Page 4: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

3.4 OpenStack 集成 Ceph........................................................................................................................................................ 1153.4.1 OpenStack 集成 Ceph 块存储...................................................................................................................................... 1153.4.2 OpenStack 集成 Ceph 对象存储.................................................................................................................................. 1193.5 集成验证................................................................................................................................................................................. 122

4 OpenStack Stein 虚机裸机混合部署指南(CentOS 7.6).............................................. 1264.1 介绍......................................................................................................................................................................................... 1264.2 环境要求................................................................................................................................................................................. 1274.3 (可选)Ceph 自动部署.................................................................................................................................................... 1314.3.1 Ceph 集群安装部署..........................................................................................................................................................1314.3.2 配置 Ceph 环境................................................................................................................................................................. 1314.4 OpenStack 虚拟机混合部署安装配置............................................................................................................................ 1334.4.1 基础部分............................................................................................................................................................................. 1334.4.1.1 配置主机名......................................................................................................................................................................1334.4.1.2 配置 yum 源................................................................................................................................................................... 1334.4.1.3 关闭防火墙与 SELinux................................................................................................................................................. 1344.4.1.4 DNS 配置......................................................................................................................................................................... 1344.4.1.5 NTP 配置......................................................................................................................................................................... 1344.4.1.6 系统升级.......................................................................................................................................................................... 1364.4.1.7 安装 OpenStack 客户端.............................................................................................................................................. 1364.4.1.8 安装与配置数据库.........................................................................................................................................................1374.4.1.9 安装消息队列................................................................................................................................................................. 1404.4.1.10 安装 memcached....................................................................................................................................................... 1424.4.1.11 安装 etcd....................................................................................................................................................................... 1424.4.2 安装配置并验证 Keystone............................................................................................................................................. 1434.4.2.1 创建 Keystone 数据库..................................................................................................................................................1434.4.2.2 安装 Keystone................................................................................................................................................................1444.4.2.3 配置 Apache HTTP 服务............................................................................................................................................. 1454.4.2.4 创建域、项目、用户和角色....................................................................................................................................... 1454.4.2.5 验证 Keystone................................................................................................................................................................1474.4.3 安装配置并验证 Placement...........................................................................................................................................1494.4.3.1 创建 Placement 数据库............................................................................................................................................... 1494.4.3.2 配置用户和端点............................................................................................................................................................. 1494.4.3.3 启动服务.......................................................................................................................................................................... 1514.4.3.4 验证 Placement............................................................................................................................................................. 1524.4.4 安装配置并验证 Glance.................................................................................................................................................. 1534.4.4.1 创建 Glance 数据库...................................................................................................................................................... 1534.4.4.2 创建角色和用户............................................................................................................................................................. 1544.4.4.3 安装并配置 Glance....................................................................................................................................................... 1554.4.4.4 验证 Glance.................................................................................................................................................................... 1574.4.5 安装配置并验证 Nova..................................................................................................................................................... 1574.4.5.1 安装 QEMU.................................................................................................................................................................... 1574.4.5.2 安装 libvirt...................................................................................................................................................................... 159

鲲鹏云平台解决方案部署指南 目 录

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 iii

Page 5: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4.4.5.3 创建 Nova 数据库......................................................................................................................................................... 1624.4.5.4 创建角色和用户............................................................................................................................................................. 1624.4.5.5 安装和配置 Nova(控制节点)................................................................................................................................ 1634.4.5.6 安装和配置 Nova(计算节点)..................................................................................................................................... 1654.4.5.7 将计算节点添加到单元数据库................................................................................................................................... 1674.4.5.8 验证 Nova....................................................................................................................................................................... 1674.4.5.9 Nova 常用命令...............................................................................................................................................................1684.4.6 安装配置并验证 Neutron............................................................................................................................................... 1684.4.6.1 创建 Neutron 数据库................................................................................................................................................... 1684.4.6.2 创建服务凭据................................................................................................................................................................. 1694.4.6.3 网络类型.......................................................................................................................................................................... 1694.4.6.4 安装和配置 Neutron(Provider-LinuxBridge)...................................................................................................1704.4.6.5 安装和配置 Neutron(Provider-OVS)................................................................................................................. 1764.4.6.6 安装和配置 Neutron(Self service-LinuxBridge).............................................................................................1824.4.6.7 安装和配置 Neutron(Self service-OVS)........................................................................................................... 1894.4.6.8 验证 Neutron................................................................................................................................................................. 1954.4.7 安装配置并验证 Cinder...................................................................................................................................................1964.4.7.1 创建 Cinder 数据库.......................................................................................................................................................1964.4.7.2 安装和配置 Cinder........................................................................................................................................................ 1984.4.7.3 配置计算使用块存储.................................................................................................................................................... 2004.4.7.4 开启 Cinder 服务........................................................................................................................................................... 2004.4.7.5 安装配置存储节点.........................................................................................................................................................2004.4.7.6 开启 Cinder-Volume 等服务...................................................................................................................................... 2044.4.7.7 验证 Cinder..................................................................................................................................................................... 2044.4.8 安装配置并验证 Horizon................................................................................................................................................2054.4.8.1 安装和配置组件............................................................................................................................................................. 2054.4.8.2 验证操作.......................................................................................................................................................................... 2084.5 OpenStack 裸金属服务安装部署.....................................................................................................................................2084.5.1 裸金属服务概述................................................................................................................................................................ 2084.5.1.1 裸金属服务组件............................................................................................................................................................. 2084.5.1.2 部署架构.......................................................................................................................................................................... 2094.5.1.3 与 OpenStack 其他服务组件的交互........................................................................................................................ 2104.5.1.4 逻辑架构.......................................................................................................................................................................... 2104.5.1.5 关联项目.......................................................................................................................................................................... 2114.5.2 安裝部署裸金属服务........................................................................................................................................................2114.5.2.1 横向扩展裸金属服务节点............................................................................................................................................2114.5.2.2 创建裸金属服务数据库................................................................................................................................................ 2124.5.2.3 安装 ironic 管理组件.................................................................................................................................................... 2134.5.2.4 配置 ironic-api 服务..................................................................................................................................................... 2134.5.2.5 配置 ironic-conductor 服务........................................................................................................................................2154.5.3 Ironic 服务与 Openstack 其他服务集成.....................................................................................................................2184.5.3.1 Ironic 服务与 Identity 身份认证服务集成配置......................................................................................................218

鲲鹏云平台解决方案部署指南 目 录

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 iv

Page 6: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4.5.3.2 Ironic 服务与 Compute 计算服务集成配置........................................................................................................... 2194.5.3.3 Ironic 服务与 Neutron 网络服务集成配置............................................................................................................. 2204.5.3.4 创建 Provisioning Network....................................................................................................................................... 2234.5.3.5 配置裸金属服务 provisoning/cleaning 网络......................................................................................................... 2234.5.3.6 创建、上传用户镜像到 Image 服务.........................................................................................................................2244.5.4 配置裸金属实例驱动........................................................................................................................................................2254.5.4.1 配置 PXE.......................................................................................................................................................................... 2254.5.4.2 配置串口控制台............................................................................................................................................................. 2294.5.4.3 配置裸金属实例管理驱动............................................................................................................................................2294.5.5 (可选)相关组件安装................................................................................................................................................... 2314.5.5.1 ironic-inspector 组件安装...........................................................................................................................................2314.5.5.2 ironic-ui 组件安装......................................................................................................................................................... 2384.6 OpenStack 混合部署虚拟机集成验证............................................................................................................................ 2394.6.1 混合部署 Glance............................................................................................................................................................... 2394.6.2 OpenStack 混合部署计算 AZ 域管理..........................................................................................................................2414.6.3 OpenStack 混合部署 Cinder......................................................................................................................................... 2424.6.4 OpenStack 混合部署 Network..................................................................................................................................... 2444.6.4.1 网络拓扑创建................................................................................................................................................................. 2454.6.4.2 不同 AZ 域虚拟机互通测试........................................................................................................................................ 2454.7 OpenStack 混合部署裸金属服务集成验证................................................................................................................... 2464.7.1 裸金属实例部署先决条件............................................................................................................................................... 2464.7.2 裸金属实例的管理节点注册...........................................................................................................................................2474.7.2.1 裸金属实例管理驱动.................................................................................................................................................... 2474.7.2.2 创建裸金属实例管理节点............................................................................................................................................2494.7.2.3 管理裸金属实例管理节点............................................................................................................................................2544.7.3 裸金属实例发放................................................................................................................................................................ 2584.7.4 裸金属实例删除................................................................................................................................................................ 263

5 容器混部 部署指南(CentOS 7.6).................................................................................... 2645.1 介绍......................................................................................................................................................................................... 2645.2 环境要求................................................................................................................................................................................. 2665.3 安装 Docker...........................................................................................................................................................................2675.3.1 TaiShan 200 服务器(型号 2280)安装 Docker..................................................................................................... 2675.3.2 X86 服务器(RH2288 V5)安装 Docker................................................................................................................... 2675.4 安装 K8s................................................................................................................................................................................. 2675.4.1 TaiShan 200 服务器(型号 2280)安装 K8s............................................................................................................2685.4.2 X86 服务器(RH2288 V5)安装 K8S......................................................................................................................... 2685.4.3 配置主节点......................................................................................................................................................................... 2685.4.3.1 选中 TaiShan 200 服务器(型号 2280)为 master 节点的情况..................................................................... 2685.4.3.2 选中 x86 服务器为 master 节点的情况...................................................................................................................2685.4.4 添加 Flannel 网络插件.................................................................................................................................................... 2685.5 安装 Ceph.............................................................................................................................................................................. 2695.5.1 TaiShan 服务器(型号 2280 V2)安装 Ceph...........................................................................................................269

鲲鹏云平台解决方案部署指南 目 录

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 v

Page 7: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

5.6 验证 K8s+Docker 部署....................................................................................................................................................... 2695.7 故障排除................................................................................................................................................................................. 271

A 修订记录................................................................................................................................. 274

鲲鹏云平台解决方案部署指南 目 录

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 vi

Page 8: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

1 K8S 集群 部署指南(CentOS 7.6)

1.1 介绍

1.2 环境要求

1.3 部署集群

1.1 介绍

简要介绍

Kubernetes(常简称为K8s)是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具,包括Docker等。Kubernetes在设计结构上定义了一系列的构建模块,其目的是为了提供一个可以共同提供部署、维护和扩展应用程序的机制。组成Kubernetes的组件设计概念为松耦合和可扩展的,这样可以使之满足多种不同的工作负载。可扩展性在很大程度上由Kubernetes API提供,此API主要被作为扩展的内部组件以及Kubernetes上运行的容器来使用。

建议的版本

建议的软件版本如表1-1所示。

表 1-1 建议的软件版本

软件 版本 安装方式

Docker docker-18.09.8及以上 推荐使用官方二进制包安装

K8s组件 1.15.2版本及以上 通过下文配置yum源的方式安装

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 1

Page 9: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

1.2 环境要求

硬件要求

硬件要求如表1-2所示。

表 1-2 硬件要求

类别 项目 要求

硬件 服务器 3 * TaiShan 200服务器(型号2280)

CPU 鲲鹏920处理器

网卡 板载电口网卡TM210

操作系统要求

操作系统要求如表1-3所示。

表 1-3 操作系统要求

类型 获取方法

操作系统 操作系统版本

CentOS Linux release 7.6.1810(AltArch)

下载链接: https://isoredirect.centos.org/altarch/7/isos/aarch64/

操作系统软件选择(software selection)

software selection

Server with GUI

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 2

Page 10: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

类型 获取方法

网络需求 ● DockerHub(https://hub.docker.com/)网络可达

● Docker下载地址(https://download.docker.com/linux/static/stable/aarch64/)网络可达

● 集群各个节点之间网络可达, flannel插件代码(https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml)网络可达

须知

搭建K8s集群,每台节点均需要按照文档安装Docker及K8s的全部组件。

集群规划

K8s集群由一个管理节点(Master)与多个计算节点(Node)组成,集群创建、管理工作均在Master节点执行,计算节点通过kubeadm join操作加入集群。因此,Master与Node需要处在同一个网络下,且可以互通。规划的集群组网如图1-1所示。

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 3

Page 11: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

图 1-1 K8s 集群组网

说明

1. Master为集群管理节点,Worker为集群计算节点。

2. 为验证集群搭建功能,至少需要两个节点。如果要验证亲和性调度功能,至少需要三台节点,安装配置工作在每台节点都需要执行。

表 1-4 集群角色和 IP 规划举例

角色 IP举例

Master 192.168.1.11

Worker1 192.168.1.12

Worker2 192.168.1.13

1.3 部署集群

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 4

Page 12: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

1.3.1 配置部署环境

配置华为云 yum 源

考虑到国内的网络情况,手动部署K8s之前,需要配置华为云yum源,操作步骤如下所示:

步骤1 配置华为云yum源。

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]name=Kubernetes baseurl=https://mirrors.huaweicloud.com/kubernetes/yum/repos/kubernetes-el7-aarch64enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=http://mirrors.huaweicloud.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.huaweicloud.com/kubernetes/yum/doc/rpm-package-key.gpgEOF

步骤2 刷新yum缓存。

$ yum makecache

----结束

1.3.2 手动部署

1.3.2.1 安装与配置 K8s说明

在部署K8s集群之前,需要安装Docker。Docker的详细安装方法请参见《Docker 安装指南(CentOS 7.6)》。

安装基础组件

步骤1 启用NET.BRIDGE.BRIDGE-NF-CALL-IPTABLES内核选项。

sysctl -w net.bridge.bridge-nf-call-iptables=1

步骤2 禁用交换分区。

swapoff -a

cp -p /etc/fstab /etc/fstab.bak$(date '+%Y%m%d%H%M%S')

sed -i "s/\/dev\/mapper\/centos-swap/\#\/dev\/mapper\/centos-swap/g" /etc/fstab

步骤3 安装K8s组件。

yum install -y kubelet kubeadm kubectl kubernetes-cni

echo "net.bridge.bridge-nf-call-iptables=1" > /etc/sysctl.d/k8s.conf

步骤4 使能kubelet服务。

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 5

Page 13: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

systemctl enable kubelet

----结束

通过 Docker 下载其他组件

注意

集群内所有节点均需执行以下操作步骤。

步骤1 查看下载节点初始化所需镜像。

执行kubeadm config images list命令,结果如图1-2所示。

图 1-2 镜像列表

说明

K8s所需镜像版本有可能会变动,因此查看列表并以此匹配需要下载的Docker镜像,文档中的镜像版本仅做参考。

步骤2 列出节点初始化所需镜像。

步骤3 从DockerHub上下载镜像。

命令如下所示,命令执行结果如图1-3所示。

docker pull docker.io/mirrorgooglecontainers/kube-apiserver-arm64:v1.15.1

docker pull docker.io/mirrorgooglecontainers/kube-controller-manager-arm64:v1.15.1

docker pull docker.io/mirrorgooglecontainers/kube-scheduler-arm64:v1.15.1

docker pull docker.io/mirrorgooglecontainers/kube-proxy-arm64:v1.15.1

docker pull docker.io/mirrorgooglecontainers/pause-arm64:3.1

docker pull docker.io/mirrorgooglecontainers/etcd-arm64:3.3.10

docker pull docker.io/coredns/coredns:1.3.1

图 1-3 获取镜像

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 6

Page 14: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤4 修改已下载的镜像标签。

docker tag docker.io/mirrorgooglecontainers/kube-apiserver-arm64:v1.15.1k8s.gcr.io/kube-apiserver:v1.15.1

docker tag docker.io/mirrorgooglecontainers/kube-controller-manager-arm64:v1.15.1 k8s.gcr.io/kube-controller-manager:v1.15.1

docker tag docker.io/mirrorgooglecontainers/kube-scheduler-arm64:v1.15.1k8s.gcr.io/kube-scheduler:v1.15.1

docker tag docker.io/mirrorgooglecontainers/kube-proxy-arm64:v1.15.1k8s.gcr.io/kube-proxy:v1.15.1

docker tag docker.io/mirrorgooglecontainers/pause-arm64:3.1 k8s.gcr.io/pause:3.1

docker tag docker.io/mirrorgooglecontainers/etcd-arm64:3.3.10 k8s.gcr.io/etcd:3.3.10

docker tag docker.io/coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

说明

需要将镜像repository修改与kubeadm列出的镜像名保持一致。

步骤5 删除旧镜像。

命令如下所示,命令执行结果如图1-4所示。

docker rmi docker.io/mirrorgooglecontainers/kube-apiserver-arm64:v1.15.1

docker rmi docker.io/mirrorgooglecontainers/kube-controller-manager-arm64:v1.15.1

docker rmi docker.io/mirrorgooglecontainers/kube-scheduler-arm64:v1.15.1

docker rmi docker.io/mirrorgooglecontainers/kube-proxy-arm64:v1.15.1

docker rmi docker.io/mirrorgooglecontainers/pause-arm64:3.1

docker rmi docker.io/mirrorgooglecontainers/etcd-arm64:3.3.10

docker rmi docker.io/coredns/coredns:1.3.1

图 1-4 删除镜像

----结束

卸载 K8s 组件

注意

下列步骤仅仅指导用户如何手动卸载K8s组件,请勿在正常的部署过程中执行。

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 7

Page 15: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤1 清空K8s集群设置。

在卸载K8s组件前,先执行kubeadm reset命令,清空K8s集群设置。

步骤2 卸载管理组件。

yum erase -y kubelet kubectl kubeadm kubernetes-cni

步骤3 删除基础组件镜像。

基础组件通过Docker镜像部署,因此只需要强制删除对应镜像即可卸载。

docker rmi -f k8s.gcr.io/kube-apiserver:v1.15.1

docker rmi -f k8s.gcr.io/kube-controller-manager:v1.15.1

docker rmi -f k8s.gcr.io/kube-scheduler:v1.15.1

docker rmi -f k8s.gcr.io/kube-proxy:v1.15.1

docker rmi -f k8s.gcr.io/pause:3.1

docker rmi -f k8s.gcr.io/etcd:3.3.10

docker rmi -f k8s.gcr.io/coredns:1.3.1

----结束

1.3.2.2 部署集群

配置 hosts 文件

步骤1 执行vim /etc/hosts命令,修改hosts文件。

步骤2 添加集群所有节点的IP及hostname信息,如图1-5所示,按Esc,输入:wq保存退出。

图 1-5 添加集群信息

须知

实际操作中请按照实际的组网填写相关信息。

步骤3 重复步骤1和步骤2,修改每台节点的“/etc/hosts”文件。

----结束

配置主节点

说明

重复搭建集群时,请先执行kubeadm reset命令,清除旧的K8s集群设置。

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 8

Page 16: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤1 在主节点上执行集群初始化命令。

kubeadm init --pod-network-cidr=10.244.0.0/16

说明

1. 计算节点不需要执行集群初始化操作。

2. 如果在主节点初始化的时候提示:

/proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1

可以通过执行echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables命令将其置为1(vim不可修改此文件)。

图 1-6 主节点成功初始化信息

如果打印此信息如图1-6所示,则主节点成功被初始化。

在图1-6中,黄框信息表示在配置物理机上的主节点需要拷贝的配置信息,红框信息表示计算节点加入集群的token命令,请保存该段命令。

说明

--pod-network-cidr 选项用于指定kubernetes网络可以使用的IP地址段,由于后续使用Flannel网络插件,该插件固定使用的IP段为:10.244.0.0/16 。

步骤2 查看集群信息。

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

export KUBECONFIG=/etc/kubernetes/admin.conf

步骤3 在主节点查看集群节点信息。

kubectl get node

步骤4 保存主节点生成的加入集群信息。

该信息在成功初始化主节点后生成并打印,集群信息如下所示:

kubeadm join 192.168.1.235:6443 --token a9020j.vnfgqk7n30p5d9z0 --discovery-token-ca-cert-hash sha256: c465651177b41c545fe20f8dc052b9661a8375afdeac7e7ecf52029fc66a506a(例)

该token命令可以用于二十四小时内计算节点加入集群。

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 9

Page 17: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

须知

集群加入token是随机生成的,在搭建集群时需要使用实际生成的指令。

----结束

配置计算节点

步骤1 删除代理。

如果kubernetes工作节点已经配置了http和https代理,需要执行如下命令删除代理。

export -n http_proxy

export -n https_proxy

步骤2 计算节点加入集群。

1. 在计算节点中执行以下命令用以加入集群。

kubeadm join 192.168.1.235:6443 --token a9020j.vnfgqk7n30p5d9z0 --discovery-token-ca-cert-hash sha256:c465651177b41c545fe20f8dc052b9661a8375afdeac7e7ecf52029fc66a506a

2. 等待一分钟左右,在主节点执行kubectl get nodes命令,查看集群中加入的计算节点,如下所示:[root@centos-1 etc]# kubectl get node NAME STATUS ROLES AGE VERSION centos-1 NotReady master 12h v1.14.3 centos-2 NotReady <none> 11h v1.14.3 centos-3 NotReady <none> 11h v1.14.3

----结束

添加 Flannel 网络插件

步骤1 在主节点上执行如下命令安装Flannel网络插件。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

步骤2 在主节点执行kubectl get node命令,可以看到节点的状态变成了Ready,如下所示:[root@centos-1 etc]# kubectl get node NAME STATUS ROLES AGE VERSION centos-1 Ready master 12h v1.14.3 centos-2 Ready <none> 11h v1.14.3 centos-3 Ready <none> 11h v1.14.3

----结束

1.3.2.3 运行与验证

验证 K8s 集群的部署结果

本章节以部署Nginx服务为例。

步骤1 在Master节点中创建一个名为nginx_deploy.yaml的文件,在其中添加如下内容。

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 10

Page 18: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

apiVersion: apps/v1beta1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 2 # tells deployment to run 2 pods matching the template template: # create pods using pod definition in this template metadata: # unlike pod-nginx.yaml, the name is not included in the meta data as a unique name is # generated from the deployment name labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80

步骤2 创建完毕后执行如下命令,部署节点。

kubectl create -f nginx_deploy.yaml

步骤3 执行pod命令,查看K8s创建这个deployment的过程。

命令如下所示,执行结果如图1-7所示,可以看到有两个新的属于nginx-deployment的pod正在被创建。

kubectl get pod --all-namespaces -o wide

图 1-7 创建 deployment

----结束

删除集群(谨慎操作)

如果不需要使用K8s集群时,可以按本章节操作,删除K8s集群。

步骤1 在集群的节点上执行kubeadm reset命令,清除集群设置。

步骤2 在集群内所有节点上重复kubeadm reset命令,即可删除整个集群。

----结束

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 11

Page 19: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

1.3.3 自动化工具部署

1.3.3.1 自动化部署工具介绍

自动化工具简介

AutoK8SforKunpeng是专门为鲲鹏服务器开发的自动化集群部署的工具,可以支持离线集群部署,支持Windows和Linux多平台运行。支持命令行交互模式部署和一键式自动部署。日志功能可以方便地回溯部署的全过程及失败信息。

自动化K8s部署工具支持多元的部署方式,可以选择组件版本以及工具执行平台。

部署脚本使用python3编写,主机间通信采用SSH方式,意味着脚本执行机可以是Windows系统,Linux系统,可以跟部署机在一起,也可以分开。部署机可以是Linux虚拟机、PC或服务器。

自动化部署可用组网

图 1-8 自动化部署工具可用组网

角色 需求 备注

脚本执行环境

可以支持python3,并且支持第三方库paramiko,不限操作系统或执行平台,与部署机网络可达

运行KunpengAutoKube.py的平台,可以使用部署机或其他网络可达需求满足的平台

部署机 Linux系统,与集群网络可达,离线安装包remoteparts.zip已保存在本地,与集群所有主机已建立SSH信任,可以使用虚拟机

如需要在部署机上制作离线安装包,则需要部署机可以访问互联网,与集群主机采用相同架构

K8s控制节点 修改/etc/hosts文件,包含整个集群信息

集群所有主机需统一使用root用户,设置统一的密码

K8s计算节点

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 12

Page 20: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

工具使用限制

1. 必须使用python3运行,并需要提前安装SSH库paramiko,详见准备脚本执行环境。

2. 脚本执行平台可以是Windows或Linux,但安装包的压缩文件必须放置在对应部署机的工作目录下。

3. 集群所有主机的用户名和密码都需保持一致并明文保存在配置文件中。

4. 文件包传输,需要提前通过ssh-keygen ssh-copy-id建立部署机和被部署机的信任关系。

5. 需要提前修改集群内的所有主机的/etc/hosts文件,添加集群内各个主机的IP和hostname。

6. 网络协议目前只支持Flannel模式。

7. 安装方式为离线安装,各组件版本固定,需要提前通过取包脚本在可以联网的主机上下载。

8. 目前不支持多master。

离线包下载工具使用说明

使用自动化部署工具时需要Docker和K8s离线安装包用于部署,可以使用提供的remoteparts下载工具进行制作。在一个没有安装过K8s组件且可以访问互联网的TaiShan服务器(CentOS7.6)上即可完成下载安装包,如果部署机可以连通网络,可以直接在部署机上下载。

说明

remoteparts下载工具获取地址:https://mirrors.huaweicloud.com/kunpeng/archive/kunpeng_solution/cloud/K8S/remoteparts.zip

使用方法:

步骤1 在服务器中解压该文件,进入remoteparts文件夹,运行packget.sh脚本,如果服务器没有安装Docker,运行脚本的时候需要带参数install。

unzip remoteparts.zip

cd remoteparts

./packget.sh install

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 13

Page 21: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

图 1-9 运行 packget.sh 脚本

步骤2 如果Docker已经安装,执行命令:

unzip remoteparts.zip

cd remoteparts

./packget.sh

步骤3 运行完毕以后,退到上一级文件夹,将remoteparts文件夹重新压缩为remoteparts.zip格式。

zip -r remoteparts.zip remoteparts

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 14

Page 22: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

图 1-10 压缩 remoteparts 文件夹

此时这个remoteparts.zip文件就可以满足自动化部署脚本的要求。

----结束

1.3.3.2 自动化工具部署过程

准备部署机

步骤1 在部署机的工作目录(在环境配置信息里定义)下放置安装包,安装包制作详见离线包下载工具使用说明。

图 1-11 放置安装包

----结束

配置环境信息

在脚本执行环境修改KunpengAutoKube.py第26行的self.params如图1-12。

图 1-12 修改环境配置

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 15

Page 23: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

注意

当前并不支持多主节点集群部署,环境信息请根据实际配置环境修改,配置信息如表1-5。

表 1-5 配置信息

类型 说明

ExecuteIP 部署机IP

MasterList 控制节点列表

NodeList 计算节点列表

username 所有主机统一用户名

password 所有主机统一密码

workpath 部署机安装包存放路径

packpath 被部署机安装包存放路径

docker->static Docker二进制包名

docker->script Docker安装脚本名

说明

自动部署脚本获取地址:https://mirrors.huaweicloud.com/kunpeng/archive/kunpeng_solution/cloud/K8S/remoteparts.zip

准备脚本执行环境

自动部署脚本执行机可以是Windows平台,可以是Linux平台。为了方便,可以用部署机安装。

步骤1 安装python3.7.5。

Python官方下载网址:https://www.python.org/downloads/

Windows安装时选择手动安装,勾选pip,Linux会默认安装pip工具,可以通过包管理器安装Python3。

下面以Windows系统安装为例。

1. 选择可执行安装包。

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 16

Page 24: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

2. 在安装界面选择个性化安装。

3. 在特性选择里,选择安装pip,点击Next,点击Install完成python安装。

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 17

Page 25: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤2 打开PowerShell,用以下命令安装paramiko,即可成功安装paramiko。

pip install paramiko

步骤3 在前置条件安装成功后,即可运行脚本。

----结束

部署集群

说明

根据需要,以下两种方式任选其一。其中一键式部署较快捷,适用于环境稳定的情况,交互式部署适用于不稳定环境,便于快速判断环境可部署到哪个阶段,定位出现问题的位置。

一键式部署:

步骤1 在自动部署脚本KunpengAutoKube.py所在目录,运行python .\KunpengAutoKube.py命令。

步骤2 根据提示输入命令RUN。

----结束

交互式部署:

步骤1 在自动部署脚本KunpengAutoKube.py所在目录,运行python .\KunpengAutoKube.py命令。

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 18

Page 26: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤2 运行脚本后根据提示输入命令DEBUG。

步骤3 在命令交互框每次分别输入: PACTRANS,DOCKERINS, PRESET,IMGLOAD,RPMINS,INIT,JOIN,NET,即可完成部署。

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 19

Page 27: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

表 1-6 命令说明

命令 说明

PACTRANS 将安装包传输至集群内所有主机

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 20

Page 28: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

命令 说明

DOCKERINS 为集群内所有主机安装Docker

PRESET 为集群内所有主机进行必要的系统设置

IMGLOAD 加载部署K8s集群所需的全部Docker镜像

RPMINS 安装K8s管理组件RPM包

INIT 集群主节点进行初始化

JOIN 计算节点加入集群

NET 应用网络策略

----结束

鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 21

Page 29: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

2 OpenStack Stein 部署指南(CentOS 7.6)

2.1 介绍

2.2 环境要求

2.3 配置yum源

2.4 安装并验证

2.1 介绍

简要介绍

OpenStack既是一个社区,也是一个项目和一个开源软件,提供开放源码软件,建立公共和私有云,它提供了一个部署云的操作平台或工具集,其宗旨在于帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云,也为大云、小云提供可扩展的、灵活的云计算。

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

建议的版本

建议使用版本为“Stein”。

OpenStack Stein于2019年4月10发布,是部署 广泛的开源云基础架构软件的第19版。在容器,NFV和边缘计算等用户的驱动下,Stein版本带来了数十种增强功能,包括加强容器功能,为5G、边缘计算和NFV用例提供网络增强功能,改进了资源管理和跟踪功能等。OpenStack正力争为业界提供一个开放、完善、稳定、功能齐全的 优解决方案。

2.2 环境要求

硬件要求

硬件要求如表2-1所示。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 22

Page 30: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

表 2-1 硬件要求

设备类型

主推型号 配置描述

管理节点

TaiShan 200 服务器(型号2280)

CPU 2*鲲鹏920 5250处理器,内存 32GB*4,硬盘 SASHDD 1.2TB *4 ,RAID卡 Avago 3508 *1 ,网卡 1822*1

计算节点

TaiShan 200 服务器(型号2280)

CPU 2*鲲鹏920 5250处理器,内存 32GB*4,硬盘 SASHDD 1.2TB *4 ,RAID卡 Avago 3508 *1 ,网卡 1822*1

存储节点

TaiShan 200 服务器(型号2280)

CPU 2*鲲鹏920 5250处理器,内存 32GB*4,硬盘 SASHDD 1.2TB *4 ,RAID卡 Avago 3508 *1 ,网卡 1822*1

组网环境

本指导书所使用的环境中,测试使用3台TaiShan 200 服务器(型号2280),第一台用作控制节点,第二台用作计算节点,第三台用做对象存储节点。其中,网络节点和控制节点装在一台服务器上,块存储节点则是和计算节点装在同一台服务器上。

三节点实验室组网如图2-1所示。

图 2-1 三节点实验室组网图

安装过程中,需要所有的节点都能连接到外网。在本文档中,使用的网络信息如表2-2所示。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 23

Page 31: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

表 2-2 节点网络规划

节点名称 网卡名称/管理网络IP 网卡名称/业务网络

控制节点(管理节点)

enp125s0f0:172.168.201.11/24

enp3s0

计算节点(块存储节点)

enp125s0f0:172.168.201.12/24

enp3s0

存储节点(对象存储节点)

enp125s0f0:172.168.201.13/24

/

须知

注意,按照本文档部署,控制节点和计算节点需要两个及以上数量的物理网口,存储节点一个及以上的物理网口。这两个物理网卡有各自的作用,不能够相互代替;存储节点需要一个及以上数量的物理网口。安装部署过程中需要连网或者做本地镜像源。

操作系统要求

操作系统要求如表2-3所示。

表 2-3 操作系统要求

项目 版本 下载地址

CentOS 7.6 https://www.centos.org/download/

Kernel 4.14.0 默认包含在操作系统镜像中

软件要求

软件要求如表2-4所示。

表 2-4 软件要求

软件名称 版本

openstackclient 3.18.0

mariadb 10.3.10

rabbitmq 3.6.16

memcached 1.5.6

etcd 3.3.11

keystone 15.0.0

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 24

Page 32: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

软件名称 版本

apache 2.4.6

mod_wsgi 3.4

placement 1.1.0

pip 8.1.2

glance 18.0.0

neutron 14.0.2

openvswitch 2.11.0

QEMU 4.0.0

libvirt 5.6.0

nova 19.0.2

cinder 14.0.1

swift 2.21.0

gnocchi 4.3.2

redis 3.2.8

uwsgi 2.0.16

ceilometer 12.0.0

heat 12.0.0

horizon 15.1.0

2.3 配置 yum 源请在所有节点上配置yum源。

步骤1 使用安装系统自带的CenOS-Base.repo库作为基本库。

ls /etc/yum.repos.d

步骤2 安装centos-release-openstack-stein库。

# yum -y install centos-release-openstack-stein

----结束

2.4 安装并验证

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 25

Page 33: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

2.4.1 基础部分

DNS 配置

在所有节点执行以下操作。

步骤1 修改“/etc/hosts”文件,添加如下信息。

1. 修改hosts文件。

vim /etc/hosts2. 在空白处按“i”添加以下几段命令。

<管理节点网卡ip地址> controller<计算节点网卡ip地址> compute<对象存储节点网卡ip地址> object1

3. 修改完成后按“Esc”退出编辑模式,输入:wq退出并保存。

修改后的hosts文件如下图所示,此步骤需修改所有节点hosts文件。

步骤2 执行如下命令将节点名称改为controller(其余节点改成相对应的名称即可),修改后可使用hostname命令进行检查,反馈正确即可。如图所示:

hostnamectl set-hostname controller

须知

该操作执行完成后,节点名称已经更改,但是需要重新连接登录窗口才会生效。

----结束

NTP 配置

在控制节点执行以下操作。

步骤1 安装组件chrony。

yum -y install chrony

步骤2 在所有节点上设置统一的时间区域,本文中将其设置为亚洲时区,用户可自行定义。

timedatectl set-timezone Asia/Shanghai

步骤3 将控制节点设置为内部NTP Server。

编辑“/etc/chrony.conf”文件,添加“allow 172.168.201.0/24”。

vim /etc/chrony.conf

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 26

Page 34: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

allow 172.168.201.0/24local stratum 10

步骤4 启动chrony服务并将其配置为在系统引导时启动。

systemctl enable chronyd.service

systemctl start chronyd.service

步骤5 启用NTP同步。

timedatectl set-ntp yes

----结束

在计算节点和存储节点执行以下操作。

步骤1 安装chrony。

yum -y install chrony

步骤2 编辑“/etc/chrony.conf”文件,添加“server controller iburst”并且删除或者注释掉其余server的选项。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 27

Page 35: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

vim /etc/chrony.conf

server controller iburst

步骤3 启动chrony 服务并将其配置为在系统引导时启动。

systemctl enable chronyd.service

systemctl restart chronyd.service

步骤4 验证时间同步。

chronyc sources

● 控制节点显示外部的时钟源。

● 计算节点和存储节点 显示controller 为时钟源。/

----结束

系统升级

在所有节点执行以下操作。

步骤1 修改yum配置文件禁用内核升级。

sed -i '$a exclude=kernel*' /etc/yum.conf

sed -i '$a exclude=kernel centos-release' /etc/yum.conf

步骤2 升级系统软件。

yum -y update

----结束

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 28

Page 36: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

安装 OpenStack 客户端

在所有节点执行以下操作。

安装OpenStack客户端。

yum -y install python-openstackclient

安装与配置数据库

在控制节点执行以下操作。

步骤1 安装数据库。

yum -y install mariadb mariadb-server python2-PyMySQL

步骤2 配置数据库。

1. 创建并编辑文件/etc/my.cnf.d/openstack.cnfvim /etc/my.cnf.d/openstack.cnf

2. 添加如下内容:[mysqld]bind-address = 172.168.201.11default-storage-engine = innodbinnodb_file_per_table = onmax_connections = 4096collation-server = utf8_general_cicharacter-set-server = utf8

说明

bind-address 的IP为控制节点的管理IP。

步骤3 启动数据库服务,并设为开机启动。

systemctl enable mariadb.service

systemctl start mariadb.service

步骤4 数据库配置。

mysql_secure_installation

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 29

Page 37: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

初次安装mariadb,默认的root密码是空的,直接按”Enter”即可,然后再为root用户设置密码,例如“123456”,其余的操作按照截图操作即可:

步骤5 修改“/usr/lib/systemd/system/mariadb.service”文件,在文件[Service]下添加如下内容:LimitNOFILE=65535LimitNPROC=65535

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 30

Page 38: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

该章节中的步骤6-步骤8需要在所有的节点都执行。

步骤6 修改 “/etc/security/limits.conf”文件,添加如下内容:* soft nofile 65536* hard nofile 65536

步骤7 修改“/etc/pam.d/login”文件,添加如下内容:session required /lib64/security/pam_limits.so

步骤8 修改“/etc/sysctl.conf”文件,添加如下内容:fs.file-max = 65536

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 31

Page 39: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

并执行 sysctl -p

步骤9 重启服务。

# systemctl daemon-reload

# systemctl restart mariadb.service

步骤10 查询是否更改生效。

1. 进入mysql 数据库。

mysql -u root -p

输入数据库密码:

2. 查看MySQL 大连接数。

show variables like 'max_connections';

3. 查看当前服务器正在使用的连接数。

show global status like 'Max_used_connections';

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 32

Page 40: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4. 执行exit退出数据库。

----结束

安装消息队列

在控制节点执行以下操作。

步骤1 安装rabbitmq-server。

yum -y install rabbitmq-server

步骤2 配置消息队列服务启动和开机启动。

systemctl enable rabbitmq-server.service

systemctl start rabbitmq-server.service

步骤3 添加并配置openstack 用户。

rabbitmqctl add_user openstack <PASSWORD>

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

说明

“PASSWORD”是rabbitmq服务为openstack用户设置的密码(密码不要包含字符"#")。

步骤4 启动rabbitmq-manager 插件。

rabbitmq-plugins enable rabbitmq_management

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 33

Page 41: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

启动了插件后,可以在浏览器访问rabbitmq服务。访问地址 http://<controller_IP>:15672;用户名guest,密码guest。

步骤5 修改rabbitmq默认参数;编辑文件 /usr/lib/systemd/system/rabbitmq-server.service在Service模块下添加如下参数:[Service]LimitNOFILE=16384

步骤6 重启服务。

systemctl daemon-reload

systemctl restart rabbitmq-server

----结束

安装 memcached在控制节点执行以下操作。

步骤1 安装memcached。

yum -y install memcached python-memcached

步骤2 编辑“/etc/sysconfig/memcached”文件。

vim /etc/sysconfig/memcached

步骤3 添加“controller”,配置服务以使用控制器节点的管理IP地址。这是为了通过管理网络启用其他节点的访问。

步骤4 启动服务,并设为开机启动。

systemctl enable memcached.service

systemctl start memcached.service

----结束

安装 etcd在控制节点执行以下操作。

步骤1 安装。

yum -y install etcd

步骤2 编辑“/etc/etcd/etcd.conf”文件,修改如下9项参数,其余的全部注释掉。#[Member]ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="http://172.168.201.11:2380"

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 34

Page 42: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

ETCD_LISTEN_CLIENT_URLS="http://172.168.201.11:2379"ETCD_NAME="controller"#[Clustering]ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.168.201.11:2380"ETCD_ADVERTISE_CLIENT_URLS="http://172.168.201.11:2379"ETCD_INITIAL_CLUSTER="controller=http://172.168.201.11:2380"ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"ETCD_INITIAL_CLUSTER_STATE="new"

说明

注意修改IP地址,所有的地址都是控制节点的管理IP。

步骤3 启动etcd服务。

systemctl enable etcd

systemctl start etcd

----结束

关闭 SELinux在所有节点执行以下操作。

● 临时关闭SELinux:

setenforce 0● 永久关闭SELinux(永久关闭的方法需要重启机器才能生效):

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

开放防火墙端口

在所有节点执行以下操作。

步骤1 开放TCP端口。

firewall-cmd --zone=public --add-port=8082/tcp --permanent

firewall-cmd --zone=public --add-port=8773-8778/tcp --permanent

firewall-cmd --zone=public --add-port=6080-6082/tcp --permanent

firewall-cmd --zone=public --add-port=8386/tcp --permanent

firewall-cmd --zone=public --add-port=5000/tcp --permanent

firewall-cmd --zone=public --add-port=9292/tcp --permanent

firewall-cmd --zone=public --add-port=9191/tcp --permanent

firewall-cmd --zone=public --add-port=9696/tcp --permanent

firewall-cmd --zone=public --add-port=6000-6002/tcp --permanent

firewall-cmd --zone=public --add-port=6200-6202/tcp --permanent

firewall-cmd --zone=public --add-port=8000-8004/tcp --permanent

firewall-cmd --zone=public --add-port=8999/tcp --permanent

firewall-cmd --zone=public --add-port=8777/tcp --permanent

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 35

Page 43: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

firewall-cmd --zone=public --add-port=8989/tcp --permanent

firewall-cmd --zone=public --add-port=80/tcp --permanent

firewall-cmd --zone=public --add-port=8080/tcp --permanent

firewall-cmd --zone=public --add-port=443/tcp --permanent

firewall-cmd --zone=public --add-port=873/tcp --permanent

firewall-cmd --zone=public --add-port=3260/tcp --permanent

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --zone=public --add-port=5672/tcp --permanent

firewall-cmd --zone=public --add-port=6088/tcp --permanent

firewall-cmd --zone=public --add-port=6080/tcp --permanent

firewall-cmd --zone=public --add-port=15672/tcp --permanent

firewall-cmd --zone=public --add-port=323/tcp --permanent

firewall-cmd --zone=public --add-port=11211/tcp --permanent

firewall-cmd --zone=public --add-port=123/tcp --permanent

firewall-cmd --zone=public --add-port=69/tcp --permanent

firewall-cmd --zone=public --add-port=5900-5999/tcp --permanent

firewall-cmd --zone=public --add-port=2379-2380/tcp --permanent

firewall-cmd --zone=public --add-port=6640/tcp --permanent

firewall-cmd --zone=public --add-port=22/tcp --permanent

步骤2 开放UDP端口。

firewall-cmd --zone=public --add-port=6640/udp --permanent

firewall-cmd --zone=public --add-port=8082/udp --permanent

firewall-cmd --zone=public --add-port=8773-8778/udp --permanent

firewall-cmd --zone=public --add-port=6080-6082/udp --permanent

firewall-cmd --zone=public --add-port=8386/udp --permanent

firewall-cmd --zone=public --add-port=5000/udp --permanent

firewall-cmd --zone=public --add-port=9292/udp --permanent

firewall-cmd --zone=public --add-port=9191/udp --permanent

firewall-cmd --zone=public --add-port=9696/udp --permanent

firewall-cmd --zone=public --add-port=6000-6002/udp --permanent

firewall-cmd --zone=public --add-port=6200-6202/udp --permanent

firewall-cmd --zone=public --add-port=8000-8004/udp --permanent

firewall-cmd --zone=public --add-port=8999/udp --permanent

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 36

Page 44: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

firewall-cmd --zone=public --add-port=8777/udp --permanent

firewall-cmd --zone=public --add-port=8989/udp --permanent

firewall-cmd --zone=public --add-port=80/udp --permanent

firewall-cmd --zone=public --add-port=8080/udp --permanent

firewall-cmd --zone=public --add-port=443/udp --permanent

firewall-cmd --zone=public --add-port=873/udp --permanent

firewall-cmd --zone=public --add-port=3260/udp --permanent

firewall-cmd --zone=public --add-port=3306/udp --permanent

firewall-cmd --zone=public --add-port=5672/udp --permanent

firewall-cmd --zone=public --add-port=6088/udp --permanent

firewall-cmd --zone=public --add-port=6080/udp --permanent

firewall-cmd --zone=public --add-port=15672/udp --permanent

firewall-cmd --zone=public --add-port=323/udp --permanent

firewall-cmd --zone=public --add-port=11211/udp --permanent

firewall-cmd --zone=public --add-port=123/udp --permanent

firewall-cmd --zone=public --add-port=69/udp --permanent

firewall-cmd --zone=public --add-port=5900-5999/udp --permanent

firewall-cmd --zone=public --add-port=2379-2380/udp --permanent

firewall-cmd --zone=public --add-port=22/udp --permanent

步骤3 重新加载生效。

firewall-cmd --reload

----结束

2.4.2 安装配置并验证 KeystoneKeystone为OpenStack项目中的其他服务组件提供了身份认证和授权功能。

说明

在控制节点安装配置并验证Keystone。

创建 Keystone 数据库

步骤1 进入数据库。

mysql -u root -p

步骤2 创建Keystone数据库。

CREATE DATABASE keystone;

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 37

Page 45: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤3 授权,允许本地及远程服务器访问mysql,'<PASSWORD>'为数据库用户root的密码。

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIEDBY '<PASSWORD>';

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY'<PASSWORD>';

说明

注意将PASSWORD修改为需要的密码。(openstack的账户密码设置中,不支持特殊符号#;openstack对密码的复杂度没有要求,可以设置为不带特殊字符的密码;若在设置密码时,一定要包含特殊符号,openstack仅支持如下如下特殊字符:& = $ - _ . + ! * ( ) )。

步骤4 退出数据库。

exit

----结束

安装 Keystone

步骤1 安装Keystone包。

yum -y install openstack-keystone httpd mod_wsgi

步骤2 编辑“/etc/keystone/keystone.conf”文件。

在[database]部分添加如下内容:

connection = mysql+pymysql://keystone:<PASSWORD>@controller/keystone

在[token]部分添加如下内容:

provider = fernet

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 38

Page 46: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

PASSWORD为用户为数据库设置的密码。

步骤3 填充Identity服务数据库。

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

步骤4 初始化Fernet密钥存储库。

keystone-manage fernet_setup --keystone-user keystone --keystone-groupkeystone

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

步骤5 引导身份服务。

keystone-manage bootstrap --bootstrap-password <PASSWORD> \

--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

说明

注意修改PASSWORD为用户admin的密码。

----结束

配置 Apache HTTP 服务

步骤1 编辑“/etc/httpd/conf/httpd.conf”文件,配置“ServerName”选项为控制节点。

说明

系统默认注释掉此项,需要找到该项并且修改。

步骤2 创建“/usr/share/keystone/wsgi-keystone.conf”文件的链接。

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

步骤3 启动 Apache HTTP 服务并配置其随系统启动。

systemctl enable httpd.service

systemctl start httpd.service

步骤4 配置管理帐户。

export OS_USERNAME=admin

export OS_PASSWORD=<PASSWORD>

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 39

Page 47: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

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

说明

注意修改PASSWORD为用户admin的密码。

----结束

创建域、项目、用户和角色

步骤1 创建新域。

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

说明

该步骤介绍域的创建方式,默认的域已经在安装Keystone的步骤5创建。

步骤2 创建Service项目。

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

步骤3 创建普通项目myproject(常规任务使用)。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 40

Page 48: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

openstack project create --domain default --description "Demo Project"myproject

步骤4 创建普通用户myuser(普通用户使用)。

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

并创建密码。

步骤5 创建角色。

openstack role create myrole

步骤6 将myrole角色添加到myproject项目和myuser用户。

openstack role add --project myproject --user myuser myrole

----结束

验证 Keystone

步骤1 取消环境变量。

unset OS_AUTH_URL OS_PASSWORD

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 41

Page 49: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤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

说明

密码为自定义,为方便阅读,本文中全部以PASSWORD代替,此处的PASSWORD为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

步骤4 创建openstack 客户端环境脚本。

1. 创建并编辑admin-openrc文件。

vim /etc/keystone/admin-openrc并添加如下内容:

export OS_PROJECT_DOMAIN_NAME=Defaultexport OS_USER_DOMAIN_NAME=Defaultexport OS_PROJECT_NAME=adminexport OS_USERNAME=adminexport OS_PASSWORD=<PASSWORD>export OS_AUTH_URL=http://controller:5000/v3export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2

2. 创建和编辑demo-openrc文件。

vim /etc/keystone/demo-openrc

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 42

Page 50: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

并添加以下内容:

export OS_PROJECT_DOMAIN_NAME=Defaultexport OS_USER_DOMAIN_NAME=Defaultexport OS_PROJECT_NAME=myprojectexport OS_USERNAME=myuserexport OS_PASSWORD=<PASSWORD>export OS_AUTH_URL=http://controller:5000/v3export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2

说明

admin-openrc 为admin 用户的登录凭据。

步骤5 使用脚本。

source /etc/keystone/admin-openrc

openstack token issue

----结束

2.4.3 安装配置并验证 PlacementPlacement提供用于跟踪资源提供者清单和用法的HTTP API。

说明

在控制节点安装配置并验证Placement。

创建 Placement 数据库

步骤1 进入数据库。

mysql -u root -p

步骤2 创建数据库。

CREATE DATABASE placement;

步骤3 授予对数据库的适当访问权限,<PASSWORD>设置为数据库访问密码。

GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost'IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY'<PASSWORD>';

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 43

Page 51: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤4 退出数据库访问客户端。

----结束

配置用户和端点

步骤1 使用admin用户登录OpenStack命令行。

source /etc/keystone/admin-openrc

步骤2 创建用户placement并设置密码。

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

步骤3 添加角色。

openstack role add --project service --user placement admin

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

步骤4 创建Placement API服务端点。

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

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

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

步骤5 安装和配置组件。

1. 安装Placement安装包。

yum -y install openstack-placement-api2. 编辑“/etc/placement/placement.conf”文件并完成以下操作:

a. 在该[placement_database]部分中,配置数据库访问,PASSWPRD修改为为数据库设置的密码。[placement_database]connection = mysql+pymysql://placement:<PASSWORD>@controller/placement

b. 在[api]和[keystone_authtoken]部分中,配置身份服务访问。[api]auth_strategy = keystone[keystone_authtoken]auth_url = http://controller:5000/v3memcached_servers = controller:11211auth_type = password

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 44

Page 52: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

project_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = placementpassword = <PASSWORD>

说明

PASSWORD修改为keystone用户密码。

步骤6 修改配置文件“/etc/httpd/conf.d/00-placement-api.conf”。

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

在ErrorLog /var/log/placement/placement-api.log下面添加:

<Directory /usr/bin><IfVersion >= 2.4>Require all granted</IfVersion><IfVersion < 2.4>Order allow,denyAllow from all</IfVersion></Directory>

----结束

启动服务

步骤1 填充Placement数据库。

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

重启httpd服务。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 45

Page 53: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

systemctl restart httpd

----结束

验证 Placement

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 执行状态检查以确保一切正常。

placement-status upgrade check

步骤3 安装pip。

yum install -y epel-release

yum install -y python-pip

rm -rf /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel-testing.repo

步骤4 针对展示位置API运行以下命令:

1. 安装osc-placement插件。

pip install osc-placement2. 列出可用的资源类和特征。

openstack --os-placement-api-version 1.2 resource class list --sort-columnnameopenstack --os-placement-api-version 1.6 trait list --sort-column name

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 46

Page 54: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

2.4.4 安装配置并验证 Glance(控制节点)Glance是存储和检索虚拟机实例磁盘镜像。在虚拟机实例运行期间,Nova计算服务组件可以使用此服务。

说明

在控制节点安装配置并验证Glance。

创建 Glance 数据库

步骤1 进入数据库。

mysql -u root -p

步骤2 创建glance数据库。

CREATE DATABASE glance;

步骤3 授予glance访问权限,PASSWORD为数据库设置的访问密码,执行完成后用exit命令退出数据库。

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY'<PASSWORD>';

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY'<PASSWORD>';

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 47

Page 55: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

创建角色和用户

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 创建glance用户。

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

步骤3 将角色添加到项目和用户。

openstack role add --project service --user glance admin

步骤4 创建服务实体。

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

步骤5 创建Image服务API端点。

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

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 48

Page 56: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

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

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

----结束

安装并配置 Glance

步骤1 yum安装。

yum -y install openstack-glance

步骤2 编辑“/etc/glance/glance-api.conf”文件。

1. 在该[database]部分中,配置数据库访问。[database]connection = mysql+pymysql://glance:<PASSWORD>@controller/glance

说明

PASSWORD为glance数据库的密码。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 49

Page 57: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

2. 在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问。[keystone_authtoken]www_authenticate_uri = http://controller:5000auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = serviceusername = glancepassword = <PASSWORD>[paste_deploy]flavor = keystone

说明

PASSWORD为glance数据库的密码。

3. 在该[glance_store]部分中,配置本地文件系统存储和映像文件的位置。[glance_store]stores = file,httpdefault_store = filefilesystem_store_datadir = /var/lib/glance/images/

步骤3 编辑“/etc/glance/glance-registry.conf”文件并完成以下操作:

1. 在该[database]部分中,配置数据库访问。[database]connection = mysql+pymysql://glance:<PASSWORD>@controller/glance

2. 在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问。[keystone_authtoken]www_authenticate_uri = http://controller:5000auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = serviceusername = glancepassword = <PASSWORD>[paste_deploy]flavor = keystone

步骤4 填充Image服务数据库。

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

步骤5 启动Image服务并将其配置为在系统引导时启动。

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

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

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 50

Page 58: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

验证 Glance

步骤1 使用admin凭据。

source /etc/keystone/admin-openrc

步骤2 下载镜像。

进入 “/var/lib/glance/images”

wget https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-aarch64-disk.img

步骤3 上传镜像到glance。

openstack image create "cirros" --file cirros-0.4.0-aarch64-disk.img --disk-format qcow2 --container-format bare --public

步骤4 确认上传的镜像和属性。

openstack image list

----结束

2.4.5 安装配置并验证 NeutronNeutron为其他服务组件提供网络连接功能,如Nova计算服务组件。同时,提供API给用户使用。支持多个网络供应商的设备和技术。

须知

OpenStack 网络方式比较多,当前采用的是Provider网络;部署方式又可以分为(1、LinuxBridge 2、OVS),实际部署时只需要选取LinuxBridge或者OVS之一即可。

创建 Neutron 数据库

在控制节点执行以下操作。

步骤1 以root身份连接数据库。

mysql -u root -p

步骤2 创建Neutron数据库。

CREATE DATABASE neutron;

步骤3 授予适当访问权限,PASSWORD为用户为数据库设置的密码。

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \

IDENTIFIED BY '<PASSWORD>';

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 51

Page 59: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \

IDENTIFIED BY '<PASSWORD>';

说明

PASSWORD为Neutron数据库的密码。

步骤4 退出数据库。

exit

----结束

创建服务凭据

在控制节点执行以下操作。

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 创建Neutron用户。

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

步骤3 将admin角色添加到Neutron用户。

openstack role add --project service --user neutron admin

步骤4 创建Neutron服务实体。

openstack service create --name neutron --description "OpenStackNetworking" network

步骤5 创建网络服务器API端点。

openstack endpoint create --region RegionOne network public http://controller:9696

openstack endpoint create --region RegionOne network internal http://controller:9696

openstack endpoint create --region RegionOne network admin http://controller:9696

----结束

安装和配置 Neutron(Provider-LinuxBridge-控制节点)

在Provider-LinuxBridge-控制节点执行以下操作。

步骤1 安装组件。

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

步骤2 编辑配置文件/etc/neutron/neutron.conf。

1. 配置数据库访问。[database]connection = mysql+pymysql://neutron:<PASSWORD>@controller/neutron

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 52

Page 60: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

2. 修改[DEFAULT]模块内容。[DEFAULT]core_plugin = ml2service_plugins =transport_url = rabbit://openstack:<PASSWORD>@controllerauth_strategy = keystonenotify_nova_on_port_status_changes = truenotify_nova_on_port_data_changes = true

说明

service_plugins为赋空值。

PASSWORD为openstack rabbit用户的密码。

3. 配置身份访问。[keystone_authtoken]www_authenticate_uri = http://controller:5000auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = <PASSWORD>

4. 配置[nova]模块参数。[nova]auth_url = http://controller:5000auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = novapassword = <PASSWORD>

说明

配置文件中默认没有该模块,需要新增

5. 配置锁定路径。[oslo_concurrency]lock_path = /var/lib/neutron/tmp

步骤3 编辑ML2插件/etc/neutron/plugins/ml2/ml2_conf.ini。

1. 启用flat和vlan网络。

默认是没有的,需要新建 [ml2]、[ml2_type_flat]和[securitygroup]。[ml2]type_drivers = flat,vlantenant_network_types =mechanism_drivers = linuxbridgeextension_drivers = port_security

说明

tenant_network_types为赋空值。

2. 将Provider配置为flat网络。[ml2_type_flat]flat_networks = provider

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 53

Page 61: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

3. 将vlan配置为flat网络。[ml2_type_vlan]network_vlan_ranges = provider

4. 启用ipset提高安全效率。[securitygroup]enable_ipset = true

步骤4 配置Linux桥代理,编辑“/etc/neutron/plugins/ml2/linuxbridge_agent.ini”文件。

1. 将Provider虚拟网络映射到物理网络。[linux_bridge]physical_interface_mappings = provider:enp3s0

说明

此处的provider网络使用的是enp3s0网口,部署时根据实际情况调整。这里不是管理网络所用的物理网卡,是为业务网络准备的网卡。 参考“组网环境”。

2. 禁用vxlan覆盖网络。[vxlan]enable_vxlan = false

3. 启用安全组并配置Linux网桥iptables防火墙驱动程序,然后保存并退出。[securitygroup]enable_security_group = truefirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

4. 确保您的Linux操作系统内核支持网桥过滤器。

在“/etc/sysctl.conf”中添加如下配置后,保存并退出:

net.bridge.bridge-nf-call-iptables = 1net.bridge.bridge-nf-call-ip6tables = 1

5. 运行以下命令,添加网桥过滤器:

modprobe br_netfiltersysctl -psed -i '$amodprobe br_netfilter' /etc/rc.local

步骤5 配置DHCP代理。

编辑“/etc/neutron/dhcp_agent.ini”文件,新增如下配置后保存并退出。

[DEFAULT]interface_driver = linuxbridgedhcp_driver = neutron.agent.linux.dhcp.Dnsmasqenable_isolated_metadata = true

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 54

Page 62: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤6 配置元数据代理。

vim /etc/neutron/metadata_agent.ini

配置元数据主机和共享秘钥。

[DEFAULT]nova_metadata_host = controllermetadata_proxy_shared_secret = <PASSWORD>

步骤7 配置Computer 服务以使用Networking服务。

vim /etc/nova/nova.conf

配置访问参数,启用元数据代理并配置密码。

[neutron]# ...url = http://controller:9696auth_url = http://controller:5000auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = <PASSWORD>service_metadata_proxy = truemetadata_proxy_shared_secret = <PASSWORD>

说明

执行该操作前,请确保已经安装了Nova。

步骤8 创建网络初始化。

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

步骤9 填充数据库。

su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \

--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

步骤10 启动网络服务并配置为系统引导时启动。

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

----结束

安装和配置 Neutron(Provider-LinuxBridge-计算节点)

在Provider-LinuxBridge-计算节点执行以下操作。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 55

Page 63: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤1 安装组件。

yum -y install openstack-neutron-linuxbridge ebtables ipset

步骤2 配置公共组件,编辑/etc/neutron/neutron.conf文件。

1. 在该[database]部分中,注释掉所有connection选项(默认已注释),因为计算节点不直接访问数据库。

2. 配置RabbitMQ 消息队列访问。[DEFAULT]transport_url = rabbit://openstack:<PASSWORD>@controller

3. 配置身份访问服务。[DEFAULT]auth_strategy = keystone[keystone_authtoken]www_authenticate_uri = http://controller:5000auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = <PASSWORD>

4. 配置锁定路径。[oslo_concurrency]lock_path = /var/lib/neutron/tmp

步骤3 配置Linux桥代理,编辑“/etc/neutron/plugins/ml2/linuxbridge_agent.ini”文件,添加以下3项。

1. 提供者虚拟网络映射到提供者物理网络接口。[linux_bridge]physical_interface_mappings = provider:enp3s0

说明

此处的provider网络使用的是enp3s0网口,部署时根据实际情况调整。这里不是管理网络所用的物理网卡,是为业务网络准备的网卡。 参考组网环境”。

2. 禁用vxlan覆盖网络。[vxlan]enable_vxlan = false

3. 启用安全组并配置Linux网桥iptables防火墙驱动程序。[securitygroup]enable_security_group = truefirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

步骤4 确保您的Linux操作系统内核支持网桥过滤器。

在“/etc/sysctl.conf”中添加:

net.bridge.bridge-nf-call-iptables = 1net.bridge.bridge-nf-call-ip6tables = 1

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 56

Page 64: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

:

步骤5 运行以下命令,添加网桥过滤器。

sysctl -p/

sed -i '$amodprobe br_netfilter' /etc/rc.local

步骤6 启动Linux网桥代理并将其配置为在系统引导时启动。

systemctl enable neutron-linuxbridge-agent.service

systemctl start neutron-linuxbridge-agent.service

----结束

安装和配置 Neutron(Provider-OVS-控制节点)

在Provider-OVS-控制节点执行下操作。

步骤1 安装组件。

yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch ebtables

步骤2 修改系统配置文件“/etc/sysctl.conf”。

1. 添加如下内容:net.ipv4.ip_forward=1net.ipv4.conf.all.rp_filter=0net.ipv4.conf.default.rp_filter=0

2. 使配置生效。

sysctl -p

步骤3 编辑配置文件/etc/neutron/neutron.conf。

1. 配置数据库访问。[database]connection = mysql+pymysql://neutron:<PASSWORD>@controller/neutron

2. 启用ML2插件,禁用其他插件。[DEFAULT]core_plugin = ml2service_plugins =transport_url = rabbit://openstack:<PASSWORD>@controllerauth_strategy = keystonenotify_nova_on_port_status_changes = truenotify_nova_on_port_data_changes = true

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 57

Page 65: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

3. 配置身份访问。[keystone_authtoken]www_authenticate_uri = http://controller:5000auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = <PASSWORD>

4. 配置nova参数。

默认是没有的,需要新建 [nova]。[nova]auth_url = http://controller:5000auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = novapassword = <PASSWORD>

5. 配置锁定路径。[oslo_concurrency]lock_path = /var/lib/neutron/tmp

步骤4 编辑ML2插件“/etc/neutron/plugins/ml2/ml2_conf.ini”。

1. 启用flat和vlan网络。

默认是没有的,需要新建 [ml2]、[ml2_type_flat]、[ml2_type_vlan]和[securitygroup]。[ml2]type_drivers = flat,vlantenant_network_types =mechanism_drivers = openvswitchextension_drivers = port_security[ml2_type_flat]flat_networks = provider[ml2_type_vlan]network_vlan_ranges = provider[securitygroup]enable_ipset = true

步骤5 配置DHCP代理。

编辑“/etc/neutron/dhcp_agent.ini”文件。

[DEFAULT]dhcp_driver = neutron.agent.linux.dhcp.Dnsmasqenable_isolated_metadata = trueinterface_driver = openvswitchforce_metadata = true

步骤6 配置元数据代理。

编辑“/etc/neutron/metadata_agent.ini”。

配置元数据主机和共享秘钥。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 58

Page 66: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

[DEFAULT]nova_metadata_host = controllermetadata_proxy_shared_secret = <PASSWORD>

说明

PASSWORD为Neutron数据库的密码。

步骤7 创建网络初始化。

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

步骤8 填充数据库。

su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \

--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

步骤9 启动网络服务并配置为系统引导时启动。

systemctl enable neutron-server.service \

neutron-openvswitch-agent.service neutron-dhcp-agent.service \

neutron-metadata-agent.service

systemctl start neutron-server.service \

neutron-openvswitch-agent.service neutron-dhcp-agent.service \

neutron-metadata-agent.service

----结束

安装和配置 Neutron(Provider-OVS-计算节点)

在Provider-OVS-计算节点执行以下操作。

步骤1 安装组件。

yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch ebtables ipset

步骤2 修改系统配置文件 /etc/sysctl.conf。

1. 添加如下内容:net.ipv4.ip_forward=1net.ipv4.conf.all.rp_filter=0net.ipv4.conf.default.rp_filter=0

2. 使配置生效 。sysctl -p

步骤3 配置公共组件,编辑/etc/neutron/neutron.conf文件。

1. 配置RabbitMQ 消息队列访问。[DEFAULT]transport_url = rabbit://openstack:<PASSWORD>@controller

说明

PASSWORD为rabbitmq服务为openstack用户设置的密码。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 59

Page 67: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

2. 配置身份访问服务。[DEFAULT]auth_strategy = keystone[keystone_authtoken]www_authenticate_uri = http://controller:5000auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = <PASSWORD>

说明

PASSWORD为Neutron数据库的密码。

3. 配置锁定路径。[oslo_concurrency]lock_path = /var/lib/neutron/tmp

步骤4 配置openstack agent,编辑文件“/etc/neutron/plugins/ml2/openvswitch_agent.ini”,新增 [linux_openvswitch]、[vxlan]、[ovs]和[securitygroup]。[linux_openvswitch]physical_interface_mappings = provider:enp3s0[vxlan]enable_vxlan = false[ovs]bridge_mappings = provider:br-provider[securitygroup]enable_security_group=truefirewall_driver = iptables_hybrid

步骤5 配置DHCP代理,编辑“/etc/neutron/dhcp_agent.ini”文件。[DEFAULT]interface_driver = openvswitchenable_isolated_metadata = trueforce_metadata = true

步骤6 配置metadata代理,编辑“/etc/neutron/metadata_agent.ini”文件。[DEFAULT]nova_metadata_host = controllermetadata_proxy_shared_secret = <PASSWORD>

说明

PASSWORD为Neutron数据库的密码。

步骤7 启动OVS代理并将其配置为在系统引导时启动。

systemctl enable neutron-openvswitch-agent.service neutron-dhcp-agent.service \

neutron-metadata-agent.service

systemctl start neutron-openvswitch-agent.service neutron-dhcp-agent.service \

neutron-metadata-agent.service

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 60

Page 68: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤8 创建ovs provider。

ovs-vsctl add-br br-provider

ovs-vsctl add-port br-provider enp3s0

----结束

验证 Neutron

在控制节点执行以下操作。

步骤1 列出成功启动的Neutron代理。

openstack network agent list

----结束

表 2-5 Neutron 常用命令

命令行 功能描述

openstack network create --share --external \--provider-physical-network provider \--provider-network-type flat enp3s0

创建共享虚拟网络

openstack subnet create --networkprovider \--allocation-poolstart=172.168.204.50,end=172.168.204.100 \--dns-nameserver 8.8.8.8 --gateway172.168.204.1 \--subnet-range 172.168.204.0/24subnet1

创建自网络

说明该命令中的参数意为:网络名称为subnet1,DHCP范围为172.168.204.50-172.168.204.100,DNS 为8.8.8.8,网关为172.168.204.1,网络为172.168.204.0/24。

openstack network list 查看当前网络

openstack subnet list 查看子网络

openstack port list 查看网络端口

2.4.6 安装配置并验证 NovaNova管理OpenStack项目中虚拟机实例计算资源的全部生命周期,包括创建、调度和结束。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 61

Page 69: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

安装 QEMU

在计算节点执行以下操作。

步骤1 安装依赖包。

yum -y install glib2-devel zlib-devel pixman-devel libaio-devel

步骤2 下载源码。

● 在线:wget https://download.qemu.org/qemu-4.0.0.tar.xz

● 离线:在可以访问互联网的机器上访问https://download.qemu.org/qemu-4.0.0.tar.xz下载源码后拷贝至目标机器。

步骤3 编译安装。

1. 解压并进入QEMU目录。

tar -xvf qemu-4.0.0.tar.xzcd qemu-4.0.0

2. 配置安装。

./configure --enable-rbd --enable-linux-aio

make -j 50make install

步骤4 添加lib库。

sed -i '$ainclude /usr/local/lib' /etc/ld.so.conf

步骤5 使配置生效。

ldconfig

----结束

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 62

Page 70: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

安装 libvirt

说明

使用的是 libvirt-5.6版本。

在计算节点执行以下操作。

步骤1 安装edk2。

在线:wget https://www.kraxel.org/repos/firmware.repo -O /etc/yum.repos.d/firmware.repo

yum -y install edk2.git-aarch64

步骤2 安装依赖包。

yum -y install gnutls-devel libnl-devel libxml2-devel yajl-devel device-mapper-devel libpciaccess-devel

步骤3 安装libvirt-5.6.0 (源码编译安装方式)。

1. 下载源码。

wget https://libvirt.org/sources/libvirt-5.6.0-1.fc30.src.rpm -O /root/libvirt-5.6.0-1.fc30.src.rpm

2. 编译,按照如下步骤依次完成:

cd /root/

rpm -i libvirt-5.6.0-1.fc30.src.rpm

yum -y install libxml2-devel readline-devel ncurses-devel libtasn1-develgnutls-devel libattr-devel libblkid-devel augeas systemd-devellibpciaccess-devel yajl-devel sanlock-devel libpcap-devel libnl3-devellibselinux-devel dnsmasq radvd cyrus-sasl-devel libacl-devel parted-develdevice-mapper-devel xfsprogs-devel librados2-devel librbd1-develglusterfs-api-devel glusterfs-devel numactl-devel libcap-ng-devel fuse-devel netcf-devel libcurl-devel audit-libs-devel systemtap-sdt-devel nfs-utils dbus-devel scrub numad qemu-img rpm-build

rpmbuild -ba ~/rpmbuild/SPECS/libvirt.spec

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 63

Page 71: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

如果出错则可以使用另外一种方法编译:

rpmbuild --rebuild /root/libvirt-5.6.0-1.fc30.src.rpm

3. 安装。

yum install -y /root/rpmbuild/RPMS/aarch64/*.rpm4. 重启libvirt服务。

systemctl restart libvirtd

步骤4 修改配置文件“/etc/libvirt/qemu.conf”。

1. 添加AAVMF内容。nvram = ["/usr/share/AAVMF/AAVMF_CODE.fd:/usr/share/AAVMF/AAVMF_VARS.fd","/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2.git/aarch64/vars-template-pflash.raw"]

2. 检验libvirt和QEMU版本。

virsh version

其中libvirt 版本为5.6.0,如果安装了QEMU,则QEMU应该为 4.0.0,否则为默认版本2.12.0。

----结束

创建 Nova 数据库

在控制节点执行以下操作。

步骤1 使用root用户连接数据库。

mysql -u root -p

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 64

Page 72: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤2 创建nova,nova_api,nova_cell0数据库。

CREATE DATABASE nova_api;

CREATE DATABASE nova;

CREATE DATABASE nova_cell0;

步骤3 授予对数据库的适当访问权限。

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \

IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \

IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \

IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \

IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \

IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \

IDENTIFIED BY '<PASSWORD>';

步骤4 退出数据库。

exit

----结束

创建角色和用户

在控制节点执行以下操作。

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 创建nova用户。

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

步骤3 为nova用户创建密码。

步骤4 将admin角色添加到nova用户。

openstack role add --project service --user nova admin

步骤5 创建nova实体。

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

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 65

Page 73: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤6 创建compute API服务端点。

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

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

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

----结束

安装和配置 Nova(控制节点)

在控制节点执行以下操作。

步骤1 安装组件。

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

步骤2 配置Nova, 编辑“/etc/nova/nova.conf”文件。

1. 启用计算和元数据API,配置RabbitMQ消息队列访问以及启用网络服务的支持。[DEFAULT]enabled_apis = osapi_compute,metadatatransport_url = rabbit://openstack:<PASSWORD>@controllermy_ip = 172.168.201.11use_neutron = truefirewall_driver = nova.virt.firewall.NoopFirewallDriverallow_resize_to_same_host = true

说明

my_ip为控制节点的管理IP,PASSWORD为rabbitmq服务为用户openstack设置的密码。

2. 配置数据库访问。[api_database]connection = mysql+pymysql://nova:<PASSWORD>@controller/nova_api[database]connection = mysql+pymysql://nova:<PASSWORD>@controller/nova

3. 配置身份服务访问。[api]auth_strategy = keystone[keystone_authtoken]auth_url = http://controller:5000/v3memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = serviceusername = novapassword = <PASSWORD>

4. 配置“/etc/nova/nova.conf”的[neutron]部分,启用元数据代理并配置密码。[neutron]url = http://controller:9696auth_url = http://controller:5000auth_type = passwordproject_domain_name = defaultuser_domain_name = default

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 66

Page 74: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

region_name = RegionOneproject_name = serviceusername = neutronpassword = <PASSWORD>service_metadata_proxy = truemetadata_proxy_shared_secret = <PASSWORD>

5. 配置VNC代理以使用控制器节点的管理接口IP地址。[vnc]enabled = trueserver_listen = $my_ipserver_proxyclient_address = $my_ipnovncproxy_host=0.0.0.0novncproxy_port=6080novncproxy_base_url=http://172.168.21.11:6080/vnc_auto.html

说明

注意将172.168.21.11改成相应的控制节点管理IP。

6. 配置Image服务API的位置。[glance]api_servers = http://controller:9292

7. 配置锁定路径。[oslo_concurrency]lock_path = /var/lib/nova/tmp

8. 配置对Placement服务的访问。[placement]region_name = RegionOneproject_domain_name = Defaultproject_name = serviceauth_type = passworduser_domain_name = Defaultauth_url = http://controller:5000/v3username = placementpassword = <PASSWORD>

9. 配置元数据代理。

a. 编辑“/etc/neutron/metadata_agent.ini”,新增如下配置:[DEFAULT]nova_metadata_host = controllermetadata_proxy_shared_secret = <PASSWORD>

b. 填充nova-api数据库。su -s /bin/sh -c "nova-manage api_db sync" novasu -s /bin/sh -c "nova-manage cell_v2 map_cell0" novasu -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" novasu -s /bin/sh -c "nova-manage db sync" nova

10. 验证cell0和cell1是否正确注册。

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

11. 启动compute服务并设置为系统引导时启动。

# systemctl enable openstack-nova-api.service openstack-nova-scheduler.service \

openstack-nova-conductor.service openstack-nova-novncproxy.service

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 67

Page 75: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

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

----结束

安装和配置 Nova(计算节点)

在计算节点执行以下操作。

步骤1 安装组件。

yum -y install openstack-nova-compute

步骤2 编辑文件“/etc/nova/nova.conf”。

1. 启用计算和元数据API。[DEFAULT]enabled_apis = osapi_compute,metadatatransport_url = rabbit://openstack:<PASSWORD>@controllermy_ip = 172.168.201.12use_neutron = truefirewall_driver = nova.virt.firewall.NoopFirewallDriver

说明

此处的my_ip 设置为 计算节点的管理IP。

2. 配置身份服务访问。[api]auth_strategy = keystone[keystone_authtoken]auth_url = http://controller:5000/v3memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = serviceusername = novapassword = <PASSWORD>

3. 配置“/etc/nova/nova.conf”的[neutron]部分,在 [neutron]部分,添加如下信息。[neutron]url = http://controller:9696auth_url = http://controller:5000auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = <PASSWORD>

4. 启用并配置远程控制台访问。[vnc]enabled = trueserver_listen = 0.0.0.0server_proxyclient_address = $my_ipnovncproxy_base_url = http://controller:6080/vnc_auto.htmlvncserver_proxyclient_address = $my_ip

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 68

Page 76: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

5. 配置Image服务API的位置。[glance]api_servers = http://controller:9292

6. 配置锁定路径。[oslo_concurrency]lock_path = /var/lib/nova/tmp

7. 配置Placement API。[placement]region_name = RegionOneproject_domain_name = Defaultproject_name = serviceauth_type = passworduser_domain_name = Defaultauth_url = http://controller:5000/v3username = placementpassword = <PASSWORD>

8. 在[libvirt]模块添加如下信息。virt_type = kvm

步骤3 启动Compute服务及其依赖项,并将它们配置为在系统引导时自动启动。

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

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

----结束

将计算节点添加到单元数据库

在控制节点执行以下操作。

步骤1 使用admin用户登录OpenStack命令行。

source /etc/keystone/admin-openrc

步骤2 查看数据库的主机。

openstack compute service list --service nova-compute

步骤3 发现主机。

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

注意添加新计算节点时,需要在控制器节点执行以下命令,以注册这些新计算节点。

nova-manage cell_v2 discover_hosts

或者,在以下位置设置适当的间隔 ,让控制节点周期性发现计算节点。

vim /etc/nova/nova.conf

[scheduler]discover_hosts_in_cells_interval = 300

----结束

验证 Nova

在控制节点执行以下操作。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 69

Page 77: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 列出服务组件。

openstack compute service list

步骤3 列出Identity服务中的API端点以验证与Identity服务的连接。

openstack catalog list

步骤4 列出Glance服务中的Image。

openstack image list

步骤5 检查单元格和放置API是否正常运行以及其他必要的先决条件是否到位。

nova-status upgrade check

----结束

Nova 常用命令

命令行 功能描述

openstack server create --flavorm1.nano --image cirros \--nic net-id=provider --security-groupdefault \--key-name mykey provider-vm

创建虚拟机实例

openstack server start provider-vm 启动实例

openstack server list 查看所有实例

openstack server stop vm1 关闭实例

openstack server delete vm1 删除所选的实例

2.4.7 安装配置并验证 CinderCinder块存储,为虚拟机实例提供持有化存储。它的存在简化了块存储设备的创建和管理。

创建 Cinder 数据库

在控制节点执行以下操作。

步骤1 以root用户访问数据库。

mysql -u root -p

步骤2 创建Cinder数据库,并授予对Cinder数据库的适当访问权限。

CREATE DATABASE cinder;

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 70

Page 78: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY'<PASSWORD>';

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY'<PASSWORD>';

exit

说明

为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处PASSWORD为cinder数据库的密码。

步骤3 使用admin用户登录OpenStack 命令行,创建服务凭据和Cinder用户。

source /etc/keystone/admin-openrc

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

步骤4 将admin角色添加到Cinder用户。

openstack role add --project service --user cinder admin

步骤5 创建cinderv2和cinderv3服务实体。

openstack service create --name cinderv2 --description "OpenStack BlockStorage" volumev2

openstack service create --name cinderv3 --description "OpenStack BlockStorage" volumev3

说明

Cinder服务需要创建两个服务实体。

步骤6 创建Block Storage服务API端点。

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

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 71

Page 79: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

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

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

openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(project_id\)s

openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(project_id\)s

openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(project_id\)s

----结束

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 72

Page 80: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

安装和配置 Cinder

在控制节点执行以下操作。

步骤1 安装软件包。

yum -y install openstack-cinder

步骤2 编辑配置文件“/etc/cinder/cinder.conf”。

vim /etc/cinder/cinder.conf

并且完成以下操作:

1. 配置数据库访问,替换<PASSWORD>为合适的密码。[database]connection = mysql+pymysql://cinder:<PASSWORD>@controller/cinder

2. 配置RabbitMQ消息队列访问,替换<PASSWORD>为合适的密码。[DEFAULT]transport_url = rabbit://openstack:<PASSWORD>@controller

3. 配置身份服务访问,替换<PASSWORD>为cinder在Identity服务中为用户选择的密码。

DEAULT模块:

[DEFAULT]auth_strategy = keystone

keystone_authtoken模块:[keystone_authtoken]www_authenticate_uri = http://controller:5000auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = cinderpassword = <PASSWORD>

4. 配置my_ip选项以使用控制器节点的管理接口IP地址。[DEFAULT]my_ip = 172.168.201.11

5. 配置锁定路径。[oslo_concurrency]lock_path = /var/lib/cinder/tmp

步骤3 填充块存储数据库。

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

说明

请忽略此处输出中的任何abandoned弃用消息,由于OpenStack项目迭代较快,在Stein版本已经弃用了某些内容,这个命令行会输出一些弃用信息,属于正常的输出。

----结束

配置计算使用块存储

在控制节点执行以下操作。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 73

Page 81: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤1 编辑“/etc/nova/nova.conf”配置文件。

vim /etc/nova/nova.conf

步骤2 完成以下操作:[cinder]os_region_name = RegionOne

----结束

完成控制节点的安装

在控制节点执行以下操作。

步骤1 重新启动Compute API服务。

systemctl restart openstack-nova-api.service

步骤2 启动Block Storage服务并将其配置为在系统引导时启动。

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

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

步骤3 验证控制节点的安装,state为up,即为状态正常。

openstack volume service list

----结束

安装和配置 LVM 卷

在存储节点执行以下操作。

步骤1 安装LVM包。

yum -y install lvm2 device-mapper-persistent-data

说明

一些发行版默认包含LVM,不需要安装。

步骤2 启动LVM元数据服务并将其配置为在系统引导时启动。

systemctl enable lvm2-lvmetad.service

systemctl start lvm2-lvmetad.service

步骤3 创建LVM物理卷“/dev/sdb”。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 74

Page 82: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

pvcreate /dev/sdb

步骤4 创建LVM卷组“cinder-volumes”。

vgcreate cinder-volumes /dev/sdb

----结束

在计算节点执行以下操作。

步骤1 编辑配置文件“/etc/lvm/lvm.conf”。

vim /etc/lvm/lvm.conf

步骤2 在devices部分中,添加一个接受“/dev/sdb”设备的过滤器并拒绝所有其他设备。devices {filter = [ "a/sda/", "a/sdb/", "r/.*/"]

说明

filter过滤器阵列中的每个项目开头为“a”或者“r”,用于接受或用于拒绝某个设备,如果存储节点在操作系统磁盘上使用LVM,则还必须将关联的系统盘设备添加到过滤器。同样,如果计算节点在操作系统磁盘上使用LVM,也需要修改这些节点上“/etc/lvm/lvm.conf”文件中的过滤器以包括操作系统磁盘。例如,如果“/dev/sda”设备包含操作系统,则需要将“sda”添加到过滤器。

----结束

安装和配置存储节点

在存储节点执行以下操作。

步骤1 安装软件包。

yum -y install openstack-cinder targetcli python-keystone

步骤2 编辑配置文件“/etc/cinder/cinder.conf”。

vim /etc/cinder/cinder.conf

并完成以下操作:

1. 配置数据库访问。[database]connection = mysql+pymysql://cinder:<PASSWORD>@controller/cinder

说明

<PASSWORD>为Block Storage数据库选择的密码。

2. 配置RabbitMQ 消息队列访问。[DEFAULT]transport_url = rabbit://openstack:<PASSWORD>@controller

说明

<PASSWORD>为openstack帐户选择的密码RabbitMQ。

3. 配置身份服务访问。[DEFAULT]auth_strategy = keystone[keystone_authtoken]www_authenticate_uri = http://controller:5000

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 75

Page 83: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = cinderpassword = <PASSWORD>

说明

<PASSWORD>为Cinder在Identity服务中为用户选择的密码 。

4. 配置my_ip为为存储节点上管理网络接口的IP地址。[DEFAULT]my_ip = 172.168.201.12

5. 在本[lvm]节中,使用LVM驱动程序,cinder-volumes卷组,iSCSI协议和相应的iSCSI服务配置LVM后端。[lvm]volume_driver = cinder.volume.drivers.lvm.LVMVolumeDrivervolume_group = cinder-volumestarget_protocol = iscsitarget_helper = lioadm

说明

如果该[lvm]部分不存在,请先进行创建。

6. 启用LVM后端。[DEFAULT]enabled_backends = lvm

7. 配置Image服务API的位置。[DEFAULT]glance_api_servers = http://controller:9292

8. 配置锁定路径。[oslo_concurrency]lock_path = /var/lib/cinder/tmp

----结束

完成安装

在存储节点系以下操作。

启动Block Storage卷服务(包括其依赖项)并将其配置为在系统引导时启动。

systemctl enable openstack-cinder-volume.service target.service

systemctl start openstack-cinder-volume.service target.service

验证

在控制节点执行以下操作。

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 列出服务组件以验证每个进程的成功启动。

openstack volume service list

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 76

Page 84: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

Cinder 常用命令

命令行 功能描述

openstack volume create --size 1volume1

创建存储卷

openstack volume list 显示存储卷列表

openstack volume create VOLNAME-OR-ID

删除所选存储卷

openstack volume snapshot create --volume SNAPSHOT-VOLNAMEVOLNAME-OR-ID

创建存储卷快照

openstack volume snapshot list 显示存储卷快照

nova volume-attach VM_IDVOLUME_ID /dev/vdb

虚拟机挂载卷

nova volume-detach VM_IDVOLUME_ID

虚拟机卸载卷

2.4.8 安装配置并验证 SwiftSwift对象存储,负责存储和检索随机非结构化的数据对象。因为多副本和弹性扩展等特点,使其具备高度容错功能。与传统的数据存储目录树形式有区别,对象和文件数据保存在多个驱动器中。

配置名称解析

在控制节点和存储节点执行以下操作。

步骤1 将第一个存储节点的主机名称设置为object1。

hostnamectl set-hostname object1

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 77

Page 85: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

如果有多个对象存储节点则依次设置为object2,object3…本实例中仅仅使用一个对象存储节点。

步骤2 编辑配置文件“vim /etc/hosts”文件,需要包含以下内容:172.168.201.11 controller172.168.201.12 compute172.168.201.13 object1

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

----结束

先决环境配置(控制节点)

在控制节点执行以下操作。

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 创建Identity Service凭据。

1. 创建swift用户。

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

2. 将admin角色添加到swift用户。

openstack role add --project service --user swift admin3. 创建swift服务实体。

openstack service create --name swift --description "OpenStack ObjectStorage" object-store

步骤3 创建对象存储服务API端点。

openstack endpoint create --region RegionOne object-store public http://controller:8080/v1/AUTH_%\(project_id\)s

openstack endpoint create --region RegionOne object-store internal http://controller:8080/v1/AUTH_%\(project_id\)s

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 78

Page 86: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

openstack endpoint create --region RegionOne object-store admin http://controller:8080/v1

----结束

安装和配置组件(控制节点)

在控制节点执行以下操作。

步骤1 安装包。

yum -y install openstack-swift-proxy python-swiftclient python-keystoneclientpython-keystonemiddleware memcached

步骤2 从对象存储源存储库获取代理服务配置文件。

curl -o /etc/swift/proxy-server.conf https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/proxy-server.conf-sample --insecure

步骤3 编辑配置文件“/etc/swift/proxy-server.conf”并完成以下操作:

vim /etc/swift/proxy-server.conf

1. 配置绑定端口,用户和配置目录。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 79

Page 87: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

[DEFAULT]bind_port = 8080user = swiftswift_dir = /etc/swift

2. 在该[pipeline:main]部分中,删除“tempurl”和“tempauth”模块并添加“authtoken”和“keystoneauth”模块。[pipeline:main]pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server

3. 在该[app:proxy-server]部分中,启用自动帐户创建。[app:proxy-server]use = egg:swift#proxyaccount_autocreate = True

4. 在该[filter:keystoneauth]部分中,配置操作员角色。[filter:keystoneauth]use = egg:swift#keystoneauthoperator_roles = admin,user

5. 在该[filter:authtoken]部分中,配置身份服务访问(注释掉或删除该[filter:authtoken] 部分中的任何其他配置项)。[filter:authtoken]paste.filter_factory = keystonemiddleware.auth_token:filter_factorywww_authenticate_uri = http://controller:5000auth_url = http://controller:5000/v3/memcached_servers = controller:11211auth_type = passwordproject_domain_id = defaultuser_domain_id = defaultproject_name = serviceusername = swiftpassword = <PASSWORD>delay_auth_decision = True

说明

为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处密码是在先决环境配置(控制节点)中,为swift用户创建的密码。

6. 在该[filter:cache]部分中,配置memcached位置。[filter:cache]use = egg:swift#memcachememcache_servers = controller:11211

----结束

先决环境配置(存储节点)

在存储节点执行以下操作。

步骤1 安装支持实用程序包。

# yum -y install xfsprogs rsync

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 80

Page 88: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤2 格式化“/dev/sdb”和“/dev/sdc”设备的XFS。

# mkfs.xfs /dev/sdb

# mkfs.xfs /dev/sdc

说明

sdb 和sdc不能是系统盘,是需要另外添加的硬盘。

步骤3 创建挂载点目录结构。

# mkdir -p /srv/node/sdb

# mkdir -p /srv/node/sdc

步骤4 编辑“/etc/fstab”文件并将以下内容添加到其中。

/dev/sdb /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 2

/dev/sdc /srv/node/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 2

步骤5 安装设备。

# mount /dev/sdb /srv/node/sdb

# mount /dev/sdc /srv/node/sdc

步骤6 创建或编辑“/etc/rsyncd.conf”文件以包含以下内容。uid = swiftgid = swiftlog file = /var/log/rsyncd.logpid file = /var/run/rsyncd.pidaddress = 172.168.201.13[account]max connections = 2path = /srv/node/read only = Falselock file = /var/lock/account.lock[container]max connections = 2path = /srv/node/

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 81

Page 89: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

read only = Falselock file = /var/lock/container.lock[object]max connections = 2path = /srv/node/read only = Falselock file = /var/lock/object.lock

说明

address为存储节点的管理网络的IP地址。

步骤7 启动rsyncd服务并将其配置为在系统引导时启动。

# systemctl enable rsyncd.service

# systemctl start rsyncd.service

----结束

安装和配置组件(存储节点)

在存储节点执行以下操作。

步骤1 如果没有安装过,需要先安装OpenStack Stein包,否则下一步无法安装。

1. 清空yum缓存。

yum clean all2. 安装OpenStack Stein软件包。

yum -y install centos-release-openstack-stein

步骤2 安装Swift软件包。

# yum -y install openstack-swift-account openstack-swift-container \

openstack-swift-object

步骤3 从对象存储源存储库获取记帐,容器和对象服务配置文件。

# curl -o /etc/swift/account-server.conf https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/account-server.conf-sample

# curl -o /etc/swift/container-server.conf https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/container-server.conf-sample

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 82

Page 90: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

# curl -o /etc/swift/object-server.conf https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/object-server.conf-sample

步骤4 编辑配置文件“/etc/swift/account-server.conf”并完成以下操作:

vim /etc/swift/account-server.conf

1. 在本[DEFAULT]节中,配置绑定IP地址,绑定端口,用户,配置目录和挂载点目录。[DEFAULT]bind_ip = 172.168.201.13bind_port = 6202user = swiftswift_dir = /etc/swiftdevices = /srv/nodemount_check = True

说明

bind_ip为存储节点上管理网络的IP地址。

2. 在该[pipeline:main]部分中,启用相应的模块。[pipeline:main]pipeline = healthcheck recon account-server

3. 在该[filter:recon]部分中,配置recon(米)缓存目录。[filter:recon]use = egg:swift#reconrecon_cache_path = /var/cache/swift

步骤5 编辑配置文件“/etc/swift/container-server.conf”并完成以下操作:

vim /etc/swift/container-server.conf

1. 在本[DEFAULT]节中,配置绑定IP地址,绑定端口,用户,配置目录和挂载点目录。[DEFAULT]bind_ip = 172.168.201.13bind_port = 6201user = swiftswift_dir = /etc/swiftdevices = /srv/nodemount_check = True

说明

bind_ip为存储节点上管理网络的IP地址。

2. 在该[pipeline:main]部分中,启用相应的模块。[pipeline:main]pipeline = healthcheck recon container-server

3. 在该[filter:recon]部分中,配置recon缓存目录。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 83

Page 91: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

[filter:recon]use = egg:swift#reconrecon_cache_path = /var/cache/swift

步骤6 编辑配置文件“/etc/swift/object-server.conf”并完成以下操作:

vim /etc/swift/object-server.conf

1. 在本[DEFAULT]节中,配置绑定IP地址,绑定端口,用户,配置目录和挂载点目录。[DEFAULT]bind_ip = 172.168.201.13bind_port = 6200user = swiftswift_dir = /etc/swiftdevices = /srv/nodemount_check = True

说明

bind_ip为存储节点上管理网络的IP地址。

2. 在该[pipeline:main]部分中,启用相应的模块。[pipeline:main]pipeline = healthcheck recon object-server

3. 在该[filter:recon]部分中,配置recon(米)缓存和锁定目录。[filter:recon]use = egg:swift#reconrecon_cache_path = /var/cache/swiftrecon_lock_path = /var/lock

4. 确保安装点目录结构的正确所有权。# chown -R swift:swift /srv/node# sudo restorecon -R /srv

5. 创建recon目录并设置其权限。# mkdir -p /var/cache/swift# chown -R root:swift /var/cache/swift# chmod -R 775 /var/cache/swift

----结束

创建账户环

在控制节点执行以下操作。

步骤1 切换到/etc/swift目录。

# cd /etc/swift

步骤2 创建基本account.builder文件。

# swift-ring-builder account.builder create 10 2 1

步骤3 将每个存储节点添加到环中。

swift-ring-builder account.builder add --region 1 --zone 1 --ip 172.168.201.13--port 6202 --device sdb --weight 100

swift-ring-builder account.builder add --region 1 --zone 1 --ip 172.168.201.13--port 6202 --device sdc --weight 100

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 84

Page 92: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

此处--ip 后面接的是存储节点的管理IP。

步骤4 验证账户环环内容。

swift-ring-builder account.builder

步骤5 重新平衡环。

swift-ring-builder account.builder rebalance

----结束

创建容器环

在控制节点执行以下操作。

步骤1 切换到“/etc/swift”目录。

# cd /etc/swift

步骤2 创建基本container.builder文件。

# swift-ring-builder container.builder create 10 2 1

步骤3 将每个存储节点添加到环中。

swift-ring-builder container.builder add --region 1 --zone 1 --ip 172.168.201.13--port 6201 --device sdb --weight 100

swift-ring-builder container.builder add --region 1 --zone 1 --ip 172.168.201.13--port 6201 --device sdc --weight 100

说明

此处--ip 后面接的是存储节点的管理IP。

步骤4 验证容器环内容。

#swift-ring-builder container.builder

步骤5 重新平衡环。

#swift-ring-builder container.builder rebalance

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 85

Page 93: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

创建对象环

在控制节点执行以下操作。

步骤1 切换到“/etc/swift”目录。

cd /etc/swift

步骤2 创建基本“object.builder”文件。

#swift-ring-builder object.builder create 10 2 1

步骤3 将每个存储节点添加到环中:

swift-ring-builder object.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6200 --device sdb --weight 100

swift-ring-builder object.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6200 --device sdc --weight 100

说明

此处--ip 后面接的是存储节点的管理IP。

步骤4 验证对象环内容。

#swift-ring-builder object.builder

步骤5 重新平衡环。

# swift-ring-builder object.builder rebalance

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 86

Page 94: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

分配环配置文件

在控制节点执行以下操作。

将生成的副本“account.ring.gz”、“container.ring.gz”以及 “object.ring.gz”文件复制到“/etc/swift”每个存储节点和运行代理服务的任何其他节点上目录。

修改配置

在控制节点执行以下操作。

步骤1 “/etc/swift/swift.conf“从Object Storage源存储库获取文件。

# curl -o /etc/swift/swift.conf \

https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/swift.conf-sample

步骤2 编辑配置文件“/etc/swift/swift.conf”并完成以下操作:

vim /etc/swift/swift.conf

1. 在该[swift-hash]部分中,为您的环境配置哈希路径前缀和后缀。[swift-hash]swift_hash_path_suffix = <PASSWORD>swift_hash_path_prefix = <PASSWORD>

说明

此处的两个<PASSWORD>可以换成任意唯一字符串。

2. 在该[storage-policy:0]部分中,配置默认存储策略。[storage-policy:0]name = Policy-0default = yes

步骤3 将swift.conf文件复制到每个存储节点上的“/etc/swift”目录下面,如果有多个控制节点,也需要复制到其他控制节点上的“/etc/swift”目录下。

----结束

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 87

Page 95: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

启动服务

在控制节点和存储节点执行以下操作。

步骤1 在所有节点上,确保配置目录的正确所有权。

# chown -R root:swift /etc/swift

步骤2 在控制器节点和运行代理服务的任何其他节点上,启动对象存储代理服务(包括其依赖项)并将其配置为在系统引导时启动。

# systemctl enable openstack-swift-proxy.service memcached.service

# systemctl start openstack-swift-proxy.service memcached.service

步骤3 在存储节点上,启动对象存储服务并将其配置为在系统引导时启动。

# systemctl enable openstack-swift-account.service openstack-swift-account-auditor.service \

openstack-swift-account-reaper.service openstack-swift-account-replicator.service

# systemctl start openstack-swift-account.service openstack-swift-account-auditor.service \

openstack-swift-account-reaper.service openstack-swift-account-replicator.service

# systemctl status openstack-swift-account.service openstack-swift-account-auditor.service \

openstack-swift-account-reaper.service openstack-swift-account-replicator.service

# systemctl enable openstack-swift-container.service \

openstack-swift-container-auditor.service openstack-swift-container-replicator.service \

openstack-swift-container-updater.service

# systemctl start openstack-swift-container.service \

openstack-swift-container-auditor.service openstack-swift-container-replicator.service \

openstack-swift-container-updater.service

# systemctl status openstack-swift-container.service \

openstack-swift-container-auditor.service openstack-swift-container-replicator.service \

openstack-swift-container-updater.service

# systemctl enable openstack-swift-object.service openstack-swift-object-auditor.service \

openstack-swift-object-replicator.service openstack-swift-object-updater.service

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 88

Page 96: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

# systemctl start openstack-swift-object.service openstack-swift-object-auditor.service \

openstack-swift-object-replicator.service openstack-swift-object-updater.service

# systemctl status openstack-swift-object.service openstack-swift-object-auditor.service \

openstack-swift-object-replicator.service openstack-swift-object-updater.service

----结束

验证

在控制节点执行以下操作。

步骤1 使用admin用户登录OpenStack 命令行。

#source /etc/keystone/admin-openrc

步骤2 显示服务状态。

# swift stat

步骤3 创建container1容器。

openstack container create container1

步骤4 将测试文件上传到container1容器。

openstack object create container1 FILE

步骤5 列出container1容器中的文件。

openstack object list container1

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 89

Page 97: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤6 从container1容器下载测试文件。

openstack object save container1 FILE

----结束

Swift 常用命令

命令行 功能描述

swift stat 显示swift服务状态

openstack container createcontainer1

创建存储容器

openstack object createcontainer1 FILE

上传文件到存储容器

openstack container deletecontainer1

删除存储容器

openstack object listcontainer1

列出容器中的文件

openstack object savecontainer1 FILE

从容器中下载文件

2.4.9 安装配置并验证 CeilometerCeilometer监控和计算OpenStack项目中各服务组件的费用、标准、扩展和统计。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 90

Page 98: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

先决环境配置

在控制节点执行以下操作。

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 创建服务凭据。

1. 创建ceilometer用户,并为该用户设置密码。

openstack user create --domain default --password-prompt ceilometer2. 将admin角色添加到ceilometer用户。

openstack role add --project service --user ceilometer admin

步骤3 在Keystone注册Gnocchi服务。

1. 创建gnocchi用户,并设置密码。

openstack user create --domain default --password-prompt gnocchi2. 创建gnocchi服务实体。

openstack service create --name gnocchi --description "Metric Service"metric

3. 将admin角色添加到gnocchi用户。

openstack role add --project service --user gnocchi admin

步骤4 创建度量服务API端点。

openstack endpoint create --region RegionOne metric public http://controller:8041

openstack endpoint create --region RegionOne metric internal http://controller:8041

openstack endpoint create --region RegionOne metric admin http://controller:8041

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 91

Page 99: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

安装配置 Gnocchi在控制节点执行以下操作。

步骤1 安装Gnocchi包。

yum -y install openstack-gnocchi-api openstack-gnocchi-metricd python-gnocchiclient

步骤2 为Gnocchi服务创建数据库。

说明

本文中将涉及的密码均设置为“<PASSWORD>”,请用户根据环境实际情况进行修改。

mysql -u root -pCREATE DATABASE gnocchi;GRANT ALL PRIVILEGES ON gnocchi.* TO 'gnocchi'@'localhost' IDENTIFIED BY '<PASSWORD>';GRANT ALL PRIVILEGES ON gnocchi.* TO 'gnocchi'@'%' IDENTIFIED BY '<PASSWORD>';exit

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 92

Page 100: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤3 执行命令vim /etc/gnocchi/gnocchi.conf编辑配置文件/etc/gnocchi/gnocchi.conf,并且修改以下配置:

1. 配置Gnocchi功能参数,log地址以及对接redis url端口。[DEFAULT]debug = trueverbose = truelog_dir = /var/log/gnocchiparallel_operations = 4coordination_url = redis://controller:6379

2. 配置Gnocchi工作端口信息,host为控制节点管理IP[api]auth_mode = keystonehost = 192.168.21.1port = 8041uwsgi_mode = http-socketmax_limit = 1000

3. 配置元数据默认存储方式。[archive_policy]default_aggregation_methods = mean,min,max,sum,std,count

4. 配置允许的访问来源。[cors]allowed_origin = http://controller:3000

5. 配置数据库检索。[indexer]url = mysql+pymysql://gnocchi:<PASSWORD>@controller/gnocchi

6. 配置ceilometer测试指标。[metricd]workers = 4metric_processing_delay = 60greedy = truemetric_reporting_delay = 120metric_cleanup_delay = 300

7. 配置Gnocchi存储方式以及位置,在这种配置下将其存储到本地文件系统。[storage]coordination_url = redis://controller:6379file_basepath = /var/lib/gnocchidriver = file

8. 配置Keystone认证信息,该模块需要另外添加。[keystone_authtoken]region_name = RegionOnewww_authenticate_uri = http://controller:5000auth_url = http://controller:5000/v3memcached_servers = controller:11211

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 93

Page 101: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = gnocchipassword = <PASSWORD>service_token_roles_required = true

----结束

安装配置 redis在控制节点执行以下操作。

步骤1 安装redis server。

# yum -y install redis

步骤2 编辑配置文件“/etc/redis.conf”,修改以下配置:

vim /etc/redis.conf

1. 配置redis可以在后台启动。daemonize yes

2. 配置redis关闭安全模式。protected-mode no

3. 配置redis绑定控制节点主机。bind 192.168.21.11

步骤3 以配置好的redis.conf启动redis server service。

# redis-server /etc/redis.conf

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 94

Page 102: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

redis服务不会开机自启动,可以将上述命令放入开机启动项里,否则每次关机需要手动启动,方法如下:

1. 编辑配置文件“/etc/rc.d/rc.local”。

vim /etc/rc.d/rc.local

并新增以下内容:redis-server /etc/redis.conf

2. 保存退出后,赋予“/etc/rc.d/rc.local”文件执行权限。

# chmod +x /etc/rc.d/rc.local

----结束

安装 uWSGI 插件

在控制节点执行以下操作。

安装uWSGI插件。

# yum -y install uwsgi-plugin-common uwsgi-plugin-python2 uwsgi

完成 Gnocchi 的安装

在控制节点执行以下操作。

步骤1 初始化Gnocchi。

# gnocchi-upgrade

步骤2 赋予“/var/lib/gnocchi”文件可读写权限。

# chmod -R 777 /var/lib/gnocchi

步骤3 完成Gnocchi的安装。

1. 启动Gnocchi服务并将其配置为在系统引导时启动。

# systemctl enable openstack-gnocchi-api.service openstack-gnocchi-metricd.service# systemctl start openstack-gnocchi-api.service openstack-gnocchi-metricd.service

2. 查看Gnocchi服务状态。

# systemctl status openstack-gnocchi-api.service openstack-gnocchi-metricd.service

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 95

Page 103: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

安装和配置 Ceilometer(控制节点)

在控制节点执行以下操作。

步骤1 安装Ceilometer包。

# yum -y install openstack-ceilometer-notification openstack-ceilometer-central

步骤2 编辑配置文件“/etc/ceilometer/pipeline.yaml”并完成以下部分:

配置Gnocchi连接。

publishers: - gnocchi://?filter_project=service&archive_policy=low

步骤3 编辑配置文件“/etc/ceilometer/ceilometer.conf”并完成以下操作:

1. 配置身份认证方式以及消息列队访问。[DEFAULT]debug = trueauth_strategy = keystonetransport_url = rabbit://openstack:<PASSWORD>@controllerpipeline_cfg_file = pipeline.yaml

2. 配置日志消息窗口。[notification]store_events = truemessaging_urls = rabbit://openstack:<PASSWORD>@controller

3. 定义轮询配置文件。[polling]cfg_file = polling.yaml

4. 配置服务凭据。[service_credentials]auth_type = passwordauth_url = http://controller:5000/v3project_domain_id = defaultuser_domain_id = defaultproject_name = serviceusername = ceilometerpassword = <PASSWORD>interface = internalURLregion_name = RegionOne

步骤4 在Gnocchi创建Ceilometer资源。

# ceilometer-upgrade

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 96

Page 104: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

须知

Gnocchi必须在这个阶段状态为运行。

步骤5 完成Ceilometer安装。

# systemctl enable openstack-ceilometer-notification.service \

openstack-ceilometer-central.service

# systemctl start openstack-ceilometer-notification.service \

openstack-ceilometer-central.service

步骤6 查看Ceilometer服务状态。

# systemctl status openstack-ceilometer-notification.service \

openstack-ceilometer-central.service

----结束

安装和配置 Ceilometer(计算节点)

在计算节点执行以下操作。

步骤1 安装软件,其中openstack-ceilometer-ipmi为可选安装项。

# yum -y install openstack-ceilometer-compute

# yum -y install openstack-ceilometer-ipmi

步骤2 编辑配置文件“/etc/ceilometer/ceilometer.conf”并完成以下操作。

1. 配置消息列队访问。[DEFAULT]transport_url = rabbit://openstack:<PASSWORD>@controller

2. 配置度量服务凭据。[service_credentials]auth_type = passwordauth_url = http://controller:5000/v3project_domain_id = defaultuser_domain_id = defaultproject_name = serviceusername = ceilometerpassword = <PASSWORD>interface = internalURLregion_name = RegionOne

----结束

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 97

Page 105: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

配置 nova

在计算节点执行以下操作。

步骤1 编辑“/etc/nova/nova.conf”文件并在以下[DEFAULT]部分配置消息通知:

[DEFAULT]instance_usage_audit = Trueinstance_usage_audit_period = hour

[notifications]notify_on_state_change = vm_and_task_state

[oslo_messaging_notifications]driver = messagingv2

----结束

配置轮询 ipmi

在计算节点执行以下操作。

步骤1 编辑“/etc/sudoers”文件使其包含以下内容:

ceilometer ALL = (root) NOPASSWD: /usr/bin/ceilometer-rootwrap /etc/ceilometer/rootwrap.conf *

须知

“/etc/sudoers”文件属性为只读,需要执行:wq!强制保存退出。

步骤2 编辑“/etc/ceilometer/polling.yaml”,添加以下度量项目(注意格式对齐):

- name: ipmiinterval: 300meters:- hardware.ipmi.temperature

----结束

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 98

Page 106: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

完成安装

在计算节点执行以下操作。

步骤1 启动代理并将其配置为在系统引导时启动。

# systemctl enable openstack-ceilometer-compute.service

# systemctl start openstack-ceilometer-compute.service

# systemctl enable openstack-ceilometer-ipmi.service (optional)

# systemctl start openstack-ceilometer-ipmi.service (optional)

步骤2 重新启动Compute服务。

# systemctl restart openstack-nova-compute.service

----结束

源码修改

在控制节点执行以下操作。

步骤1 OpenStack源码脚本有一处报错,在使用Ceilometer之前需要进行修改。

vim /usr/lib/python2.7/site-packages/gnocchiclient/shell.py

将130行内容修改为:

os.environ["OS_AUTH_TYPE"] = "password"

修改前:

修改后:

----结束

验证操作

在控制节点执行以下操作。

须知

请确保前面所有内容安装配置无误后再进行以下验证操作。

步骤1 列出所有计量resource资源。

# gnocchi resource list

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 99

Page 107: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤2 列出所有可计量的metric计量类型。

# gnocchi metric list

步骤3 验证Ceilometer对虚拟机中硬件资源的监控。

# gnocchi measures show ID

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 100

Page 108: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

2.4.10 安装配置并验证 HeatHeat编排服务,通过OpenStack-native Rest API和CloudFormation-compatibleQuery API两个API,安装HOT或CloudFormation模板编排各服务组件使用。

说明

在控制节点安装配置并验证Heat。

创建 Heat 数据库

步骤1 使用数据库访问客户端以root用户身份连接到数据库服务器。

mysql -u root -p

步骤2 创建heat数据库。

CREATE DATABASE heat;

步骤3 授予对Heat数据库的适当访问权限。

GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'localhost' \

IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'%' \

IDENTIFIED BY '<PASSWORD>';

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 101

Page 109: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤4 退出数据库。

----结束

先决环境配置

步骤1 来源admin凭据来访问仅管理员CLI命令。

source /etc/keystone/admin-openrc

步骤2 创建服务凭据。

1. 创建Heat用户。

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

2. 将admin角色添加到heat用户。

openstack role add --project service --user heat admin

3. 创建heat和heat-cfn服务实体。

openstack service create --name heat --description "Orchestration"orchestration

openstack service create --name heat-cfn --description "Orchestration"cloudformation

4. 创建Orchestration服务API端点。

# openstack endpoint create --region RegionOne \

orchestration public http://controller:8004/v1/%\(tenant_id\)s

# openstack endpoint create --region RegionOne \

orchestration internal http://controller:8004/v1/%\(tenant_id\)s

# openstack endpoint create --region RegionOne \

orchestration admin http://controller:8004/v1/%\(tenant_id\)s

# openstack endpoint create --region RegionOne \

cloudformation public http://controller:8000/v1

# openstack endpoint create --region RegionOne \

cloudformation internal http://controller:8000/v1

# openstack endpoint create --region RegionOne \

cloudformation admin http://controller:8000/v1

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 102

Page 110: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 103

Page 111: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤3 Orchestration需要Identity Service中的其他信息来管理堆栈。要添加此信息,请完成以下步骤:

1. 创建Heat包含堆栈项目和用户的域。

openstack domain create --description "Stack projects and users" heat2. 创建heat_domain_admin用户以管理heat域中的项目和用户并设置密码。

openstack user create --domain heat --password-promptheat_domain_admin

3. 将admin角色添加到域中的heat_domain_admin用户heat以启用用户的管理堆栈管理权限heat_domain_admin。

openstack role add --domain heat --user-domain heat --userheat_domain_admin admin

4. 在Heat域中创建常规项目demo和常规用户demo。

openstack project create --domain heat --description "Demo Project"demoopenstack user create --domain heat --password-prompt demo

5. 创建heat_stack_owner角色。

openstack role create heat_stack_owner

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 104

Page 112: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

6. 将heat_stack_owner角色添加到demo项目和用户以启用用户的堆栈管理demo。

openstack role add --project demo --user demo heat_stack_owner7. 创建heat_stack_user角色。

openstack role create heat_stack_user

----结束

安装和配置 Heat

步骤1 安装软件包。

# yum -y install openstack-heat-api openstack-heat-api-cfn openstack-heat-engine

步骤2 修改“/etc/rabbitmq/rabbitmq.config”。

{delegate_count, 96}

步骤3 编辑“/etc/heat/heat.conf”文件并完成以下配置:

1. 在default中配置消息列队访问端口以及stack基本管理认证。[DEFAULT]transport_url = rabbit://openstack:<PASSWORD>@controllerheat_metadata_server_url = http://controller:8000heat_waitcondition_server_url = http://controller:8000/v1/waitconditionstack_domain_admin = heat_domain_adminstack_domain_admin_password = <PASSWORD>stack_user_domain_name = heatnum_engine_workers = 4

说明

RABBIT_PASS为rabbitmq服务为openstack用户设置的密码,HEAT_DOMAIN_PASS为heatdomain 域密码。

2. 在api中设置heat_api调用数量。[heat_api]workers = 4

3. 配置数据库访问地址信息。[database]connection = mysql+pymysql://heat:<PASSWORD>@controller/heat

4. 配置Keystone认证信息。[keystone_authtoken]www_authenticate_uri = http://controller:5000auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = heatpassword = <PASSWORD>

5. 在trustee中配置身份访问服务。[trustee]auth_type = passwordauth_url = http://controller:5000username = heatpassword = <PASSWORD>user_domain_name = default

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 105

Page 113: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

6. 在clients_keystone配置身份访问服务。[clients_keystone]auth_uri = http://controller:5000

步骤4 填充Orchestration数据库。

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

----结束

完成安装

步骤1 启动Orchestration服务并将其配置为在系统引导时启动。

# systemctl enable openstack-heat-api.service \

openstack-heat-api-cfn.service openstack-heat-engine.service

# systemctl start openstack-heat-api.service \

openstack-heat-api-cfn.service openstack-heat-engine.service

----结束

验证操作

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

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

openstack orchestration service list

----结束

2.4.11 安装配置并验证 HorizonHorizon提供基于Web与内部个服务组件进行交互的界面。例如,插件虚拟机实例分配IP地址和配置访问控制等。

说明

在控制节点安装配置并验证Horizon。

安装和配置组件

步骤1 安装软件包。

yum -y install openstack-dashboard

步骤2 编辑配置文件“/etc/openstack-dashboard/local_settings”并完成以下操作:

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 106

Page 114: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

vim /etc/openstack-dashboard/local_settings

1. 配置仪表板以在controller节点上使用OpenStack服务。OPENSTACK_HOST = "controller"

2. 允许所有主机访问,注意格式,逗号后面有一个空格。ALLOWED_HOSTS = ['*', ]

3. 配置memcached会话存储服务,请注释掉任何其他会话存储配置,请注意格式。SESSION_ENGINE = 'django.contrib.sessions.backends.file'CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'controller:11211', }}

4. 启用Identity API版本3。OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

5. 启用对域的支持。OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

6. 配置API版本,请注意配置格式。OPENSTACK_API_VERSIONS = { "identity": 3, "image": 2, "volume": 3,}

7. 配置Default为通过仪表板创建的用户的默认域。OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"

8. 配置user为通过仪表板创建的用户的默认角色。OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

9. 请禁用对第3层网络服务的支持。

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 107

Page 115: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

OPENSTACK_NEUTRON_NETWORK = { 'enable_router': False, 'enable_quotas': False, 'enable_distributed_router': False, 'enable_ha_router': False, 'enable_lb': False, 'enable_firewall': False, 'enable_vpn': False, 'enable_fip_topology_check': False,

10. (可选)配置时区:上海。

TIME_ZONE = "Asia/Shanghai"

步骤3 编辑配置文件“/etc/httpd/conf.d/openstack-dashboard.conf”。

vim /etc/httpd/conf.d/openstack-dashboard.conf

添加以下内容:WSGIApplicationGroup %{GLOBAL}

步骤4 赋予“/usr/share/openstack-dashboard/”文件夹 apache所属用户、组的权限。

chown -R apache:apache /usr/share/openstack-dashboard/

步骤5 重新启动Web服务器和会话存储服务。

systemctl restart httpd.service memcached.service

----结束

验证操作

步骤1 使用浏览器访问控制节点管理IP登录dashboard。

例如:http://192.168.21.1/dashboard

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 108

Page 116: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤2 在dashboard界面进行openstack的服务管理操作。

----结束

鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 109

Page 117: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

3 OpenStack&Ceph 集成 部署指南(CentOS7.6)

3.1 介绍

3.2 环境要求

3.3 配置部署环境

3.4 OpenStack集成Ceph

3.5 集成验证

3.1 介绍

简要介绍

Ceph是一个可靠的、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。Ceph提供统一的横向扩展存储,带有自我修复和智能预测故障的功能,已经成为软件定义存储的事实上的标准之一。因为Ceph是开源的,它使许多供应商能够提供基于Ceph的软件去定义合适的存储系统。在虚拟化领域里,Ceph是目前OpenStack生态系统中呼声 高的开源存储解决方案。OpenStack项目设计的准则之一就是灵活可扩展。同时,其各个成员项目的背景也不尽相同,这也就导致各个项目在涉及存储系统时所采取的选择各有差异。在这种情况下,采用Ceph作为OpenStack的一种统一存储后端,则相得益彰。本文主要介绍了OpenStack Stein版本与Ceph的集成方法。

建议的版本

建议的版本如表3-1所示。

表 3-1 建议的版本

软件 建议版本

OpenStack Stein版本

Ceph 14.2.1

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 110

Page 118: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

3.2 环境要求

硬件要求

本次Ceph集群采用TaiShan服务器和x86服务器混合部署的方式,三个Ceph节点中,两台为TaiShan 200服务器(型号2280),一台为Fusion Server服务器(型号2288HV5);OpenStack节点两台均采用TaiShan 200服务器(型号2280)。每台服务器配备4个SAS HDD,一块用做OS盘,三块用作存储盘。具体如表3-2所示。

表 3-2 硬件环境

设备类型 型号 主要配置

ceph节点1 TaiShan 200服务器(型号2280)

鲲鹏920 5250处理器*2,内存32GB*4,硬盘SAS HDD 1.2TB*4

ceph节点2 TaiShan 200服务器(型号2280)

鲲鹏920 5250处理器*2,内存32GB*4,硬盘SAS HDD 1.2TB*4

ceph节点3 Fusion Server服务器(型号2288H V5)

CPU 28cores 2.1GHz*2,内存32GB*4,硬盘SAS HDD 1.2TB*4

OpenStack管理节点

TaiShan 200服务器(型号2280)

鲲鹏920 5250处理器*2,内存32GB*4,硬盘SAS HDD 1.2TB*4

OpenStack计算节点

TaiShan 200服务器(型号2280)

鲲鹏920 5250处理器*2,内存32GB*4,硬盘SAS HDD 1.2TB*4

软件环境

环境前提:

● OpenStack环境需要已经完成Keystone、Placement、Neutron、Nova、Glance、Cinder、Swift等组件的安装,安装指南请参照《OpenStack Stein 部署指南(CentOS 7.6)》。

● Ceph集群已经搭建完成,MON、OSD均已正常启动。

软件配置如表3-3示。

表 3-3 软件配置

软件名称

版本 获取方式 安装指导参考

OS CentOS7.6

CentOS官网,请自行下载安装

https://www.centos.org/download/

OpenStack

Stein 配置好yum源自动安装

https://docs.openstack.org/stein/install/index.html

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 111

Page 119: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

软件名称

版本 获取方式 安装指导参考

Ceph 14.2.1 配置好yum源自动安装

https://docs.ceph.com/docs/mimic/《Ceph块存储 安装指南(CentOS7.6)》

《Ceph对象存储 安装指南(CentOS7.6)》

集群环境

本文档中采用五台服务器部署OpenStack+Ceph集群,其中3台用作Ceph集群,2台用做OpenStack环境兼Ceph Client节点。参见图3-1和表3-4。

图 3-1 集群组网

表 3-4 集群环境 IP 规划

节点名称

IP地址 服务器类型 说明

ceph1 192.168.21.1

TaiShan 200服务器(型号2280)

Ceph集群MGR管理节点,存储节点,Monitor

ceph2 192.168.21.3

TaiShan 200服务器(型号2280)

Ceph集群存储节点,Monitor

ceph3 192.168.21.68

Fusion Server 服务器(型号2288H V5)

Ceph集群存储节点,Monitor

controller

192.168.21.11

TaiShan 200服务器(型号2280)

OpenStack控制节点,Swift对象存储节点,Ceph客户端节点

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 112

Page 120: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

节点名称

IP地址 服务器类型 说明

compute

192.168.21.12

TaiShan 200服务器(型号2280)

OpenStack计算节点,Cinder块存储节点,Ceph客户端节点

3.3 配置部署环境

配置主机名

说明

在所有主机上执行以下操作。

步骤1 修改主机名。

# hostnamectl set-hostname 主机名 --static

步骤2 修改“/etc/hosts”文件。

vim /etc/hosts

在hosts文件中添加集群所有节点的“地址-主机名”映射关系。

----结束

关闭防火墙与 SELinux

步骤1 在ceph1,ceph2,ceph3节点上关闭防火墙。

[root@ceph1 ~]# systemctl stop firewalld.service && systemctl disablefirewalld.service

[root@ceph2 ~]# systemctl stop firewalld.service && systemctl disablefirewalld.service

[root@ceph3 ~]# systemctl stop firewalld.service && systemctl disablefirewalld.service

步骤2 在所有节点关闭SELinux。

# setenforce 0

说明

该操作为临时关闭SELinux,若需永久关闭,请修改配置文件“/etc/selinux/config”,配置“SELINUX=disabled”。

----结束

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 113

Page 121: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

配置时间同步

步骤1 在所有节点上安装NTP服务。

# yum -y install ntp ntpdate

步骤2 在所有节点上备份旧的配置。

# cd /etc && mv ntp.conf ntp.conf.bak

步骤3 在ceph1上执行编辑文件“/etc/ntp.conf”。

vim /etc/ntp.conf

并新增以下内容:restrict 127.0.0.1restrict ::1restrict 192.168.21.0 mask 255.255.255.0server 127.127.1.0fudge 127.127.1.0 stratum 8

步骤4 在除ceph1之外的所有节点上编辑文件“/etc/ntp.conf”。

vim /etc/ntp.conf

并新增以下内容使这些节点与ceph1进行时间同步:server 192.168.21.1

步骤5 在所有节点上启动NTP服务。

# systemctl enable ntpd && systemctl start ntpd

步骤6 在除ceph1之外的所有节点执行以下命令。

# ntpdate ceph1

# hwclock -w

----结束

配置 SSH 免密登录

步骤1 在ceph1节点生成公钥,然后发放到所有的主机/客户机节点。

[root@ceph1 ~]# ssh-keygen -t rsa #在此处全部回车,采取默认配置

[root@ceph1 ~]# ssh-copy-id ceph1 #根据提示输入yes以及节点登录密码

[root@ceph1 ~]# ssh-copy-id ceph2

[root@ceph1 ~]# ssh-copy-id ceph3

[root@ceph1 ~]# ssh-copy-id controller

[root@ceph1 ~]# ssh-copy-id compute

步骤2 在OpenStack controller节点生成公钥,然后发放到所有的主机/客户机节点。

[root@controller ~]# ssh-keygen -t rsa #在此处全部回车,采取默认配置

[root@controller ~]# ssh-copy-id ceph1 #根据提示输入yes以及节点登录密码

[root@controller ~]# ssh-copy-id ceph2

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 114

Page 122: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

[root@controller ~]# ssh-copy-id ceph3

[root@controller ~]# ssh-copy-id controller

[root@controller ~]# ssh-copy-id compute

----结束

3.4 OpenStack 集成 Ceph

3.4.1 OpenStack 集成 Ceph 块存储

安装 Ceph 软件包

集成过程中,需要在OpenStack的controller节点和compute节点安装Ceph软件包,作为Ceph客户端。

步骤1 在controller和compute节点配置ceph镜像源。

[root@controller ~]# vim /etc/yum.repos.d/ceph.repo

并加入以下内容:

[Ceph]name=Ceph packages for $basearchbaseurl=http://download.ceph.com/rpm-nautilus/el7/$basearchenabled=1gpgcheck=1type=rpm-mdgpgkey=https://download.ceph.com/keys/release.ascpriority=1

[Ceph-noarch]name=Ceph noarch packagesbaseurl=http://download.ceph.com/rpm-nautilus/el7/noarchenabled=1gpgcheck=1type=rpm-mdgpgkey=https://download.ceph.com/keys/release.ascpriority=1

[Ceph-source]name=Ceph source packagesbaseurl=http://download.ceph.com/rpm-nautilus/el7/SRPMSenabled=1gpgcheck=1type=rpm-mdgpgkey=https://download.ceph.com/keys/release.ascpriority=1

步骤2 在controller和compute节点更新yum源。

[root@controller ~]# yum clean all && yum makecache

步骤3 在controller和compute节点安装ceph软件包。

[root@controller ~]# yum -y install ceph ceph-radosgw

----结束

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 115

Page 123: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

配置 Ceph 环境

步骤1 在ceph1创建所需的存储池,修改PG数目。

[root@ceph1 ~]# ceph osd pool create volumes 32

[root@ceph1 ~]# ceph osd pool create images 32

[root@ceph1 ~]# ceph osd pool create backups 32

[root@ceph1 ~]# ceph osd pool create vms 32

步骤2 查看创建的存储池。

[root@ceph1 ~]# ceph osd pool ls

步骤3 在ceph1同步配置文件,将ceph1上的配置文件同步到controller和compute节点。

[root@ceph1 ~]# cd /etc/ceph

[root@ceph1 ceph]# ceph-deploy --overwrite-conf admin ceph1 controllercompute

步骤4 在ceph1上为cinder、glance、cinder-backup用户创建keyring,允许其访问Ceph存储池。

[root@ceph1 ~]# ceph auth get-or-create client.cinder mon 'allow r' osd'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allowrwx pool=vms, allow rx pool=images'

[root@ceph1 ~]# ceph auth get-or-create client.glance mon 'allow r' osd'allow class-read object_prefix rbd_children, allow rwx pool=images'

[root@ceph1 ~]# ceph auth get-or-create client.cinder-backup mon 'profilerbd' osd 'profile rbd pool=backups'

[root@ceph1 ~]# ceph auth get-or-create client.glance | ssh controllertee /etc/ceph/ceph.client.glance.keyring

[root@ceph1 ~]# ssh controller chown glance:glance /etc/ceph/ceph.client.glance.keyring

[root@ceph1 ~]# ceph auth get-or-create client.cinder | ssh compute tee /etc/ceph/ceph.client.cinder.keyring

[root@ceph1 ~]# ssh compute chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring

[root@ceph1 ~]# ceph auth get-or-create client.cinder-backup | ssh computetee /etc/ceph/ceph.client.cinder-backup.keyring

[root@ceph1 ~]# ssh compute chown cinder:cinder /etc/ceph/ceph.client.cinder-backup.keyring

[root@ceph1 ~]# ceph auth get-key client.cinder | ssh compute teeclient.cinder.key

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 116

Page 124: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤5 在计算节点(compute)上向libvirt添加秘钥。

[root@compute ~]# UUID=$(uuidgen)

[root@compute ~]# cat > secret.xml <<EOF

<secret ephemeral='no' private='no'><uuid>${UUID}</uuid><usage type='ceph'><name>client.cinder secret</name></usage></secret>EOF

[root@compute ~]# virsh secret-define --file secret.xml

[root@compute ~]# virsh secret-set-value --secret ${UUID} --base64 $(cat /etc/ceph/ceph.client.cinder.keyring | grep key | awk -F ' ' '{ print $3 }')

说明

注意保存此处生成的UUID的值,后面Cinder以及Nova的配置中需要用到,本示例中的UUID为:b3d5fee6-839c-482e-b244-668bad7128a9

----结束

配置 Glance 集成 Ceph

步骤1 在控制节点(controller)上修改Glance的配置文件。

[root@controller ~]# vim /etc/glance/glance-api.conf

在配置里添加以下内容:

[DEFAULT]...# enable COW cloning of imagesshow_image_direct_url = True...[glance_store]stores = rbddefault_store = rbdrbd_store_pool = imagesrbd_store_user = glancerbd_store_ceph_conf = /etc/ceph/ceph.confrbd_store_chunk_size = 8

步骤2 为避免images缓存在目录“/var/lib/glance/image-cache”下,修改文件“/etc/glance/glance-api.conf”,添加以下内容。[paste_deploy]flavor = keystone

步骤3 在控制节点(controller)重启glance-api服务。

[root@controller ~]# systemctl restart openstack-glance-api.service

----结束

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 117

Page 125: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

配置 Cinder 集成 Ceph

步骤1 在Cinder节点(compute)上,修改配置文件“/etc/cinder/cinder.conf”。

[root@compute ~]# vim /etc/cinder/cinder.conf

修改并新增以下内容:

[DEFAULT]...#enabled_backends = lvm #注意:需要注释掉Cinder中lvm的配置enabled_backends = ceph

[ceph]volume_driver = cinder.volume.drivers.rbd.RBDDrivervolume_backend_name = cephrbd_pool = volumesrbd_ceph_conf = /etc/ceph/ceph.confrbd_flatten_volume_from_snapshot = falserbd_max_clone_depth = 5rbd_store_chunk_size = 4rados_connect_timeout = -1glance_api_version = 2rbd_user = cinderrbd_secret_uuid = b3d5fee6-839c-482e-b244-668bad7128a9

说明

此处rbd_secret_uuid的值即为配置Ceph环境步骤5保存的UUID值。

步骤2 在Cinder节点(compute)上,重启cinder-volume服务。

[root@compute ~]# systemctl restart openstack-cinder-volume.service

----结束

配置 Cinder_backup 集成 Ceph

步骤1 在cinder节点(compute)上,修改配置文件“/etc/cinder/cinder.conf”。

[root@compute ~]# vim /etc/cinder/cinder.conf

修改并新增以下内容:

[DEFAULT]...#backup_driver = cinder.backup.drivers.swift.SwiftBackupDriver...backup_driver = cinder.backup.drivers.ceph.CephBackupDriverbackup_ceph_conf = /etc/ceph/ceph.confbackup_ceph_user = cinder-backupbackup_ceph_chunk_size = 4194304backup_ceph_pool = backupsbackup_ceph_stripe_unit = 0backup_ceph_stripe_count = 0restore_discard_excess_bytes = true

须知

在配置参数back_driver时需要注释掉其他backup_driver的配置。

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 118

Page 126: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤2 重启cinder backup服务进程。

[root@compute ~]# systemctl restart openstack-cinder-backup.service

----结束

配置 Nova 集成 Ceph

步骤1 在Nova计算节点(compute)上,修改配置文件“/etc/nova/nova.conf”。

[root@compute ~]# vim /etc/nova/nova.conf

修改并新增以下内容:

[DEFAULT]...live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"

[libvirt]...virt_type = kvmimages_type = rbdimages_rbd_pool = vmsimages_rbd_ceph_conf = /etc/ceph/ceph.confdisk_cachemodes="network=writeback"rbd_user = cinderrbd_secret_uuid = b3d5fee6-839c-482e-b244-668bad7128a9

说明

此处uuid为配置Ceph环境中“/etc/cinder/cinder.conf”的UUID。

步骤2 在Nova计算节点(compute)上,重启nova-compute服务。

[root@compute ~]# systemctl restart openstack-nova-compute.service

----结束

3.4.2 OpenStack 集成 Ceph 对象存储

配置 Ceph 环境

步骤1 在ceph1上执行,修改文件“/etc/ceph/ceph.conf”的配置。

[root@ceph1 ~]# vim /etc/ceph/ceph.conf

新增以下内容:

[client.rgw.ceph1]host=ceph1log file=/var/log/radosgw/client.radosgw.gateway.logrgw_frontends = civetweb port=10001rgw keystone api version = 3rgw keystone url = http://controller:5000rgw keystone accepted roles = adminrgw keystone token cache size = 500rgw keystone revocation interval = 300rgw keystone implicit tenants = truergw s3 auth use keystone = truergw keystone admin user = admin

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 119

Page 127: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

rgw keystone admin password = <PASSWORD>rgw keystone admin tenant = adminrgw keystone admin domain = default

[client.rgw.ceph2]host=ceph2log file=/var/log/radosgw/client.radosgw.gateway.logrgw_frontends = civetweb port=10002rgw keystone api version = 3rgw keystone url = http://controller:5000rgw keystone accepted roles = adminrgw keystone token cache size = 500rgw keystone revocation interval = 300rgw keystone implicit tenants = truergw s3 auth use keystone = truergw keystone admin user = adminrgw keystone admin password = <PASSWORD>rgw keystone admin tenant = adminrgw keystone admin domain = default

[client.rgw.ceph3]host=ceph3log file=/var/log/radosgw/client.radosgw.gateway.logrgw_frontends = civetweb port=10003rgw keystone api version = 3rgw keystone url = http://controller:5000rgw keystone accepted roles = adminrgw keystone token cache size = 500rgw keystone revocation interval = 300rgw keystone implicit tenants = truergw s3 auth use keystone = truergw keystone admin user = adminrgw keystone admin password = <PASSWORD>rgw keystone admin tenant = adminrgw keystone admin domain = default

说明

PASSWORD 是rgw keystone admin的密码,需根据情况修改。

步骤2 在所有集群节点上同步配置文件,在ceph1上执行。

[root@ceph1 ~]# ceph-deploy --overwrite-conf admin ceph1 ceph2 ceph3

步骤3 在ceph1节点执行下列命令,分别为三个ceph节点创建一个rgw实例。

[root@ceph1 ~]# ceph-deploy rgw create ceph1:ceph1

[root@ceph1 ~]# ceph-deploy rgw create ceph2:ceph2

[root@ceph1 ~]# ceph-deploy rgw create ceph3:ceph3

步骤4 上述命令执行成功后,在各个ceph节点检查rgw服务是否成功启动。

[root@ceph1 ~]# netstat -ntlp | grep radosgw

步骤5 在ceph1节点上执行,创建对象存储池,设置好pg和pgp的数值。

[root@ceph1 ~]# ceph osd pool create default.rgw.buckets.data 64 64

[root@ceph1 ~]# ceph osd pool create default.rgw.buckets.index 16 16

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 120

Page 128: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤6 查看存储池是否创建成功。

[root@ceph1 ~]# ceph osd pool ls

步骤7 在ceph1上执行,为Ceph对象存储网关创建一个admin用户。

[root@ceph1 ~]# radosgw-admin user create --uid="testuser" --display-name="First User"

步骤8 在ceph1上执行,为Ceph对象存储网关创建一个swift子用户。

[root@ceph1 ~]# radosgw-admin subuser create --uid=testuser --subuser=testuser:swift --access=full

----结束

配置 Swift 集成 Ceph

步骤1 在OpenStack controller节点上执行,查看OpenStack环境中swift存储的endpoint。

[root@controller ~]# source /etc/keystone/admin-openrc

[root@controller ~]# openstack endpoint list | grep swift

● 若环境中不存在swift的endpoint,则直接进行下一步,创建新的endpoint。

● 若环境中存在swift的endpoint,需要使用以下命令删除已有的swift endpoint。

[root@controller ~]# openstack endpoint delete SWIFT_ENDPOINT_ID

说明

SWIFT_ENDPOINT_ID为swift endpoint list中的第一项ID。

步骤2 在controller节点上执行,创建新的openstack endpoint,URL指向ceph1的RGW端口。

[root@controller ~]# openstack endpoint create --region RegionOne object-store public "http://ceph1:10001/swift/v1"

[root@controller ~]# openstack endpoint create --region RegionOne object-store internal "http://ceph1:10001/swift/v1"

[root@controller ~]# openstack endpoint create --region RegionOne object-store admin "http://ceph1:10001/swift/v1"

步骤3 在控制节点上运行swift list,若无报错,则Swift集成Ceph已经完成。

[root@controller ~]# swift list

----结束

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 121

Page 129: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

3.5 集成验证

验证 Glance 集成 Ceph

步骤1 在controller节点执行,创建新的镜像CentOS7-ceph。

[root@controller ~]# openstack image create "CentOS7-ceph" --fileCentOS-7-aarch64-Custom.qcow2 --disk-format qcow2 --container-formatbare --public

说明

执行镜像上传,OpenStack本地环境中需要有.qcow2格式的镜像文件,例如本例中的CentOS-7-aarch64-Custom.qcow2镜像。

步骤2 在controller节点查看OpenStack中的可用镜像。

[root@controller ~]# openstack image list

步骤3 查看ceph images存储池中的镜像。

[root@controller ~]# rbd ls images

----结束

验证 Cinder 集成 Ceph

步骤1 在controller节点上执行,创建一个新的OpenStack卷ceph_volume,大小为10G。

[root@controller ~ ]# cinder create --name ceph_volume 10

步骤2 在controller节点查看OpenStack以及ceph volumes存储池,发现卷创建成功并存储在Ceph中。

[root@controller ~ ]# openstack volume list

[root@controller ~ ]# rbd ls volumes

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 122

Page 130: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

验证 Cinder_backup 集成 Ceph步骤1 在controller节点上执行,为上一步创建的ceph_volume卷创建一个新的备份

backup_ceph_volume。

[root@controller ~]# cinder backup-create --name backup_ceph_volumeceph_volume

步骤2 在controller节点上执行,查看Ceph中的备份存储池。

[root@controller ~]# rbd ls backups

----结束

验证 Nova 集成 Ceph步骤1 在controller节点上执行,列出环境中可用的flavor以及image资源。

[root@controller lib]# openstack flavor list

[root@controller lib]# openstack image list

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 123

Page 131: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤2 在controller节点上执行,使用现有资源创建一个虚拟机。

[root@controller lib]# openstack server create --image 3f9f9cd4-aa56-42cd-86cc-04d52315cc25 --flavor m2.large testvm5

步骤3 在controller节点上执行,一段时间过后,查看虚拟状态,可以看到创建完成,在OpenStack环境和ceph查看虚拟机是否存在。

[root@controller lib]# openstack server list

[root@controller lib]# rbd ls vms

----结束

验证 Swift 集成 Ceph

步骤1 在controller节点上执行,查看用户radosgw网关存储下的存储桶。

[root@controller ~]# swift list

步骤2 在controller上执行,将本地“/var/log/messages上”传到radosgw网关的ceph_test对象存储桶中。

[root@controller ~]# swift upload ceph_test /var/log/message

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 124

Page 132: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤3 再次查看radosgw网关存储下的对象,可以看到ceph_test桶创建成功。

[root@controller ~]# swift list

步骤4 查看ceph rados默认的数据存储池中的文件,也可以看到上传的“var/log/messages”文件。

[root@controller ~]# rados -p default.rgw.buckets.data ls

----结束

鲲鹏云平台解决方案部署指南 3 OpenStack&Ceph 集成 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 125

Page 133: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4 OpenStack Stein 虚机裸机混合部署指南

(CentOS 7.6)

4.1 介绍

4.2 环境要求

4.3 (可选)Ceph自动部署

4.4 OpenStack虚拟机混合部署安装配置

4.5 OpenStack裸金属服务安装部署

4.6 OpenStack混合部署虚拟机集成验证

4.7 OpenStack混合部署裸金属服务集成验证

4.1 介绍

简要介绍

OpenStack既是一个社区,也是一个项目和一个开源软件,提供开放源码软件,建立公共和私有云,它提供了一个部署云的操作平台或工具集,其宗旨在于帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云,也为大云、小云提供可扩展的、灵活的云计算。

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

Ceph是一个可靠的、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。Ceph提供统一的横向扩展存储,带有自我修复和智能预测故障的功能,已经成为软件定义存储的事实上的标准之一。因为Ceph是开源的,它使许多供应商能够提供基于Ceph的软件去定义合适的存储系统。在虚拟化领域里,Ceph是目前OpenStack生态系统中呼声 高的开源存储解决方案。OpenStack项目设计的准则之一就是灵活可扩展。同时,其各个成员项目的背景也不尽相同,这也就导致各个项目在涉及存储系统时所采取的选择各有差异。在这种情况下,采用Ceph作为OpenStack的一种统一存储后端,则相得益彰。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 126

Page 134: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

裸金属服务提供对物理服务器进行管理和配置的支持。

本文主要介绍OpenStack Stein版本混合部署、OpenStack与Ceph的集成、虚拟机混合部署场景下用户指南,以及混合部署场景下裸金属服务的安装部署与用户操作指南。

● 虚拟机场景的混合部署

通过OpenStack原生支持的Avaliable Zone(下文简称AZ)功能对计算域、网络域、存储域进行资源划分,完成以AZ为粒度进行虚拟机的管理。具体来说,Image镜像管理服务通过glance 组件对image 的architecture属性区分x86/ARM镜像;计算服务通过compute AZ域创建不同计算资源池;存储服务通过同一Ceph集群不同pool对接不同存储AZ域或不同Ceph集群对接不同存储AZ域实现存储服务独立和管理;网络服务通过Neutron节点划分AZ域,每个AZ域单独提供提供网络服务。

● 裸金属服务场景的混合部署

通过一套裸金属服务完成对X86和ARM物理机器的管理和配置支持。

4.2 环境要求

硬件要求

本案例混合部署采用 小配置的方式,需要9台服务器,其中OpenStack集群服务器3台,Ceph集群3台,裸金属服务管理节点1台,验证裸金属实例发放的服务器节点2台(x86/arm各一台)。

其中,虚拟机混合部署场景,如果需要对接Ceph, 小配置6台;如果不需要对接Ceph, 小配置3台;

裸金属服务混合部署场景,需要使用3台服务器,裸金属服务管理节点1台,验证裸金属实例发放的服务器节点2台(x86/arm各一台)。

具体服务器充当节点角色如表4-1所示。

表 4-1 硬件环境

设备类型 主机名 型号/配置 备注

Controller节点

controller Fusion Server服务器

(型号2288H V5)

CPU 28cores2.1GHz*2,内存32GB*4,硬盘SASHDD 1.2TB*4

该节点充当混合部署场景下OpenStack controller管理节点

x86计算节点/x86网络节点

x86-compute Fusion Server服务器

(型号2288H V5)

CPU 28cores2.1GHz*2,内存32GB*4,硬盘SASHDD 1.2TB*4

该节点同时充当混合部署场景下X86 AZ域网络节点和x86计算节点

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 127

Page 135: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

设备类型 主机名 型号/配置 备注

arm计算节点/arm网络节点

arm-compute TaiShan 200服务器(型号2280)

CPU 2*鲲鹏9205250处理器,内存32GB*4,硬盘 SASHDD 1.2TB *4 ,RAID卡 Avago 3508*1 ,网卡 1822*1

该节点同时充当混合部署场景下ARM AZ域网络节点和arm计算节点

裸金属服务管理节点

baremetal Fusion Server服务器

(型号2288H V5)

CPU 28cores2.1GHz*2,内存32GB*4,硬盘SASHDD 1.2TB*4

该节点为裸金属服务管理节点,负责管理x86/arm裸金属实例的管理和发放。

ceph节点1 ceph1 TaiShan 200服务器(型号2280)

CPU 2*鲲鹏9205250处理器,内存32GB*4,硬盘 SASHDD 1.2TB *4 ,RAID卡 Avago 3508*1 ,网卡 1822*1

Ceph集群节点1,Ceph集群MGR管理节点,存储节点,Monitor

ceph节点2 ceph2 TaiShan 200服务器(型号2280)

CPU 2*鲲鹏9205250处理器,内存32GB*4,硬盘 SASHDD 1.2TB *4 ,RAID卡 Avago 3508*1 ,网卡 1822*1

Ceph集群节点2,Ceph集群存储节点,Monitor

ceph节点3 ceph3 TaiShan 200服务器(型号2280)

CPU 2*鲲鹏9205250处理器,内存32GB*4,硬盘 SASHDD 1.2TB *4 ,RAID卡 Avago 3508*1 ,网卡 1822*1

Ceph集群节点3,Ceph集群存储节点,Monitor

X86裸金属实例节点

- Fusion Server服务器

(型号2288H V5)

-

arm裸金属实例节点

- TaiShan 200服务器(型号2280)

-

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 128

Page 136: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

软件环境

混合部署环境使用软件版本如表4-2所示。

表 4-2 软件版本列表

软件名称 版本 获取方式 安装指导参考

OS CentOS 7.6 CentOS官网,请自行下载安装

https://www.centos.org/download/

OpenStack Stein 配置好YUM源自动安装 《OpenStack Stein 部署指南(CentOS 7.6)》

Ceph 14.2.1 配置好YUM源自动安装 《Ceph块存储安装指南(CentOS 7.6)》

集群环境

本文档中采用9台服务器混合部署OpenStack+Ceph虚拟机集群、裸金属服务混合部署集群,其中3台作为Ceph集群,3台作为OpenStack环境兼Ceph Client节点,1台作为裸金属服务管理节点,2台作为裸金属实例节点。

● 虚拟机混合部署场景

controller控制节点负责管理整个OpenStack集群,是所有操作管理的入口;x86-compute节点同时充当混合部署场景下X86 AZ域网络节点和x86计算节点,该节点为整个x86 AZ域内所有x86计算节点提供网络功能;arm-compute节点同时充当混合部署场景下arm AZ域网络节点和arm计算节点,该节点为整个arm AZ域内所有arm计算节点提供网络功能;

3台ceph节点(ceph1、ceph2、ceph3) 为整个混合部署OpenStack集群提供后端块存储,通过划分StoragePool 为不同AZ提供存储服务。

● 裸金属服务混合部署场景

controller控制节点负责管理整个OpenStack集群,是所有操作openstack服务管理的入口;baremetal节点是所有裸金属服务管理操作的入口,裸金属服务复用虚拟机混合部署的网络服务完成裸金属实例的安装部署。

详细组网和IP配置参见图4-1和表4-3。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 129

Page 137: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

图 4-1 集群组网

表 4-3 集群环境 IP 规划

节点名称 网卡名称/OpenStack 管理IP

网卡名称/租户网络 说明

controller eno3192.168.100.120

- 混合部署控制节点, Ceph客户端节点

x86-compute

eno3192.168.100.121

enp64s0 混合部署x86 AZ域网络节点、计算节点, Ceph客户端节点

arm-compute

eno3192.168.100.122

enp64s0 混合部署ARM AZ域网络节点、计算节点, Ceph客户端节点

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 130

Page 138: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

节点名称 网卡名称/OpenStack 管理IP

网卡名称/租户网络 说明

baremetal eno3192.168.100.100

enp64s090.91.16.2

裸金属服务管理节点,其实是一种openstack计算节点

eno3网口ip用于与openstack其他管理服务keystone/mysql等通信

enp64s0网口ip是裸金属服务ironic-api和ironic-conductor服务的IP,用于裸金属服务器发放。

ceph1 eno3192.168.100.123

- Ceph存储节点

ceph2 eno3192.168.100.124

- Ceph存储节点

ceph3 eno3192.168.100.125

- Ceph存储节点

4.3 (可选)Ceph 自动部署

4.3.1 Ceph 集群安装部署本案例中混合部署后端Ceph采用同一套Ceph集群,通过对Ceph集群划分不同StoragePool对接不同AZ域完成存储AZ域隔离的效果。本案例混合部署场景在ceph1、ceph2、ceph3 3台节点上安装部署Ceph集群,具体搭建流程参见《Ceph块存储 安装指南(CentOS 7.6)》。

说明

如果混合部署集群虚拟机仅使用本地LVM卷,即4.4.7.5 安装配置存储节点章节选择方式一则不需要安装部署后端Ceph集群,直接跳过本章。

4.3.2 配置 Ceph 环境

须知

本节内容需完成4.4小节所述的glance组件与4.7小节所述的cinder组件安装后进行。

在Ceph集群MGR管理节点Ceph1节点执行以下操作。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 131

Page 139: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤1 在ceph1创建不同AZ域所需的存储池,修改PG数目。

cd /etc/ceph

ceph osd pool create volumes-x86 32

ceph osd pool create volumes-arm 32

ceph osd pool create images 32

步骤2 查看创建的存储池。

ceph osd pool ls

步骤3 在ceph1同步配置文件,将ceph1上的配置文件同步到controller和x86-compute、arm-compute节点。

cd /etc/ceph

ceph-deploy --overwrite-conf admin ceph1 controller x86-compute arm-compute

步骤4 在ceph1上为cinder、glance用户创建keyring,允许其访问Ceph存储池。

ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-readobject_prefix rbd_children, allow rwx pool=volumes-x86, allow rwxpool=volumes-arm, allow rx pool=images'

ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-readobject_prefix rbd_children, allow rwx pool=images'

# 控制controller节点

ceph auth get-or-create client.glance | ssh controller tee /etc/ceph/ceph.client.glance.keyring

ssh controller chown glance:glance /etc/ceph/ceph.client.glance.keyring

# 计算节点

ceph auth get-or-create client.cinder | ssh x86-compute tee /etc/ceph/ceph.client.cinder.keyring

ceph auth get-or-create client.cinder | ssh arm-compute tee /etc/ceph/ceph.client.cinder.keyring

ssh x86-compute chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring

ssh arm-compute chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring

须知

步骤5需要在所有计算节点(x86-compute/arm-compute)上执行。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 132

Page 140: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤5 在计算节点(x86-compute/arm-compute)上向libvirt添加秘钥。

UUID=$(uuidgen)

cat > secret.xml <<EOF

<secret ephemeral='no' private='no'>

<uuid>${UUID}</uuid>

<usage type='ceph'>

<name>client.cinder secret</name>

</usage>

</secret>

EOF

virsh secret-define --file secret.xml

virsh secret-set-value --secret ${UUID} --base64 $(cat /etc/ceph/ceph.client.cinder.keyring | grep key | awk -F ' ' '{ print $3 }')

说明

注意保存此处生成的UUID的值,下文安装配置Cinder和Nova组件配置中需要用到,本示例中的UUID为:b3d5fee6-839c-482e-b244-668bad7128a9

----结束

4.4 OpenStack 虚拟机混合部署安装配置

4.4.1 基础部分

4.4.1.1 配置主机名

说明

在所有主机上执行以下操作,修改主机名之后重新建立会话连接。

修改主机名。

hostnamectl set-hostname 主机名 --static

hostnamectl --transient set-hostname 主机名

echo "主机名" > /etc/hostname

4.4.1.2 配置 yum 源

在所有OpenStack节点上(controller节点、x86-compute节点、arm-compute节点)安装centos-release-openstack-stein库。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 133

Page 141: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

yum -y install centos-release-openstack-stein

4.4.1.3 关闭防火墙与 SELinux

步骤1 在所有节点上关闭防火墙。

systemctl stop firewalld.service && systemctl disable firewalld.service

步骤2 在所有节点关闭SELinux。

setenforce 0

说明

该操作为临时关闭SELinux,若需永久关闭,请修改配置文件“/etc/selinux/config”,配置“SELINUX=disabled”。

----结束

4.4.1.4 DNS 配置

在所有OpenStack节点(controller/x86-compute/arm-compute节点)执行以下操作。

步骤1 修改“/etc/hosts”文件,添加如下信息。

1. 修改hosts文件。

vim /etc/hosts2. 在空白处按“i”添加以下几段命令。

<管理节点网卡ip地址> controller <x86计算节点网卡ip地址> x86-compute<arm计算节点网卡ip地址> arm-compute

3. 修改完成后按“Esc”退出编辑模式,输入:wq退出并保存。

修改后的hosts文件如下图所示,此步骤需修改所有节点hosts文件。

----结束

4.4.1.5 NTP 配置

在controller控制节点执行以下操作。

步骤1 安装组件chrony。

yum -y install chrony

步骤2 在所有节点上设置统一的时间区域,本文中将其设置为亚洲时区,用户可自行定义。

timedatectl set-timezone Asia/Shanghai

步骤3 将控制节点设置为内部NTP Server,编辑“/etc/chrony.conf”文件。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 134

Page 142: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

vim /etc/chrony.conf

# server 0.centos.pool.ntp.org iburst# server 1.centos.pool.ntp.org iburst# server 2.centos.pool.ntp.org iburst# server 3.centos.pool.ntp.org iburstserver controller iburstallow 192.168.100.0/24local stratum 10

步骤4 启动chrony服务并将其配置为在系统引导时启动。

systemctl enable chronyd.service

systemctl start chronyd.service

步骤5 启用NTP同步。

timedatectl set-ntp yes

----结束

在计算(x86-compute/arm-compute)节点执行以下操作。

步骤1 安装chrony。

yum -y install chrony

步骤2 编辑“/etc/chrony.conf”文件,添加“server controller iburst”并且删除或者注释掉其余server的选项。

vim /etc/chrony.conf

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 135

Page 143: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

server controller iburst

步骤3 启动chrony 服务并将其配置为在系统引导时启动。

systemctl enable chronyd.service

systemctl restart chronyd.service

步骤4 验证时间同步。

chronyc sources

控制节点和计算节点(x86-compute/arm-compute节点)显示controller 为时钟源。

----结束

4.4.1.6 系统升级

在OpenStack所有arm计算(arm-compute)节点执行以下操作。

步骤1 修改yum配置文件禁用内核升级。

sed -i '$a exclude=kernel*' /etc/yum.conf

sed -i '$a exclude=kernel centos-release' /etc/yum.conf

步骤2 升级系统软件。

yum -y update

----结束

4.4.1.7 安装 OpenStack 客户端

在所有OpenStack(controller/x86-compute/arm-compute)节点执行以下操作,安装OpenStack客户端。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 136

Page 144: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

yum -y install python-openstackclient

4.4.1.8 安装与配置数据库

说明

在控制controller节点执行以下操作。

步骤1 安装数据库。

yum -y install mariadb mariadb-server python2-PyMySQL

步骤2 配置数据库。

1. 创建并编辑文件/etc/my.cnf.d/openstack.cnfvim /etc/my.cnf.d/openstack.cnf

2. 添加如下内容[mysqld] bind-address = 192.168.100.120default-storage-engine = innodb innodb_file_per_table = on max_connections = 4096 collation-server = utf8_general_ci character-set-server = utf8

说明

bind-address 的IP为表4-3 controller控制节点的OpenStack管理IP。

步骤3 启动数据库服务,并设为开机启动。

systemctl enable mariadb.service

systemctl start mariadb.service

步骤4 数据库配置。

mysql_secure_installation

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 137

Page 145: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

初次安装mariadb,默认的root密码是空的,直接按”Enter”即可,然后再为root用户设置密码,例如“123456”,其余的操作按照截图操作即可:

步骤5 修改“/usr/lib/systemd/system/mariadb.service”文件,在文件[Service] 下添加如下内容:

LimitNOFILE=65535 LimitNPROC=65535

说明

该小节的步骤步骤6-步骤9需要在所有节点都执行。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 138

Page 146: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤6 修改 “/etc/security/limits.conf”文件,添加如下内容:

* soft nofile 65536 * hard nofile 65536

步骤7 修改“/etc/pam.d/login”文件,添加如下内容:

session required /lib64/security/pam_limits.so

步骤8 修改“/etc/sysctl.conf”文件,添加如下内容:

fs.file-max = 65536

并执行 sysctl -p

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 139

Page 147: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤9 重启服务。

systemctl daemon-reload

systemctl restart mariadb.service

步骤10 查询是否更改生效。

1. 进入mysql 数据库。

mysql -u root -p

输入数据库密码:

2. 查看MySQL 大连接数。

show variables like 'max_connections';

3. 查看当前服务器正在使用的连接数。

show global status like 'Max_used_connections';

4. 执行exit退出数据库。

----结束

4.4.1.9 安装消息队列

说明

在控制节点执行以下操作

步骤1 安装rabbitmq-server。

yum -y install rabbitmq-server

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 140

Page 148: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤2 配置消息队列服务启动和开机启动。

systemctl enable rabbitmq-server.service

systemctl start rabbitmq-server.service

步骤3 添加并配置openstack 用户。

rabbitmqctl add_user openstack <PASSWORD>

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

说明

“PASSWORD”是rabbitmq服务为openstack用户设置的密码。(openstack的账户密码设置中,不支持特殊符号#;openstack对密码的复杂度没有要求,可以设置为不带特殊字符的密码;若在设置密码时,一定要包含特殊符号,openstack仅支持如下如下特殊字符:& = $ - _ .+ ! * ( ) )。。

步骤4 启动rabbitmq-manager 插件。

rabbitmq-plugins enable rabbitmq_management

说明

启动了插件后,可以在浏览器访问rabbitmq服务。访问地址 http://<controller_IP>:15672;用户名guest, 密码guest。

步骤5 修改rabbitmq默认参数;编辑文件 /usr/lib/systemd/system/rabbitmq-server.service在service模块下添加如下参数:[service] LimitNOFILE=16384

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 141

Page 149: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤6 重启服务。

systemctl daemon-reload

systemctl restart rabbitmq-server

----结束

4.4.1.10 安装 memcached说明

在控制节点执行以下操作。

步骤1 安装memcached。

yum -y install memcached python-memcached

步骤2 编辑“/etc/sysconfig/memcached”文件,添加“controller”,配置服务以使用控制controller节点的管理IP地址,这是为了通过管理网络启用其他节点的访问。

vim /etc/sysconfig/memcached

步骤3 启动服务,并设为开机启动。

systemctl enable memcached.service

systemctl start memcached.service

----结束

4.4.1.11 安装 etcd说明

在控制节点执行以下操作。

步骤1 安装。

yum -y install etcd

步骤2 编辑“/etc/etcd/etcd.conf”文件,修改如下9项参数,其余的全部注释掉。#[Member] ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_PEER_URLS="http://192.168.100.120:2380" ETCD_LISTEN_CLIENT_URLS="http://192.168.100.120:2379" ETCD_NAME="controller" #[Clustering] ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.100.120:2380" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.100.120:2379" ETCD_INITIAL_CLUSTER="controller=http://192.168.100.120:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" ETCD_INITIAL_CLUSTER_STATE="new"

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 142

Page 150: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

注意修改IP地址,所有的IP地址都是表4-3控制controller节点OpenStack管理IP。

步骤3 启动etcd服务。

systemctl enable etcd

systemctl start etcd

----结束

4.4.2 安装配置并验证 KeystoneKeystone为OpenStack项目中的其他服务组件提供了身份认证和授权功能。

说明

在控制节点安装配置并验证Keystone。

4.4.2.1 创建 Keystone 数据库

步骤1 进入数据库。

mysql -u root -p

步骤2 创建Keystone数据库。

CREATE DATABASE keystone;

步骤3 授权,允许本地及远程服务器访问mysql,'<PASSWORD>'为数据库用户keystone的密码。

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIEDBY '<PASSWORD>';

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY'<PASSWORD>';

说明

注意将PASSWORD修改为需要的密码。(openstack的账户密码设置中,不支持特殊符号#;openstack对密码的复杂度没有要求,可以设置为不带特殊字符的密码;若在设置密码时,一定要包含特殊符号,openstack仅支持如下如下特殊字符:& = $ - _ . + ! * ( ) )。

步骤4 退出数据库。

exit

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 143

Page 151: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

4.4.2.2 安装 Keystone

步骤1 安装Keystone包。

yum -y install openstack-keystone httpd mod_wsgi

步骤2 编辑“/etc/keystone/keystone.conf”文件。

vim /etc/keystone/keystone.conf

在[database]部分添加如下内容:

connection = mysql+pymysql://keystone:<PASSWORD>@controller/keystone

在[token]部分添加如下内容:

provider = fernet

说明

PASSWORD为4.4.2.1 创建Keystone数据库用户keystone访问数据库设置的密码。

controller为控制节点主机名controller

步骤3 填充Identity服务数据库。

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

步骤4 初始化Fernet密钥存储库。

keystone-manage fernet_setup --keystone-user keystone --keystone-groupkeystone

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

步骤5 引导身份服务。

keystone-manage bootstrap --bootstrap-password <PASSWORD> \

--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

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 144

Page 152: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

注意修改PASSWORD为keystone用户访问数据库的密码。

----结束

4.4.2.3 配置 Apache HTTP 服务

步骤1 编辑“/etc/httpd/conf/httpd.conf”文件,配置“ServerName”选项为控制节点。

说明

系统默认注释掉此项,需要找到该项并且修改。

步骤2 创建“/usr/share/keystone/wsgi-keystone.conf”文件的链接。

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

步骤3 启动 Apache HTTP 服务并配置其随系统启动。

systemctl enable httpd.service

systemctl start httpd.service

步骤4 配置管理帐户。

export OS_USERNAME=admin

export OS_PASSWORD=<PASSWORD>

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

说明

注意修改PASSWORD为用户admin的密码。

----结束

4.4.2.4 创建域、项目、用户和角色

步骤1 创建新域。

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

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 145

Page 153: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

该步骤介绍域的创建方式,默认的域已经在前面章节创建。

步骤2 创建Service项目。

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

步骤3 创建普通项目myproject(常规任务使用)。

openstack project create --domain default --description "Demo Project"myproject

步骤4 创建普通用户myuser(普通用户使用)。

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

并输入myuser用户密码。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 146

Page 154: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤5 创建角色。

openstack role create myrole

步骤6 将myrole角色添加到myproject项目和myuser用户。

openstack role add --project myproject --user myuser myrole

----结束

4.4.2.5 验证 Keystone

步骤1 取消环境变量。

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

说明

密码为自定义,为方便阅读,本文中全部以PASSWORD代替,此处的PASSWORD为admin用户的密码。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 147

Page 155: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤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

步骤4 创建openstack 客户端环境脚本。

1. 创建并编辑admin-openrc文件。

vim /etc/keystone/admin-openrc并添加如下内容:

export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=<PASSWORD> export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2

2. 创建和编辑demo-openrc文件。

vim /etc/keystone/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=<PASSWORD> export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2

说明

admin-openrc 为admin 用户的登录凭据。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 148

Page 156: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤5 使用脚本。

source /etc/keystone/admin-openrc

openstack token issue

----结束

4.4.3 安装配置并验证 PlacementPlacement提供用于跟踪资源提供者清单和用法的HTTP API。

说明

在控制节点安装配置并验证Placement。

4.4.3.1 创建 Placement 数据库

步骤1 进入数据库。

mysql -u root -p

步骤2 创建数据库。

CREATE DATABASE placement;

步骤3 授予对数据库的适当访问权限,<PASSWORD>设置为placement数据库访问密码。

GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost'IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY'<PASSWORD>';

步骤4 退出数据库访问客户端。

----结束

4.4.3.2 配置用户和端点

步骤1 使用admin用户登录OpenStack命令行。

source /etc/keystone/admin-openrc

步骤2 创建用户,需要设置placement用户的密码。

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

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 149

Page 157: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

这里输入的placement用户密码需要和 4.4.3.1 创建Placement数据库placement数据库的访问密码相同

步骤3 给placement用户添加admin权限并创建placement service。

openstack role add --project service --user placement admin

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

步骤4 创建Placement API服务端点。

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

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

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

步骤5 安装和配置组件。

1. 安装Placement安装包。

yum -y install openstack-placement-api2. 编辑“/etc/placement/placement.conf”文件并完成以下操作:

a. 在该[placement_database]部分中,配置数据库访问,PASSWPRD修改为为数据库设置的密码。[placement_database] connection = mysql+pymysql://placement:<PASSWORD>@controller/placement

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

[keystone_authtoken]auth_url = http://controller:5000/v3memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = placementpassword = <PASSWORD>

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 150

Page 158: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

PASSWORD修改为4.4.3.1 创建Placement数据库 创建placement用户密码。

步骤6 修改配置文件“/etc/httpd/conf.d/00-placement-api.conf", 在ErrorLog /var/log/placement/placement-api.log下面添加。

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

<Directory /usr/bin> <IfVersion >= 2.4> Require all granted </IfVersion> <IfVersion < 2.4> Order allow,deny Allow from all </IfVersion> </Directory>

----结束

4.4.3.3 启动服务

步骤1 填充Placement数据库。

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

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 151

Page 159: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

重启httpd服务。

systemctl restart httpd

----结束

4.4.3.4 验证 Placement

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 执行状态检查以确保一切正常。

placement-status upgrade check

步骤3 安装pip。

wget https://bootstrap.pypa.io/get-pip.py

python get-pip.py

步骤4 针对展示位置API运行以下命令

1. 安装osc-placement插件。

pip install osc-placement2. 列出可用的资源类和特征。

openstack --os-placement-api-version 1.2 resource class list --sort-columnnameopenstack --os-placement-api-version 1.6 trait list --sort-column name

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 152

Page 160: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

4.4.4 安装配置并验证 GlanceGlance是存储和检索虚拟机实例磁盘镜像。在虚拟机实例运行期间,Nova计算服务组件可以使用此服务。

说明

在控制节点安装配置并验证Glance。

4.4.4.1 创建 Glance 数据库

步骤1 进入数据库。

mysql -u root -p

步骤2 创建glance数据库。

CREATE DATABASE glance;

步骤3 授予glance访问权限,PASSWORD为glance用户访问数据库设置的密码,执行完成后用exit命令退出数据库。

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY'<PASSWORD>';

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY'<PASSWORD>';

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 153

Page 161: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

4.4.4.2 创建角色和用户

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 创建glance用户, 并设置用户密码。

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

说明

这里输入的glance用户密码需要和 4.4.4.1 创建Glance数据库 glance数据库的访问密码一致。

步骤3 将角色添加到项目和用户。

openstack role add --project service --user glance admin

步骤4 创建服务实体。

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

步骤5 创建Image服务API端点。

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

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 154

Page 162: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

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

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

----结束

4.4.4.3 安装并配置 Glance

步骤1 yum安装。

yum -y install openstack-glance

步骤2 编辑“/etc/glance/glance-api.conf”文件。

1. 在该[database]部分中,配置数据库访问。[database]connection = mysql+pymysql://glance:<PASSWORD>@controller/glance

说明

PASSWORD为4.4.4.1 创建Glance数据库glance用户访问数据库的密码。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 155

Page 163: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

2. 在[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 = <PASSWORD>

[paste_deploy] flavor = keystone

说明

PASSWORD为4.4.4.1 创建Glance数据库glance用户访问数据库的密码。

3. 在该[glance_store]部分中,配置本地文件系统存储和映像文件的位置。[glance_store] stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/

步骤3 编辑“/etc/glance/glance-registry.conf”文件并完成以下操作:

1. 在该[database]部分中,配置数据库访问。[database] connection = mysql+pymysql://glance:<PASSWORD>@controller/glance

2. 在[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 = <PASSWORD>

[paste_deploy] flavor = keystone

说明

PASSWORD为4.4.4.1 创建Glance数据库glance用户访问数据库的密码。

步骤4 填充Image服务数据库。

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

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 156

Page 164: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤5 启动Image服务并将其配置为在系统引导时启动。

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

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

----结束

4.4.4.4 验证 Glance

步骤1 使用admin凭据。

source /etc/keystone/admin-openrc

步骤2 下载镜像。

进入 “/var/lib/glance/images”

wget https://download.cirros-cloud.net/0.5.1/cirros-0.5.1-aarch64-disk.img

步骤3 上传镜像到glance。

openstack image create "cirros-0.5.1-aarch64" --file cirros-0.5.1-aarch64-disk.img --disk-format qcow2 --container-format bare --public

步骤4 确认上传的镜像和属性。

openstack image list

----结束

4.4.5 安装配置并验证 NovaNova管理OpenStack项目中虚拟机实例计算资源的全部生命周期,包括创建、调度和结束。

4.4.5.1 安装 QEMU说明

在计算(x86-compute/arm-compute)节点执行以下操作。

步骤1 安装依赖包。

yum -y install glib2-devel zlib-devel pixman-devel libaio-devel librdb-devel

步骤2 下载源码。

● 在线:wget https://download.qemu.org/qemu-4.0.0.tar.xz● 离线:在可以访问互联网的机器上访问https://download.qemu.org/

qemu-4.0.0.tar.xz下载源码后拷贝至目标机器。

步骤3 编译安装。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 157

Page 165: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

1. 解压并进入QEMU目录。

tar -xvf qemu-4.0.0.tar.xzcd qemu-4.0.0

2. 配置安装。

./configure --enable-rbd --enable-linux-aio

make -j 50make install

步骤4 添加lib库。

sed -i '$ainclude /usr/local/lib' /etc/ld.so.conf

步骤5 使配置生效。

ldconfig

步骤6 版本验证。

1. 查找软件所在位置。

which qemu-img2. 查询查找到的软件版本。

查询版本应为4.0.0。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 158

Page 166: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

注意

若查询版本不为4.0.0说明新版本未生效,应将“/usr/bin”目录下qemu相关文件备份。

mv /usr/libexec/qemu-kvm{,.bak}

mv /usr/libexec/qemu-bridge-helper{,.bak}

mv /usr/bin/qemu-img{,.bak}

mv /usr/bin/qemu-io{,.bak}

mv /usr/bin/qemu-nbd{,.bak}

mv /usr/bin/qemu-ga{,.bak}

mv /usr/bin/qemu-pr-helper{,.bak}

将“/usr/local/bin/”目录下QEMU相关文件链接至“/usr/bin”。

ln -s /usr/local/libexec/qemu-bridge-helper /usr/libexec/

ln -s /usr/local/bin/qemu-ga /usr/bin/

ln -s /usr/local/bin/qemu-img /usr/bin/

ln -s /usr/local/bin/qemu-io /usr/bin/

ln -s /usr/local/bin/qemu-nbd /usr/bin/

ln -s /usr/local/bin/qemu-pr-helper /usr/bin/

x86-computer计算节点执行:

ln -s /usr/local/bin/qemu-system-x86_64 /usr/libexec/qemu-kvm

ln -s /usr/libexec/qemu-kvm /usr/bin/

arm-compute计算节点执行:

ln -s /usr/local/bin/qemu-system-aarch64 /usr/libexec/qemu-kvm

ln -s /usr/libexec/qemu-kvm /usr/bin/

----结束

4.4.5.2 安装 libvirt

说明

在计算节点(x86-compute/arm-compute)执行以下操作。使用的是 libvirt-5.6版本。

步骤1 安装edk2

在线:wget https://www.kraxel.org/repos/firmware.repo -O /etc/yum.repos.d/firmware.repo

同时需要关闭yum ssl校验。

vim /etc/yum.conf

增加如下内容:

sslverify=false

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 159

Page 167: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

● x86-compute计算节点

yum -y install edk2.git.x86_64● arm-compute计算节点

yum -y install edk2.git-aarch64

步骤2 安装依赖包。

yum -y install gnutls-devel libnl-devel libxml2-devel yajl-devel device-mapper-devel libpciaccess-devel

步骤3 安装libvirt-5.6.0 (源码编译安装方式)。

1. 下载源码。

wget https://libvirt.org/sources/libvirt-5.6.0-1.fc30.src.rpm -O /root/libvirt-5.6.0-1.fc30.src.rpm

2. 编译,按照如下步骤依次完成:

cd /root/rpm -i libvirt-5.6.0-1.fc30.src.rpmyum -y install iscsi-initiator-utils libxml2-devel readline-devel ncurses-devel libtasn1-devel gnutls-devel libattr-devel libblkid-devel augeassystemd-devel libpciaccess-devel yajl-devel sanlock-devel libpcap-devellibnl3-devel libselinux-devel dnsmasq radvd cyrus-sasl-devel libacl-develparted-devel device-mapper-devel xfsprogs-devel librados2-devel librbd1-devel glusterfs-api-devel glusterfs-devel numactl-devel libcap-ng-develfuse-devel netcf-devel libcurl-devel audit-libs-devel systemtap-sdt-develnfs-utils dbus-devel scrub numad qemu-imgrpmbuild -ba ~/rpmbuild/SPECS/libvirt.spec

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 160

Page 168: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

如果出错则可以使用另外一种方法编译:

rpmbuild --rebuild /root/libvirt-5.6.0-1.fc30.src.rpm

3. 安装。

– ARM 计算节点:

yum install -y /root/rpmbuild/RPMS/aarch64/*.rpm– X86计算节点:

yum install -y /root/rpmbuild/RPMS/x86_64/*.rpm4. 重启libvirt服务。

systemctl restart libvirtd

步骤4 修改配置文件“/etc/libvirt/qemu.conf”。

1. 添加AAVMF内容。nvram = ["/usr/share/AAVMF/AAVMF_CODE.fd:/usr/share/AAVMF/AAVMF_VARS.fd","/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2.git/aarch64/vars-template-pflash.raw"]

2. 检验libvirt和QEMU版本。

virsh version

其中libvirt 版本为5.6.0,如果安装了QEMU,则QEMU应该为 4.0.0,否则为默认版本2.12.0。

----结束

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 161

Page 169: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4.4.5.3 创建 Nova 数据库

说明

在controller控制节点执行以下操作。

步骤1 使用root用户连接数据库。

mysql -u root -p

步骤2 创建nova,nova_api,nova_cell0数据库。

CREATE DATABASE nova_api;

CREATE DATABASE nova;

CREATE DATABASE nova_cell0;

步骤3 授予对数据库的适当访问权限。

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \

IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \

IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \

IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \

IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \

IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \

IDENTIFIED BY '<PASSWORD>';

步骤4 退出数据库。

exit

----结束

4.4.5.4 创建角色和用户

说明

在controller控制节点执行以下操作。

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 创建nova用户,并设置nova用户密码。

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

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 162

Page 170: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

这里输入的nova用户密码需要和4.4.5.3 创建Nova数据库 nova数据库的访问密码一致

步骤3 将admin角色添加到nova用户。

openstack role add --project service --user nova admin

步骤4 创建nova实体。

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

步骤5 创建compute API服务端点。

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

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

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

----结束

4.4.5.5 安装和配置 Nova(控制节点)

说明

在控制节点执行以下操作。

步骤1 安装组件。

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

步骤2 配置Nova, 编辑“/etc/nova/nova.conf”文件。

1. 启用计算和元数据API,配置RabbitMQ消息队列访问以及启用网络服务的支持。[DEFAULT] enabled_apis = osapi_compute,metadata transport_url = rabbit://openstack:<PASSWORD>@controller my_ip = 192.168.100.120 use_neutron = true firewall_driver = nova.virt.firewall.NoopFirewallDriver allow_resize_to_same_host = true [filter_scheduler]enabled_filters=RetryFilter,AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter

说明

my_ip为表4-3 controller控制节点的管理IP,PASSWORD为4.4.1.9 安装消息队列rabbitmq服务为用户openstack设置的密码

2. 配置数据库访问。[api_database] connection = mysql+pymysql://nova:<PASSWORD>@controller/nova_api

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 163

Page 171: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

[database] connection = mysql+pymysql://nova:<PASSWORD>@controller/nova

说明

PASSWORD为4.4.5.3 创建Nova数据库 nova用户的密码。

3. 配置身份服务访问。[api] auth_strategy = keystone

[keystone_authtoken]auth_url = http://controller:5000/v3 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = <PASSWORD>

说明

PASSWORD为4.4.5.3 创建Nova数据库 nova用户的密码。

4. 配置“/etc/nova/nova.conf”的[neutron]部分,启用元数据代理并配置密码。[neutron] url = http://controller:9696 auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = <PASSWORD>service_metadata_proxy = true metadata_proxy_shared_secret = <PASSWORD>

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

5. 配置VNC代理以使用控制器节点的管理接口IP地址。[vnc] enabled = true server_listen = $my_ip server_proxyclient_address = $my_ip novncproxy_host=0.0.0.0 novncproxy_port=6080 novncproxy_base_url=http://192.168.100.120:6080/vnc_auto.html

说明

注意将192.168.100.120改成相应的控制节点管理IP。

6. 配置Image服务API的位置。[glance] api_servers = http://controller:9292

7. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/nova/tmp

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 164

Page 172: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

8. 配置对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 = <PASSWORD>

说明

PASSWORD为4.4.3.1 创建Placement数据库 placement用户密码。

9. 填充nova-api数据库。su -s /bin/sh -c "nova-manage api_db sync" nova su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova su -s /bin/sh -c "nova-manage db sync" nova

10. 验证cell0和cell1是否正确注册。

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

11. 启动compute服务并设置为系统引导时启动。

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

----结束

4.4.5.6 安装和配置 Nova(计算节点)

说明

在所有计算(x86-compute/arm-compute)节点执行以下操作。

步骤1 安装组件。

yum -y install openstack-nova-compute

步骤2 编辑文件“/etc/nova/nova.conf”。

1. 启用计算和元数据API。[DEFAULT] enabled_apis = osapi_compute,metadata transport_url = rabbit://openstack:<PASSWORD>@controller my_ip = 192.168.100.121 use_neutron = true firewall_driver = nova.virt.firewall.NoopFirewallDriver

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 165

Page 173: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

此处的my_ip 设置注意设置为表4-3计算节点自身的管理IP。

2. 配置身份服务访问。[api] auth_strategy = keystone

[keystone_authtoken] auth_url = http://controller:5000/v3 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = <PASSWORD>

说明

PASSWORD为4.4.5.3 创建Nova数据库 nova用户访问数据库的密码。

3. 配置“/etc/nova/nova.conf”的[neutron]部分,在 [neutron]部分,添加如下信息。[neutron]url = http://controller:9696auth_url = http://controller:5000auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = <PASSWORD>

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户访问数据库的密码。

4. 启用并配置远程控制台访问。[vnc] enabled = true server_listen = 0.0.0.0 server_proxyclient_address = $my_ip novncproxy_base_url = http://controller:6080/vnc_auto.html vncserver_proxyclient_address = $my_ip

说明

此处的my_ip 设置注意设置为表4-3计算节点自身的管理IP。

5. 配置Image服务API的位置。[glance] api_servers = http://controller:9292

6. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/nova/tmp

7. 配置Placement API。[placement]region_name = RegionOne project_domain_name = Default project_name = service auth_type = password

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 166

Page 174: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

user_domain_name = Default auth_url = http://controller:5000/v3 username = placement password = <PASSWORD>

说明

PASSWORD为4.4.3.1 创建Placement数据库 placement用户访问数据库的密码。

8. 在[libvirt]模块添加如下信息。virt_type = kvm

步骤3 启动Compute服务及其依赖项,并将它们配置为在系统引导时自动启动。

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

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

----结束

4.4.5.7 将计算节点添加到单元数据库

说明

在controller控制节点执行以下操作。

步骤1 使用admin用户登录OpenStack命令行。

source /etc/keystone/admin-openrc

步骤2 查看数据库的主机。

openstack compute service list --service nova-compute

步骤3 发现主机。

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

注意添加新计算节点时,需要在控制器节点执行以下命令,以注册这些新计算节点。

nova-manage cell_v2 discover_hosts

或者,在以下位置设置适当的间隔 ,让控制节点周期性发现计算节点。

vim /etc/nova/nova.conf

[scheduler] discover_hosts_in_cells_interval = 300

----结束

4.4.5.8 验证 Nova

Nova基础服务功能验证

步骤1 列出服务组件。

openstack compute service list

步骤2 列出Identity服务中的API端点以验证与Identity服务的连接。

openstack catalog list

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 167

Page 175: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤3 列出Glance服务中的Image。

openstack image list

步骤4 检查单元格和放置API是否正常运行以及其他必要的先决条件是否到位。

nova-status upgrade check

----结束

4.4.5.9 Nova 常用命令

命令行 功能描述

openstack server create --flavorm1.nano --image cirros \--nic net-id=provider --security-groupdefault \--key-name mykey provider-vm

创建虚拟机实例

openstack server start provider-vm 启动实例

openstack server list 查看所有实例

openstack server stop vm1 关闭实例

openstack server delete vm1 删除所选的实例

4.4.6 安装配置并验证 NeutronNeutron为其他服务组件提供网络连接功能,如Nova计算服务组件。同时,提供API给用户使用。支持多个网络供应商的设备和技术。

4.4.6.1 创建 Neutron 数据库

说明

在控制节点执行以下操作。

步骤1 以root身份连接数据库。

mysql -u root -p

步骤2 创建Neutron数据库。

CREATE DATABASE neutron;

步骤3 授予适当访问权限,PASSWORD为neutron用户在数据库设置的访问密码。

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \

IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \

IDENTIFIED BY '<PASSWORD>';

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 168

Page 176: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

PASSWORD为neutron用户访问数据库的密码。

步骤4 退出数据库。

exit

----结束

4.4.6.2 创建服务凭据

在控制节点执行以下操作。

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 创建Neutron用户并设置密码。

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

说明

这里输入的neutron用户密码需要和4.4.6.1 创建Neutron数据库 neutron数据库的访问密码一致。

步骤3 将admin角色添加到Neutron用户。

openstack role add --project service --user neutron admin

步骤4 创建Neutron服务实体。

openstack service create --name neutron --description "OpenStackNetworking" network

步骤5 创建网络服务器API端点。

openstack endpoint create --region RegionOne network public http://controller:9696

openstack endpoint create --region RegionOne network internal http://controller:9696

openstack endpoint create --region RegionOne network admin http://controller:9696

----结束

4.4.6.3 网络类型

OpenStack网络方式比较多,可以采用Provider模式或者Self-service模式。部署方式又可以分为LinuxBridge 和OVS。实际部署时只需要在以下四种网络类型和部署方式当中选择其中之一即可。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 169

Page 177: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4.4.6.4 安装和配置 Neutron(Provider-LinuxBridge)

须知

OpenStack网络方式比较多,可以采用Provider模式或者Self-service模式。部署方式又可以分为LinuxBridge 和OVS。实际部署时只需要在Provider+ LinuxBridge、Provider+OVS、Self-service+ LinuxBridge、Self-service+OVS四种模式中选取其中之一即可。

控制节点

在Provider-LinuxBridge网络类型的控制节点controller执行以下操作。

步骤1 安装组件。

yum -y install openstack-neutron openstack-neutron-ml2 ebtables

步骤2 编辑配置文件/etc/neutron/neutron.conf。

1. 配置数据库访问。[database] connection = mysql+pymysql://neutron:<PASSWORD>@controller/neutron

说明

PASSWORD为 4.4.6.1 创建Neutron数据库neutron用户的密码。

2. 启用ML2插件,禁用其他插件。[DEFAULT] core_plugin = ml2 service_plugins = transport_url = rabbit://openstack:<PASSWORD>@controller auth_strategy = keystone notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true

说明

– service_plugins为赋空值

– PASSWORD为4.4.1.9 安装消息队列 openstack用户的密码。

3. 配置身份访问。[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 = neutron password = <PASSWORD>

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

4. 配置[nova]模块参数。[nova] auth_url = http://controller:5000 auth_type = password

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 170

Page 178: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = <PASSWORD>

说明

– 配置文件中默认没有该模块,需要新增。

– PASSWORD为4.4.5.3 创建Nova数据库 nova用户的密码。

5. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/neutron/tmp

步骤3 编辑ML2插件/etc/neutron/plugins/ml2/ml2_conf.ini。

1. 启用flat和vlan网络。

默认是没有的,需要新建[ml2]、[ml2_type_flat]、[ml2_type_vlan]和[securitygroup]。[ml2] type_drivers = flat,vlan tenant_network_types = mechanism_drivers = linuxbridge extension_drivers = port_security [ml2_type_flat] flat_networks = provider-arm,provider-x86 [ml2_type_vlan] network_vlan_ranges = provider-arm,provider-x86 [securitygroup] enable_ipset = true

说明

tenant_network_types为赋空值。

步骤4 配置Computer 服务以使用Networking服务。

vim /etc/nova/nova.conf

配置访问参数,启用元数据代理并配置密码。

[neutron] # ... url = http://controller:9696 auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = <PASSWORD> service_metadata_proxy = true metadata_proxy_shared_secret = <PASSWORD>

说明

执行该操作前,请确保已经安装了Nova。

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 171

Page 179: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤5 确保您的Linux操作系统内核支持网桥过滤器。

在“/etc/sysctl.conf”中添加:

net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1

步骤6 运行以下命令,添加网桥过滤器。

modprobe br_netfilter

sysctl -p

sed -i '$amodprobe br_netfilter' /etc/rc.local

步骤7 创建网络初始化。

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

步骤8 填充数据库。

su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \

--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

步骤9 启动网络服务并配置为系统引导时启动。

systemctl enable neutron-server.service

systemctl start neutron-server.service

----结束

网络节点

在Provider-LinuxBridge网络类型的网络节点(x86-compute/arm-compute)执行以下操作。

步骤1 安装组件。

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

步骤2 配置公共组件,编辑/etc/neutron/neutron.conf文件。

1. 配置RabbitMQ 消息队列访问。[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 172

Page 180: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

PASSWORD为4.4.1.9 安装消息队列rabbitmq服务为openstack用户设置的密码。

2. 配置身份访问服务。[DEFAULT] 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 = neutron password = <PASSWORD>

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

3. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/neutron/tmp

步骤3 配置DHCP代理。

编辑“/etc/neutron/dhcp_agent.ini”文件。

● 对于x86网络节点,属于az-x86,新增如下配置后保存并退出。[DEFAULT]interface_driver = linuxbridge dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true [AGENT] availability_zone = az-x86

● 对于arm网络节点,属于az-arm,新增如下配置后保存并退出。[DEFAULT]interface_driver = linuxbridge dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true [AGENT] availability_zone = az-arm

步骤4 配置元数据代理。

编辑“/etc/neutron/metadata_agent.ini”。配置元数据主机和共享秘钥。

[DEFAULT] nova_metadata_host = controller metadata_proxy_shared_secret = <PASSWORD>

说明

此处PASSWORD使用4.4.6.1 创建Neutron数据库 neutron用户的密码。

步骤5 配置Linux桥代理,编辑“/etc/neutron/plugins/ml2/linuxbridge_agent.ini”文件。

1. 将Provider虚拟网络映射到物理网络。

– 对于x86网络节点,属于az-x86,配置provider-x86:[linux_bridge] physical_interface_mappings = provider-x86:enp64s0

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 173

Page 181: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

– 对于arm网络节点,属于az-arm,配置provider-arm:[linux_bridge] physical_interface_mappings = provider-arm:enp64s0

说明

此处的provider网络使用的是enp64s0网口,部署时根据实际情况调整。这里不是管理网络所用的物理网卡,是为业务网络准备的网卡。 参考“集群环境”, 本指导文档中为enp64s0。

2. 禁用vxlan覆盖网络。[vxlan] enable_vxlan = false

3. 启用安全组并配置Linux网桥iptables防火墙驱动程序,然后保存并退出。[securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

步骤6 确保您的Linux操作系统内核支持网桥过滤器。

在“/etc/sysctl.conf”中添加:

net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1

步骤7 运行以下命令,添加网桥过滤器。

modprobe br_netfilter

sysctl -p

sed -i '$amodprobe br_netfilter' /etc/rc.local

步骤8 启动网络服务并配置为系统引导时启动。

systemctl enable neutron-linuxbridge-agent.service \

neutron-dhcp-agent.service neutron-metadata-agent.service

systemctl start neutron-linuxbridge-agent.service \

neutron-dhcp-agent.service neutron-metadata-agent.service

----结束

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 174

Page 182: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

计算节点

在Provider-LinuxBridge网络类型的计算节点(x86-compute/arm-compute)执行以下操作。由于当前将网络节点和计算节点合部在同一节点上,会存在部分重复的配置,跳过这些配置即可。

步骤1 安装组件。

yum -y install openstack-neutron-linuxbridge ebtables ipset

步骤2 配置公共组件,编辑/etc/neutron/neutron.conf文件。

1. 配置RabbitMQ 消息队列访问。[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

说明

PASSWORD为4.4.1.9 安装消息队列rabbitmq服务为openstack用户设置的密码。

2. 配置身份访问服务。[DEFAULT] 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 = neutron password = <PASSWORD>

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

3. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/neutron/tmp

步骤3 配置Linux桥代理,编辑“/etc/neutron/plugins/ml2/linuxbridge_agent.ini”文件,添加以下3项。

1. 提供者虚拟网络映射到提供者物理网络接口。

– 对于x86计算节点,属于az-x86,配置provider-x86:[linux_bridge] physical_interface_mappings = provider-x86:enp64s0

– 对于arm计算节点,属于az-arm,配置provider-arm:[linux_bridge] physical_interface_mappings = provider-arm:enp64s0

说明

此处的provider网络使用的是enp64s0网口,部署时根据实际情况调整。这里不是管理网络所用的物理网卡,是为业务网络准备的网卡。参考“集群环境”, 本指导文档中为enp64s0。

2. 禁用vxlan覆盖网络。[vxlan] enable_vxlan = false

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 175

Page 183: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

3. 启用安全组并配置Linux网桥iptables防火墙驱动程序。[securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

步骤4 确保您的Linux操作系统内核支持网桥过滤器。

在“/etc/sysctl.conf”中添加:

net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1

步骤5 运行以下命令,添加网桥过滤器。

modprobe br_netfilter

sysctl -p

sed -i '$amodprobe br_netfilter' /etc/rc.local

步骤6 启动Linux网桥代理并将其配置为在系统引导时启动。

systemctl enable neutron-linuxbridge-agent.service

systemctl start neutron-linuxbridge-agent.service

----结束

4.4.6.5 安装和配置 Neutron(Provider-OVS)

须知

OpenStack网络方式比较多,可以采用Provider模式或者Self-service模式。部署方式又可以分为LinuxBridge 和OVS。实际部署时只需要在Provider+ LinuxBridge、Provider+OVS、Self-service+ LinuxBridge、Self-service+OVS四种模式中选取其中之一即可。

控制节点

在Provider-OVS网络类型的控制节点controller执行以下操作。

步骤1 安装组件。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 176

Page 184: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

yum -y install openstack-neutron openstack-neutron-ml2 ebtables

步骤2 编辑配置文件/etc/neutron/neutron.conf。

1. 配置数据库访问。[database] connection = mysql+pymysql://neutron:<PASSWORD>@controller/neutron

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

2. 启用ML2插件,禁用其他插件。[DEFAULT] core_plugin = ml2 service_plugins = transport_url = rabbit://openstack:<PASSWORD>@controller auth_strategy = keystone notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true

说明

– service_plugins为赋空值。

– PASSWORD为4.4.1.9 安装消息队列 openstack用户的密码。

3. 配置身份访问。[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 = neutron password = <PASSWORD>

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

4. 配置[nova]模块参数。[nova] auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = <PASSWORD>

说明

– 配置文件中默认没有该模块,需要新增。

– PASSWORD为4.4.5.3 创建Nova数据库 nova用户的密码。

5. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/neutron/tmp

步骤3 编辑ML2插件/etc/neutron/plugins/ml2/ml2_conf.ini。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 177

Page 185: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

1. 启用flat和vlan网络。

默认是没有的,需要新建 [ml2]、[ml2_type_flat]、[ml2_type_vlan]和[securitygroup]。[ml2] type_drivers = flat,vlan tenant_network_types = mechanism_drivers = openvswitch extension_drivers = port_security [ml2_type_flat] flat_networks = provider-arm,provider-x86 [ml2_type_vlan] network_vlan_ranges = provider-arm,provider-x86 [securitygroup] enable_ipset = true

说明

tenant_network_types为赋空值。

步骤4 配置Computer 服务以使用Networking服务。

vim /etc/nova/nova.conf

配置访问参数,启用元数据代理并配置密码。

[neutron] # ... url = http://controller:9696 auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = <PASSWORD> service_metadata_proxy = true metadata_proxy_shared_secret = <PASSWORD>

说明

● 执行该操作前,请确保已经安装了Nova。

● PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

步骤5 修改系统配置文件“/etc/sysctl.conf”。

1. 添加如下内容:net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0

2. 使配置生效。

sysctl -p

步骤6 创建网络初始化。

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

步骤7 填充数据库。

su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 178

Page 186: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

步骤8 启动网络服务并配置为系统引导时启动。

systemctl enable neutron-server.service

systemctl start neutron-server.service

----结束

网络节点

在Provider-OVS网络类型的网络节点(x86-compute/arm-compute)执行以下操作。

步骤1 安装组件。

yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch ebtables

步骤2 配置公共组件,编辑/etc/neutron/neutron.conf文件。

1. 配置RabbitMQ 消息队列访问。[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

说明

PASSWORD为4.4.1.9 安装消息队列rabbitmq服务为openstack用户设置的密码

2. 配置身份访问服务。[DEFAULT] 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 = neutron password = <PASSWORD>

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

3. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/neutron/tmp

步骤3 配置DHCP代理。

编辑“/etc/neutron/dhcp_agent.ini”文件。

● 对于x86网络节点,属于az-x86,新增如下配置后保存并退出。[DEFAULT] dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq interface_driver = openvswitch enable_isolated_metadata = true force_metadata = true [AGENT] availability_zone = az-x86

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 179

Page 187: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

● 对于arm网络节点,属于az-arm,新增如下配置后保存并退出。[DEFAULT] dhcp_driver = neutron.agent.linux.dhcp.Dnsmasqinterface_driver = openvswitch enable_isolated_metadata = true force_metadata = true [AGENT] availability_zone = az-arm

步骤4 配置元数据代理。

编辑“/etc/neutron/metadata_agent.ini”。配置元数据主机和共享秘钥。

[DEFAULT] nova_metadata_host = controller metadata_proxy_shared_secret = <PASSWORD>

说明

此处PASSWORD使用4.4.6.1 创建Neutron数据库 neutron用户的密码。

步骤5 修改系统配置文件“/etc/sysctl.conf”。

1. 添加如下内容:net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0

2. 使配置生效。

sysctl -p

步骤6 启动网络服务并配置为系统引导时启动。

systemctl enable neutron-openvswitch-agent.service \

neutron-dhcp-agent.service neutron-metadata-agent.service

systemctl start neutron-openvswitch-agent.service \

neutron-dhcp-agent.service neutron-metadata-agent.service

----结束

计算节点

在Provider-OVS网络类型的计算节点(x86-compute/arm-compute)执行以下操作。由于当前将网络节点和计算节点合部在同一节点上,会存在部分重复的配置,跳过这些配置即可。

步骤1 安装组件。

yum -y install openstack-neutron openstack-neutron-openvswitch ebtablesipset

步骤2 配置公共组件,编辑/etc/neutron/neutron.conf文件。

1. 配置RabbitMQ 消息队列访问。[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

说明

PASSWORD为4.4.1.10 安装memcachedrabbitmq服务为openstack用户设置的密码。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 180

Page 188: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

2. 配置身份访问服务。[DEFAULT] 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 = neutron password = <PASSWORD>

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

3. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/neutron/tmp

步骤3 配置openstack agent,编辑文件“/etc/neutron/plugins/ml2/openvswitch_agent.ini”,新增 [linux_openvswitch]、[vxlan]、[ovs]和[securitygroup]。

● 对于x86计算节点,属于az-x86,配置provider-x86:[linux_openvswitch] physical_interface_mappings = provider-x86:enp64s0 [vxlan] enable_vxlan = false [ovs] bridge_mappings = provider-x86:br-provider [securitygroup] enable_security_group=true firewall_driver = iptables_hybrid

● 对于arm计算节点,属于az-arm,配置provider-arm:[linux_openvswitch] physical_interface_mappings = provider-arm:enp64s0 [vxlan] enable_vxlan = false [ovs] bridge_mappings = provider-arm:br-provider [securitygroup] enable_security_group=true firewall_driver = iptables_hybrid

步骤4 修改系统配置文件“/etc/sysctl.conf”。

1. 添加如下内容:net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0

2. 使配置生效。

sysctl -p

步骤5 启动OVS代理并将其配置为在系统引导时启动。

systemctl enable neutron-openvswitch-agent.service

systemctl start neutron-openvswitch-agent.service

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 181

Page 189: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤6 创建ovs provider。

ovs-vsctl add-br br-provider

ovs-vsctl add-port br-provider enp64s0

----结束

4.4.6.6 安装和配置 Neutron(Self service-LinuxBridge)

须知

OpenStack网络方式比较多,可以采用Provider模式或者Self-service模式。部署方式又可以分为LinuxBridge 和OVS。实际部署时只需要在Provider+ LinuxBridge、Provider+OVS、Self-service+ LinuxBridge、Self-service+OVS四种模式中选取其中之一即可。

控制节点

在Self service-LinuxBridge网络类型的控制节点controller执行以下操作。

步骤1 安装组件。

yum -y install openstack-neutron openstack-neutron-ml2 ebtables

步骤2 编辑配置文件/etc/neutron/neutron.conf。

1. 配置数据库访问。[database] connection = mysql+pymysql://neutron:<PASSWORD>@controller/neutron

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

2. 修改[DEFAULT]模块内容。[DEFAULT] core_plugin = ml2 service_plugins = routertransport_url = rabbit://openstack:<PASSWORD>@controller auth_strategy = keystone notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true allow_overlapping_ips = true

说明

PASSWORD为4.4.1.9 安装消息队列 openstack用户的密码。

3. 配置身份访问。[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 = neutron password = <PASSWORD>

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 182

Page 190: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

4. 配置[nova]模块参数。[nova] auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = <PASSWORD>

说明

– 配置文件中默认没有该模块,需要新增。

– PASSWORD为4.4.5.3 创建Nova数据库 nova用户的密码。

5. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/neutron/tmp

步骤3 编辑ML2插件/etc/neutron/plugins/ml2/ml2_conf.ini。

启用flat, vlan和vxlan网络。

默认是没有的,需要新建[ml2]、[ml2_type_flat]、[ml2_type_vlan]和[securitygroup]。

[ml2] type_drivers = flat,vlan,vxlan tenant_network_types = vxlanmechanism_drivers = linuxbridge,l2population extension_drivers = port_security [ml2_type_flat] flat_networks = provider-arm,provider-x86 [ml2_type_vlan] network_vlan_ranges = provider-arm,provider-x86 [ml2_type_vxlan] vni_ranges = 1:1000 [securitygroup] enable_ipset = true

步骤4 配置Computer 服务以使用Networking服务。

vim /etc/nova/nova.conf

配置访问参数,启用元数据代理并配置密码。

[neutron] # ... url = http://controller:9696 auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = <PASSWORD> service_metadata_proxy = true metadata_proxy_shared_secret = <PASSWORD>

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 183

Page 191: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

● 执行该操作前,请确保已经安装了Nova。

● PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

步骤5 确保您的Linux操作系统内核支持网桥过滤器。

在“/etc/sysctl.conf”中添加:

net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1

步骤6 运行以下命令,添加网桥过滤器。

modprobe br_netfilter

sysctl -p

sed -i '$amodprobe br_netfilter' /etc/rc.local

步骤7 创建网络初始化。

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

步骤8 填充数据库。

su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \

--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

步骤9 启动网络服务并配置为系统引导时启动。

systemctl enable neutron-server.service

systemctl start neutron-server.service

----结束

网络节点

在Self service-LinuxBridge网络类型的网络节点(x86-compute/arm-compute)执行以下操作。

步骤1 安装组件。

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

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 184

Page 192: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤2 配置公共组件,编辑/etc/neutron/neutron.conf文件。

1. 配置RabbitMQ 消息队列访问。[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

说明

PASSWORD为4.4.1.9 安装消息队列rabbitmq服务为openstack用户设置的密码。

2. 配置身份访问服务。[DEFAULT] 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 = neutron password = <PASSWORD>

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

3. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/neutron/tmp

步骤3 配置DHCP代理。

编辑“/etc/neutron/dhcp_agent.ini”文件。

● 对于x86网络节点,属于az-x86,新增如下配置后保存并退出。[DEFAULT]interface_driver = linuxbridge dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true [AGENT] availability_zone = az-x86

● 对于arm网络节点,属于az-arm,新增如下配置后保存并退出。[DEFAULT]interface_driver = linuxbridge dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true [AGENT] availability_zone = az-arm

步骤4 配置元数据代理。

编辑“/etc/neutron/metadata_agent.ini”。配置元数据主机和共享秘钥。

[DEFAULT] nova_metadata_host = controller metadata_proxy_shared_secret = <PASSWORD>

说明

此处PASSWORD使用4.4.6.1 创建Neutron数据库 neutron用户的密码。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 185

Page 193: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤5 配置L3 agent。

编辑“/etc/neutron/l3_agent.ini”文件。

● 对于x86网络节点,属于az-x86,新增如下配置后保存并退出。[DEFAULT]interface_driver = linuxbridge[AGENT] availability_zone = az-x86

● 对于arm网络节点,属于az-arm,新增如下配置后保存并退出。[DEFAULT]interface_driver = linuxbridge[AGENT] availability_zone = az-arm

步骤6 配置Linux桥代理,编辑“/etc/neutron/plugins/ml2/linuxbridge_agent.ini”文件。

1. 将Provider虚拟网络映射到物理网络。

– 对于x86网络节点,属于az-x86,配置provider-x86:[linux_bridge] physical_interface_mappings = provider-x86:enp64s0

– 对于arm网络节点,属于az-arm,配置provider-arm:[linux_bridge] physical_interface_mappings = provider-arm:enp64s0

说明

此处的provider网络使用的是enp64s0网口,部署时根据实际情况调整。这里不是管理网络所用的物理网卡,是为业务网络准备的网卡, 参考“集群环境”。

2. 使能vxlan覆盖网络。[vxlan] enable_vxlan = true local_ip = 192.168.100.121 l2_population = true

说明

local_ip为当前网络节点的管理IP。

3. 启用安全组并配置Linux网桥iptables防火墙驱动程序,然后保存并退出。[securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

步骤7 确保您的Linux操作系统内核支持网桥过滤器。

在“/etc/sysctl.conf”中添加:

net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 186

Page 194: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤8 运行以下命令,添加网桥过滤器。

modprobe br_netfilter

sysctl -p

sed -i '$amodprobe br_netfilter' /etc/rc.local

步骤9 启动网络服务并配置为系统引导时启动。

systemctl enable neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

neutron-metadata-agent.service neutron-l3-agent.service

systemctl start neutron-linuxbridge-agent.service neutron-dhcp-agent.service\

neutron-metadata-agent.service neutron-l3-agent.service

----结束

计算节点

在Self service-LinuxBridge网络类型的计算节点(x86-compute/arm-compute)执行以下操作。由于当前将网络节点和计算节点合部在同一节点上,会存在部分重复的配置,跳过这些配置即可。

步骤1 安装组件。

yum -y install openstack-neutron-linuxbridge ebtables ipset

步骤2 配置公共组件,编辑/etc/neutron/neutron.conf文件。

1. 配置RabbitMQ 消息队列访问。[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

说明

PASSWORD为4.4.1.9 安装消息队列rabbitmq服务为openstack用户设置的密码。

2. 配置身份访问服务。[DEFAULT] auth_strategy = keystone [keystone_authtoken] www_authenticate_uri = http://controller:5000

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 187

Page 195: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = <PASSWORD>

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

3. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/neutron/tmp

步骤3 配置Linux桥代理,编辑“/etc/neutron/plugins/ml2/linuxbridge_agent.ini”文件,添加以下3项。

1. 提供者虚拟网络映射到提供者物理网络接口。

– 对于x86计算节点,属于az-x86,配置provider-x86:[linux_bridge] physical_interface_mappings = provider-x86:enp64s0

– 对于arm计算节点,属于az-arm,配置provider-arm:[linux_bridge] physical_interface_mappings = provider-arm:enp64s0

说明

此处的provider网络使用的是enp64s0网口,部署时根据实际情况调整。这里不是管理网络所用的物理网卡,是为业务网络准备的网卡, 参考集群环境”。

2. 使能vxlan覆盖网络。[vxlan] enable_vxlan = true local_ip = 192.168.100.121 l2_population = true

说明

local_ip为计算节点的管理IP。

3. 启用安全组并配置Linux网桥iptables防火墙驱动程序。[securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

步骤4 确保您的Linux操作系统内核支持网桥过滤器。

在“/etc/sysctl.conf”中添加:

net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 188

Page 196: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤5 运行以下命令,添加网桥过滤器。

modprobe br_netfilter

sysctl -p

sed -i '$amodprobe br_netfilter' /etc/rc.local

步骤6 启动Linux网桥代理并将其配置为在系统引导时启动。

systemctl enable neutron-linuxbridge-agent.service

systemctl start neutron-linuxbridge-agent.service

----结束

4.4.6.7 安装和配置 Neutron(Self service-OVS)

须知

OpenStack网络方式比较多,可以采用Provider模式或者Self-service模式。部署方式又可以分为LinuxBridge 和OVS。实际部署时只需要在Provider+ LinuxBridge、Provider+OVS、Self-service+ LinuxBridge、Self-service+OVS四种模式中选取其中之一即可。

控制节点

在Self service-OVS网络类型的控制节点controller执行以下操作。

步骤1 安装组件。

yum -y install openstack-neutron openstack-neutron-ml2 ebtables

步骤2 编辑配置文件/etc/neutron/neutron.conf。

1. 配置数据库访问。[database] connection = mysql+pymysql://neutron:<PASSWORD>@controller/neutron

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

2. 启用ML2插件,禁用其他插件。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 189

Page 197: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

[DEFAULT] core_plugin = ml2 service_plugins = router transport_url = rabbit://openstack:<PASSWORD>@controller auth_strategy = keystone notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true allow_overlapping_ips = true

说明

PASSWORD为4.4.1.9 安装消息队列 openstack用户的密码。

3. 配置身份访问。[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 = neutron password = <PASSWORD>

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

4. 配置[nova]模块参数。[nova] auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = <PASSWORD>

说明

– 配置文件中默认没有该模块,需要新增。

– PASSWORD为4.4.5.3 创建Nova数据库 nova用户的密码。

5. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/neutron/tmp

步骤3 编辑ML2插件/etc/neutron/plugins/ml2/ml2_conf.ini。

1. 启用flat, vlan和vxlan网络。

默认是没有的,需要新建 [ml2]、[ml2_type_flat]、[ml2_type_vlan]、[ml2_type_vxlan]和[securitygroup]。[ml2] type_drivers = flat,vlan,vxlan tenant_network_types = vxlan mechanism_drivers = openvswitch,l2population extension_drivers = port_security [ml2_type_flat] flat_networks = provider-arm,provider-x86 [ml2_type_vlan] network_vlan_ranges = provider-arm,provider-x86

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 190

Page 198: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

[ml2_type_vxlan] vni_ranges = 1:1000[securitygroup] enable_ipset = true

步骤4 配置Computer 服务以使用Networking服务。

vim /etc/nova/nova.conf

配置访问参数,启用元数据代理并配置密码。

[neutron] # ... url = http://controller:9696 auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = <PASSWORD> service_metadata_proxy = true metadata_proxy_shared_secret = <PASSWORD>

说明

● 执行该操作前,请确保已经安装了Nova。

● PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

步骤5 修改系统配置文件“/etc/sysctl.conf”。

1. 添加如下内容:net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0

2. 使配置生效。

sysctl -p

步骤6 创建网络初始化。

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

步骤7 填充数据库。

su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \

--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

步骤8 启动网络服务并配置为系统引导时启动。

systemctl enable neutron-server.service

systemctl start neutron-server.service

----结束

网络节点

在Self service-OVS网络类型的网络节点(x86-compute/arm-compute)执行以下操作。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 191

Page 199: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤1 安装组件。

yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch ebtables

步骤2 配置公共组件,编辑/etc/neutron/neutron.conf文件。

1. 配置RabbitMQ 消息队列访问。[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

说明

PASSWORD为4.4.1.9 安装消息队列rabbitmq服务为openstack用户设置的密码。

2. 配置身份访问服务。[DEFAULT] 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 = neutron password = <PASSWORD>

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

3. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/neutron/tmp

步骤3 配置DHCP代理。

编辑“/etc/neutron/dhcp_agent.ini”文件。

● 对于x86网络节点,属于az-x86,新增如下配置后保存并退出。[DEFAULT]dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true interface_driver = openvswitch force_metadata = true[AGENT] availability_zone = az-x86

● 对于arm网络节点,属于az-arm,新增如下配置后保存并退出。[DEFAULT]dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true interface_driver = openvswitch force_metadata = true[AGENT] availability_zone = az-arm

步骤4 配置元数据代理。

编辑“/etc/neutron/metadata_agent.ini”。配置元数据主机和共享秘钥。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 192

Page 200: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

[DEFAULT] nova_metadata_host = controller metadata_proxy_shared_secret = <PASSWORD>

说明

此处PASSWORD使用4.4.6.1 创建Neutron数据库 neutron用户的密码。

步骤5 配置L3 agent。

编辑“/etc/neutron/l3_agent.ini”文件。

● 对于x86网络节点,属于az-x86,新增如下配置后保存并退出。[DEFAULT]interface_driver = openvswitch[AGENT] availability_zone = az-x86

● 对于arm网络节点,属于az-arm,新增如下配置后保存并退出。[DEFAULT]interface_driver = openvswitch[AGENT] availability_zone = az-arm

步骤6 修改系统配置文件“/etc/sysctl.conf”。

1. 添加如下内容:net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0

2. 使配置生效。

sysctl -p

步骤7 启动网络服务并配置为系统引导时启动。

systemctl enable neutron-openvswitch-agent.service neutron-dhcp-agent.service \

neutron-metadata-agent.service neutron-l3-agent.service

systemctl start neutron-openvswitch-agent.service neutron-dhcp-agent.service \

neutron-metadata-agent.service neutron-l3-agent.service

----结束

计算节点

在Self service-OVS网络类型的计算节点(x86-compute/arm-compute)执行以下操作。由于当前将网络节点和计算节点合部在同一节点上,会存在部分重复的配置,跳过这些配置即可。

步骤1 安装组件。

yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch ebtables ipset

步骤2 配置公共组件,编辑/etc/neutron/neutron.conf文件。

1. 配置RabbitMQ 消息队列访问。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 193

Page 201: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

说明

PASSWORD为4.4.1.9 安装消息队列rabbitmq服务为openstack用户设置的密码。

2. 配置身份访问服务。[DEFAULT] 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 = neutron password = <PASSWORD>

说明

PASSWORD为4.4.6.1 创建Neutron数据库 neutron用户的密码。

3. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/neutron/tmp

步骤3 配置openstack agent,编辑文件“/etc/neutron/plugins/ml2/openvswitch_agent.ini”,新增 [linux_openvswitch]、[vxlan]、[ovs]和[securitygroup]。

● 对于x86计算节点,属于az-x86,配置provider-x86:[linux_openvswitch] physical_interface_mappings = provider-x86:enp64s0 [agent] tunnel_types = vxlan l2_population = true [ovs] bridge_mappings = provider-x86:br-provider local_ip = 192.168.100.121 [securitygroup] enable_security_group = true firewall_driver = iptables_hybrid

● 对于arm计算节点,属于az-arm,配置provider-arm:[linux_openvswitch] physical_interface_mappings = provider-arm:enp64s0 [agent] tunnel_types = vxlan l2_population = true [ovs] bridge_mappings = provider-arm:br-provider local_ip = 192.168.100.121 [securitygroup] enable_security_group = true firewall_driver = iptables_hybrid

说明

此处的provider网络使用的是enp64s0网口,部署时根据实际情况调整。这里不是管理网络所用的物理网卡,是为业务网络准备的网卡,参考集群环境”。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 194

Page 202: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤4 修改系统配置文件“/etc/sysctl.conf”。

1. 添加如下内容:net.ipv4.ip_forward=1net.ipv4.conf.all.rp_filter=0net.ipv4.conf.default.rp_filter=0

2. 使配置生效。

sysctl -p

步骤5 启动OVS代理并将其配置为在系统引导时启动。

systemctl enable neutron-openvswitch-agent.service

systemctl start neutron-openvswitch-agent.service

步骤6 创建ovs provider。

ovs-vsctl add-br br-provider

ovs-vsctl add-port br-provider enp64s0

----结束

4.4.6.8 验证 Neutron在控制节点执行以下操作。

列出成功启动的Neutron代理。

openstack network agent list

表 4-4 Neutron 常用命令

命令行 功能描述

openstack network create --share --external \--provider-physical-network provider \--provider-network-type flat enp64s0

创建共享虚拟网络

openstack subnet create --networkprovider \--allocation-poolstart=172.168.204.50,end=172.168.204.100 \--dns-nameserver 8.8.8.8 --gateway172.168.204.1 \--subnet-range 172.168.204.0/24subnet1

创建自网络

说明该命令中的参数意为:网络名称为subnet1,DHCP范围为172.168.204.50-172.168.204.100,DNS 为8.8.8.8,网关为172.168.204.1,网络为172.168.204.0/24。

openstack network list 查看当前网络

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 195

Page 203: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

命令行 功能描述

openstack subnet list 查看子网络

openstack port list 查看网络端口

4.4.7 安装配置并验证 CinderCinder块存储,为虚拟机实例提供持有化存储。它的存在简化了块存储设备的创建和管理。

混合部署方案下为实现业务架构和存储隔离,采用拆分不同的Availability Zone可用域,包括计算Nova AZ域和存储Cinder AZ域,并期望可以将两个AZ对应起来以便起到隔离的效果。目前多数OpenStack平台大多采用Ceph作为Cinder存储后端(以及Glance、Swift),并在创建虚拟机时选择从镜像创建块存储。混合部署通过创建不同的Cinder AZ配置不同的Ceph pool, 以便于达到混合部署场景下不同AZ域创建的虚拟机操作系统磁盘在Ceph集群中是完全隔离的。

4.4.7.1 创建 Cinder 数据库

在控制节点执行以下操作。

步骤1 以root用户访问数据库。

mysql -u root -p

步骤2 创建Cinder数据库,并授予对Cinder数据库的适当访问权限。

CREATE DATABASE cinder;

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY'<PASSWORD>';

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY'<PASSWORD>';

exit

说明

为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处PASSWORD为cinder数据库的密码。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 196

Page 204: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤3 使用admin用户登录OpenStack 命令行,创建服务凭据和cinder用户并设置密码。

source /etc/keystone/admin-openrc

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

说明

这里输入的cinder用户密码需要和 4.4.7.1 创建Cinder数据库cinder数据库的访问密码一致。

步骤4 将admin角色添加到Cinder用户。

openstack role add --project service --user cinder admin

步骤5 创建cinderv2和cinderv3服务实体。

openstack service create --name cinderv2 --description "OpenStack BlockStorage" volumev2

openstack service create --name cinderv3 --description "OpenStack BlockStorage" volumev3

说明

Cinder服务需要创建两个服务实体。

步骤6 创建Block Storage服务API端点。

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

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

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

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 197

Page 205: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(project_id\)s

openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(project_id\)s

openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(project_id\)s

----结束

4.4.7.2 安装和配置 Cinder说明

在控制节点执行以下操作。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 198

Page 206: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤1 安装软件包。

yum -y install openstack-cinder

步骤2 编辑配置文件“/etc/cinder/cinder.conf”。

vim /etc/cinder/cinder.conf

并且完成以下操作:

1. 配置数据库访问。[database] connection = mysql+pymysql://cinder:<PASSWORD>@controller/cinder

说明

PASSWORD为4.4.7.1 创建Cinder数据库 cinder用户设置的密码。

2. 配置RabbitMQ消息队列访问,替换<PASSWORD>为合适的密码。[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

说明

PASSWORD为4.4.1.9 安装消息队列rabbitmq服务为openstack用户设置的密码。

3. 配置身份服务访问,替换<PASSWORD>为cinder在Identity服务中为用户选择的密码。[DEFAULT] 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 = cinder password = <PASSWORD>

说明

PASSWORD为4.4.7.1 创建Cinder数据库 cinder用户设置的密码。

4. 配置my_ip选项以使用控制器节点的管理接口IP地址。[DEFAULT] my_ip = 192.168.100.120

5. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/cinder/tmp

步骤3 填充块存储数据库。

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

说明

请忽略此处输出中的任何abandoned弃用消息,由于OpenStack项目迭代较快,在Stein版本已经弃用了某些内容,这个命令行会输出一些弃用信息,属于正常的输出。

----结束

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 199

Page 207: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4.4.7.3 配置计算使用块存储

在控制节点执行以下操作。

步骤1 编辑“/etc/nova/nova.conf”配置文件。

vim /etc/nova/nova.conf

步骤2 完成以下操作:[cinder] os_region_name = RegionOne

----结束

4.4.7.4 开启 Cinder 服务

在控制节点执行以下操作。

步骤1 重新启动Compute API服务。

systemctl restart openstack-nova-api.service

步骤2 启动Block Storage服务并将其配置为在系统引导时启动。

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

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

步骤3 验证控制节点的安装,state为up,即为状态正常。

openstack volume service list

----结束

4.4.7.5 安装配置存储节点

在所有存储(x86-compute/arm-compute)节点执行以下操作。块存储可以采用lvm本地卷或者Ceph远端存储,存储节点可以选择其中一种方式配置。

安装和配置 LVM 本地卷(Option1)

在所有存储节点(x86-compute/arm-compute)执行以下操作。

步骤1 安装LVM包。

yum -y install lvm2 device-mapper-persistent-data

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 200

Page 208: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

一些发行版默认包含LVM,不需要安装。

步骤2 启动LVM元数据服务并将其配置为在系统引导时启动。

systemctl enable lvm2-lvmetad.service

systemctl start lvm2-lvmetad.service

步骤3 创建LVM物理卷“/dev/sdb”。

pvcreate /dev/sdb

步骤4 创建LVM卷组“cinder-volumes”。

vgcreate cinder-volumes /dev/sdb

注意

注意此处选择一个非操作系统所在盘,未使用的块设备,否则会造成数据丢失。

----结束

在存储(x86-compute/arm-compute)节点执行以下操作。

步骤1 编辑配置文件“/etc/lvm/lvm.conf”。

vim /etc/lvm/lvm.conf

步骤2 在devices部分中,添加一个接受“/dev/sdb”设备的过滤器并拒绝所有其他设备。devices { filter = [ "a/sda/", "a/sdb/", "r/.*/"]

说明

filter过滤器阵列中的每个项目开头为“a”或者“r”,用于接受或用于拒绝某个设备,如果存储节点在操作系统磁盘上使用LVM,则还必须将关联的系统盘设备添加到过滤器。同样,如果计算节点在操作系统磁盘上使用LVM,也需要修改这些节点上“/etc/lvm/lvm.conf”文件中的过滤器以包括操作系统磁盘。例如,如果“/dev/sda”设备包含操作系统,则需要将“sda”添加到过滤器。

----结束

步骤1 安装软件包。

yum -y install openstack-cinder targetcli python-keystone

步骤2 编辑配置文件“/etc/cinder/cinder.conf”。

vim /etc/cinder/cinder.conf

并完成以下操作:

1. 配置数据库访问。[database] connection = mysql+pymysql://cinder:<PASSWORD>@controller/cinder

说明

PASSWORD为4.4.7.1 创建Cinder数据库 cinder用户的密码

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 201

Page 209: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

2. 配置RabbitMQ 消息队列访问。[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

说明

PASSWORD为4.4.1.9 安装消息队列rabbitmq服务为openstack用户设置的密码

3. 配置身份服务访问。[DEFAULT] 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 = cinder password = <PASSWORD>

说明

PASSWORD为4.4.7.1 创建Cinder数据库 cinder用户密码

4. 配置my_ip为为存储节点上管理网络接口的IP地址。[DEFAULT] my_ip = 192.168.100.121

5. 配置存储节点cinder存储可用AZ域。[DEFAULT]storage_availability_zonedefault_availability_zone

说明

– storage_availability_zone和default_availability_zone为 <存储可用AZ域名称>。

– <存储可用AZ域名称>为存储节点所在的可用域名称,例如,所有x86存储节点(x86-compute)名称为“az-x86”, 所有arm存储节点(arm-compute)名称为“az-arm"

6. 在本[lvm]节中,使用LVM驱动程序,cinder-volumes卷组,iSCSI协议和相应的iSCSI服务配置LVM后端。[lvm] volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver volume_group = cinder-volumes target_protocol = iscsi target_helper = lioadm

说明

如果该[lvm]部分不存在,请先进行创建。

7. 启用LVM后端。[DEFAULT] enabled_backends = lvm

8. 配置Image服务API的位置。[DEFAULT] glance_api_servers = http://controller:9292

9. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/cinder/tmp

----结束

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 202

Page 210: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

配置 Ceph 远端存储卷(Option2)

步骤1 安装软件包。

yum -y install openstack-cinder targetcli python-keystone

步骤2 编辑配置文件“/etc/cinder/cinder.conf”。

vim /etc/cinder/cinder.conf

并完成以下操作:

1. 配置数据库访问。[database] connection = mysql+pymysql://cinder:<PASSWORD>@controller/cinder

说明

PASSWORD为4.4.7.1 创建Cinder数据库 cinder用户的密码。

2. 配置RabbitMQ 消息队列访问。[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

说明

PASSWORD为4.4.1.9 安装消息队列rabbitmq服务为openstack用户设置的密码。

3. 配置身份服务访问。[DEFAULT] 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 = cinder password = <PASSWORD>

说明

PASSWORD为4.4.7.1 创建Cinder数据库 cinder用户密码。

4. 配置my_ip为为存储节点上管理网络接口的IP地址。[DEFAULT] my_ip = 192.168.100.121

5. 配置存储节点cinder存储可用AZ域[DEFAULT]storage_availability_zonedefault_availability_zone

说明

– storage_availability_zone和default_availability_zone为 <存储可用AZ域名称>。

– <存储可用AZ域名称>为存储节点所在的可用域名称,例如,所有x86存储节点(x86-compute)名称为“az-x86”, 所有arm存储节点(arm-compute)名称为“az-arm”。

6. 在本[ceph]节中,配置对接Ceph的StoreagePool和所在的AZ域名称。[ceph]volume_driver = cinder.volume.drivers.rbd.RBDDriver

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 203

Page 211: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

volume_backend_name = cephrbd_pool = <StoreagePool名称>rbd_ceph_conf = /etc/ceph/ceph.confrbd_flatten_volume_from_snapshot = falserbd_max_clone_depth = 5rbd_store_chunk_size = 4rados_connect_timeout = -1glance_api_version = 2rbd_user = cinderrbd_secret_uuid = <UUID>storage_availability_zone=<存储AZ可用域名称>

说明

如果该[ceph]部分不存在,请先进行创建。

此处UUID的值为步骤5章节生成的UUID, 本示例中的UUID为:b3d5fee6-839c-482e-b244-668bad7128a9;

<StoreagePool名称>为4.3.2 配置Ceph环境章节创建的存储池, x86存储(x86-compute)节点使用x86存储池,本示例中为“volumes-x86”, arm存储(arm-compute)节点使用arm存储池,本示例中为“volumes-arm”。

<存储AZ可用域名称>为存储节点所在的AZ可用域名称,本示例中所有x86存储节点(x86-compute)名称为“az-x86”, 所有arm存储节点(arm-compute)名称为“az-arm”。

7. 启用Ceph后端。[DEFAULT] enabled_backends = ceph

8. 配置Image服务API的位置。[DEFAULT] glance_api_servers = http://controller:9292

9. 配置锁定路径。[oslo_concurrency] lock_path = /var/lib/cinder/tmp

----结束

4.4.7.6 开启 Cinder-Volume 等服务

在存储(x86-compute/arm-compute)节点系以下操作。

启动Block Storage卷服务(包括其依赖项)并将其配置为在系统引导时启动。

systemctl enable openstack-cinder-volume.service target.service

systemctl start openstack-cinder-volume.service target.service

4.4.7.7 验证 Cinder

在控制节点执行以下操作。

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 列出服务组件以验证每个进程的成功启动。

openstack volume service list

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 204

Page 212: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

Cinder 常用命令

命令行 功能描述

openstack volume create --size 1volume1

创建存储卷

openstack volume list 显示存储卷列表

openstack volume create VOLNAME-OR-ID

删除所选存储卷

openstack volume snapshot create --volume SNAPSHOT-VOLNAMEVOLNAME-OR-ID

创建存储卷快照

openstack volume snapshot list 显示存储卷快照

nova volume-attach VM_IDVOLUME_ID /dev/vdb

虚拟机挂载卷

nova volume-detach VM_IDVOLUME_ID

虚拟机卸载卷

4.4.8 安装配置并验证 HorizonHorizon提供基于Web与内部个服务组件进行交互的界面。例如,插件虚拟机实例分配IP地址和配置访问控制等。

说明

在控制节点安装配置并验证Horizon。

4.4.8.1 安装和配置组件

步骤1 安装软件包。

yum -y install openstack-dashboard

步骤2 编辑配置文件“/etc/openstack-dashboard/local_settings”并完成以下操作:

vim /etc/openstack-dashboard/local_settings

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 205

Page 213: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

1. 配置仪表板以在controller节点上使用OpenStack服务。OPENSTACK_HOST = "controller"

2. 允许所有主机访问,注意格式,逗号后面有一个空格。ALLOWED_HOSTS = ['*', ]

3. 配置memcached会话存储服务,请注释掉任何其他会话存储配置,请注意格式。SESSION_ENGINE = 'django.contrib.sessions.backends.cache' CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'controller:11211', } }

4. 启用Identity API版本3。OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

5. 启用对域的支持。OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

6. 配置API版本,请注意配置格式。OPENSTACK_API_VERSIONS = { "identity": 3, "image": 2, "volume": 3, }

7. 配置Default为通过仪表板创建的用户的默认域。OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"

8. 配置user为通过仪表板创建的用户的默认角色。OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

9. 请禁用对第3层网络服务的支持。OPENSTACK_NEUTRON_NETWORK = { 'enable_router': False,

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 206

Page 214: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

'enable_quotas': False, 'enable_distributed_router': False, 'enable_ha_router': False, 'enable_lb': False, 'enable_firewall': False, 'enable_vpn': False, 'enable_fip_topology_check': False, }

10. (可选)配置时区:上海。

TIME_ZONE = "Asia/Shanghai"

步骤3 编辑配置文件“/etc/httpd/conf.d/openstack-dashboard.conf”。

vim /etc/httpd/conf.d/openstack-dashboard.conf

添加以下内容:

WSGIApplicationGroup %{GLOBAL}

步骤4 赋予“/usr/share/openstack-dashboard/”文件夹 appache所属用户、组的权限。

chown -R apache:apache /usr/share/openstack-dashboard/

步骤5 编辑“/etc/openstack-dashboard/local_settings”。

将以下一条:

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

修改为:

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

步骤6 重新启动Web服务器和会话存储服务。

systemctl restart httpd.service memcached.service

----结束

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 207

Page 215: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4.4.8.2 验证操作

步骤1 使用浏览器访问控制节点管理IP登录dashboard。

例如:http://192.168.100.120/dashboard

步骤2 在dashboard界面进行openstack的服务管理操作。

----结束

4.5 OpenStack 裸金属服务安装部署

4.5.1 裸金属服务概述裸金属服务是ironic组件的集合提供对物理服务器进行管理和配置的支持。

4.5.1.1 裸金属服务组件● ironic-api

一种RESTful API,可通过远程过程调用(RPC)将应用程序请求发送到ironic-conductor来处理应用程序请求。可以通过WSGI或作为单独的进程运行。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 208

Page 216: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

● ironic-conductor

添加/编辑/删除服务器节点。使用IPMI或供应商定制的其他协议打开/关闭节点的电源,规定/部署/清理裸金属实例节点。

Ironic-conductor使用驱动程序在硬件上执行操作。

● ironic-python-agent

在临时ramdisk中运行的python服务,为ironic-conductor和ironic-inspector提供远程访问、带内硬件控制和硬件自省。

此外,Bare Metal服务需要某些外部依赖关系,与其他OpenStack服务非常相似:

用于存储硬件信息和状态的数据库。您可以设置数据库后端类型和位置。一种简单的方法是使用与Compute服务相同的数据库后端。另一种方法是使用单独的数据库后端,以进一步将裸金属服务器资源(和关联的元数据)与用户隔离。

oslo.messaging消息队列,例如RabbitMQ。它可以使用与Compute服务相同的实现,但这不是必需的。用于实现Ironic-api和Ironic-conductor之间的RPC。

4.5.1.2 部署架构

Bare Metal RESTful API服务用于注册Bare Metal服务将管理的硬件。云管理员通常会注册它,并指定其属性,例如MAC地址和IPMI凭据。 API服务可以有多个实例。

ironic-conductor 负责裸金属服务注册的大部分工作。出于安全原因,建议将其放置在隔离的主机上,因为它是唯一需要访问数据平面和IPMI控制平面的服务。

ironic-conductor 服务可以有多个实例,以支持各种类型的驱动程序并管理故障转移。ironic-conductor 服务的实例应位于单独的节点上。每个conductor本身可以运行许多驱动程序以运行异构硬件。4.5.1.2 部署架构对此进行了描述。

图 4-2 部署架构

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 209

Page 217: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4.5.1.3 与 OpenStack 其他服务组件的交互

裸金属服务可能会根据配置与其他几个OpenStack服务进行交互。这包括:

● OpenStack Telemetry模块(Ceilometer)以使用IPMI度量。

● OpenStack Identity服务(keystone)用于请求身份验证。

● 从OpenStack Image服务(glance)检索images和image元数据。

● OpenStack networking服务(neutron)提供DHCP和网络配置。

● OpenStack Compute服务(nova)与Bare Metal服务一起使用,并充当实例管理的面向用户的API,而Bare Metal服务提供用于硬件管理的admin / operatorAPI。 OpenStack Compute服务还提供了调度功能,租户配额,IP分配以及BareMetal服务本身未提供的其他服务。

● OpenStack Object存储(swift)为configdrive,用户映像,部署日志和检查数据提供临时存储。

4.5.1.4 逻辑架构

图4-3显示了逻辑体系结构。它显示了构成Bare Metal服务的基本组件,Bare Metal服务与其他OpenStack服务的关系以及申请裸金属实例请求的逻辑流。

图 4-3 逻辑结构

用户申请裸金属实例的请求通过Compute API和Compute Scheduler传递到Compute服务。 Compute服务使用ironic virt驱动程序将此请求移交给Bare Metal服务,该请求从Bare Metal API传递到Conductor,再传递给驱动程序,至此用户成功配置物理服务器。

正如Compute服务与各种OpenStack服务(例如映像,网络,对象存储等)进行交互以提供虚拟机实例一样,此处Bare Metal服务与图像,网络和其他资源需求的同一OpenStack服务进行交互以提供裸金属实例。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 210

Page 218: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4.5.1.5 关联项目

(可选)您可能希望利用以下关联的项目来获得其他功能:

● python-ironicclient用于与Bare Metal服务进行交互的命令行界面(CLI),python实现。

● ironic-uiHorizon仪表板,为Bare Metal API提供图形界面(GUI)。

● ironic-inspector该服务通过PXE将未注册的硬件引导到ironic-python-agent ramdisk中来执行带内硬件自检。

● diskimage-builderdiskimage-builder用于自动构建可在云和其他环境中使用的自定义操作系统映像,可利用该工具构建用户镜像以及包含ironic-python-agent服务的部署镜像。

4.5.2 安裝部署裸金属服务本节开始介绍如何安装和配置裸金属服务。

4.5.2.1 横向扩展裸金属服务节点

新增一个物理节点作为裸金属服务管理节点, 负责管理所有裸金属实例的发放、配置。

修改主机名

参照4.4.1.1 配置主机名章节修改新增节点的主机名称为“baremetal”。

DNS 配置

在Ironic管理节点(baremetal节点)执行以下操作。

步骤1 修改“/etc/hosts”文件,添加如下信息。

vim /etc/hosts

1. 在空白处按“i”添加以下几段命令。<管理节点网卡ip地址> controller <x86计算节点网卡ip地址> x86-compute<arm计算节点网卡ip地址> arm-compute<ironic管理节点ip地址> baremetal

修改完成后按“Esc”退出编辑模式,输入:wq退出并保存。

步骤2 修改非ironic管理节点(controller、x86-compute、arm-compute节点)hosts文件

vim /etc/hosts

在空白处按“i”添加以下几段命令。

<ironic管理节点ip地址> baremetal

修改完成后按“Esc”退出编辑模式,输入:wq退出并保存。

----结束

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 211

Page 219: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

NTP 配置

在Ironic管理节点(baremetal节点)执行以下操作。

步骤1 安装chrony。

yum -y install chrony

步骤2 编辑“/etc/chrony.conf”文件,添加“server controller iburst”并且删除或者注释掉其余server的选项。

vim /etc/chrony.conf

server controller iburst

步骤3 启动chrony 服务并将其配置为在系统引导时启动。

systemctl enable chronyd.service

systemctl restart chronyd.service

步骤4 验证时间同步。

chronyc sources

ironic管理节点显示controller 为时钟源。

----结束

4.5.2.2 创建裸金属服务数据库

裸金属服务将信息存储在数据库中。本指南使用其他OpenStack服务使用的MySQL数据库作为裸金属服务数据库。

说明

在控制controller节点创建ironic数据库。

步骤1 以root用户访问数据库。

mysql -u root -p

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 212

Page 220: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤2 创建ironic数据库,并授予对ironic数据库的适当访问权限。

CREATE DATABASE ironic CHARACTER SET utf8;

GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'localhost' IDENTIFIED BY<PASSWORD>;

GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'%' IDENTIFIED BY<PASSWORD>;

exit

说明

为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处PASSWORD为ironic数据库的密码。

----结束

4.5.2.3 安装 ironic 管理组件

说明

本指导在baremetal节点安装部署 ironic-api 和 ironic-conductor组件,以下所有操作在baremetal节点执行。

步骤1 安装ironic组件。

1. 从rpm软件包安装

yum install centos-release-openstack-steinyum install openstack-selinuxyum install openstack-ironic-api openstack-ironic-conductor python-ironicclient

2. 启用服务

systemctl enable openstack-ironic-api openstack-ironic-conductorsystemctl start openstack-ironic-api openstack-ironic-conductor

----结束

4.5.2.4 配置 ironic-api 服务

说明

以下所有操作在baremetal节点执行。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 213

Page 221: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

编辑文件“/etc/ironic/ironic.conf”。

步骤1 配置数据库的位置。裸金属服务将信息存储在数据库中,本指南使用其他OpenStack服务使用的MySQL数据库。[database]# The SQLAlchemy connection string used to connect to the# database (string value)connection=mysql+pymysql://ironic:<PASSWORD>@DB_IP/ironic?charset=utf8

说明

为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处PASSWORD为ironic数据库的密码, DB_IP为mysql数据库所在节点的管理IP, 本指导为controller的管理节点ip。

步骤2 通过设置以下选项,将ironic-api服务配置为使用RabbitMQ消息代理。替换RPC_*为RabbitMQ服务器的适当地址详细信息和凭证:[DEFAULT]transport_url = rabbit://RPC_USER:RPC_PASSWORD@RPC_HOST:RPC_PORT/

说明

此处RPC_USER为RabbitMQ服务的用户,RPC_PASSWORD为RabbitMQ服务用户对应的密码,RPC_HOST为RabbitMQ消息队列所在节点的管理IP, RPC_PORT为RabbitMQ服务的端口, 详细RabbitMQ消息详细信息参见4.4.1.9 安装消息队列。本指导中分别为:transport_url = rabbit://openstack:huawei@controller:5672。

步骤3 配置使用JSON RPC进行ironic-condutor与ironic-api之间的交互。在配置中启用它,并提供用于身份验证的关键凭证。[DEFAULT]rpc_transport = json-rpc [json_rpc]# Authentication type to load (string value)auth_type = password # Authentication URL (string value)auth_url=http://IDENTITY_IP:5000/ # Username (string value)username=ironic # User's password (string value)password=<PASSWORD> # Project name to scope to (string value)project_name=service # Domain ID containing project (string value)project_domain_id=default # User's domain id (string value)user_domain_id=default

说明

为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处PASSWORD为4.5.2.2 创建裸金属服务数据库 ironic用户数据库的密码。IDENTITY_IP为keystone服务所在节点的管理IP,本文中配置为controller。

步骤4 配置ironic-api服务与身份服务一起使用。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 214

Page 222: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

[DEFAULT]auth_strategy=keystone [keystone_authtoken]# Authentication type to load (string value)auth_type=password # Complete public Identity API endpoint (string value)www_authenticate_uri=http://controller:5000 # Complete admin Identity API endpoint. (string value)auth_url=http://controller:5000 # Service username. (string value)username=ironic # Service account password. (string value)password=<PASSWORD> # Service tenant name. (string value)project_name=service # Domain name containing project (string value)project_domain_name=Default # User's domain name (string value)user_domain_name=Default

说明

为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处PASSWORD为4.5.2.2 创建裸金属服务数据库ironic在身份服务中为用户选择的密码。

步骤5 创建裸金属Ironic服务数据库表,在裸金属服务管理baremetal节点执行。

ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema

步骤6 重新启动ironic-api服务。

systemctl restart openstack-ironic-api

systemctl status openstack-ironic-api

----结束

4.5.2.5 配置 ironic-conductor 服务

说明

以下所有操作在baremetal节点执行。

编辑文件“/etc/ironic/ironic.conf”。

步骤1 配置HOST_IP为ironic-conductor主机的ip。[DEFAULT]my_ip=<HOST_IP>

说明

此处HOST_IP为表4-3ironi-conductor子服务所在裸金属baremetal节点的服务ip, 本文中为90.91.16.2。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 215

Page 223: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤2 配置数据库的位置。[database]# The SQLAlchemy connection string used to connect to the# database (string value)connection=mysql+pymysql://ironic:<PASSWORD>@DB_IP/ironic?charset=utf8

说明

本文中ironic-conductor和ironic-api子服务部署在同一个节点,因此不用重复配置。如果分离部署,则需要参考ironic-api服务配置。

步骤3 配置ironic-conductor子服务使用RabbitMQ消息队列。[DEFAULT]transport_url = rabbit://RPC_USER:RPC_PASSWORD@RPC_HOST:RPC_PORT/

说明

本文中ironic-conductor和ironic-api子服务部署在同一个节点,因此不用重复配置。如果分离部署,则需要参考ironic-api服务配置使用RabbitMQ消息队列。

步骤4 配置ironic-condutor使用JSON RPC与ironic-api之间的交互。在配置中启用它,并提供用于身份验证的关键凭证。[DEFAULT]rpc_transport = json-rpc [json_rpc]# Authentication type to load (string value)auth_type = password # Authentication URL (string value)auth_url=http://IDENTITY_IP:5000/ # Username (string value)username=ironic # User's password (string value)password=<PASSWORD> # Project name to scope to (string value)project_name=service # Domain ID containing project (string value)project_domain_id=default # User's domain id (string value)user_dconductoromain_id=default

说明

本文中ironic-conductor和ironic-api子服务部署在同一个节点,因此不用重复配置。如果分离部署,则需要参考ironic-api服务与ironic-conductor子服务交互配置。

步骤5 配置api_url地址。[conductor]api_url = http://${IRONIC_API_IP}:${IRONIC_API_PORT}

说明

IRONIC_API_IP为ironic-api服务所在节点ip,本文中为90.91.16.2。

IRONIC_API_PORT为ironic-api服务监听端口号,默认为6385。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 216

Page 224: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤6 配置ironi-conductor子服务用于访问其他openstack服务的凭据。[neutron]auth_type = passwordauth_url=http://controller:5000/username=ironicpassword=<PASSWORD>project_name=serviceproject_domain_id=defaultuser_domain_id=defaultcafile=/opt/stack/data/ca-bundle.pemregion_name = RegionOnevalid_interfaces=public [glance]region_name = RegionOnecafile = /opt/stack/data/ca-bundle.pemproject_domain_id = defaultuser_domain_id = defaultproject_name = servicepassword = <PASSWORD>username = ironicauth_url = http://controller:5000/v3/auth_type = password [swift]region_name = RegionOnecafile = /opt/stack/data/ca-bundle.pemproject_domain_id = defaultuser_domain_id = defaultproject_name = servicepassword = <PASSWORD>username = ironicauth_url = http://controller/v3/auth_type = password [cinder]region_name = RegionOnecafile = /opt/stack/data/ca-bundle.pemproject_domain_id = defaultuser_domain_id = defaultproject_name = servicepassword = <PASSWORD>username = ironicauth_url = http://controller:5000/v3/auth_type = password [service_catalog]region_name = RegionOnecafile = /opt/stack/data/ca-bundle.pemproject_domain_id = defaultuser_domain_id = defaultproject_name = servicepassword = <PASSWORD>username = ironicauth_url = http://controller:5000/v3/auth_type = password

说明

为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处<PASSWORD>为4.5.2.2 创建裸金属服务数据库ironic用户的密码。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 217

Page 225: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤7 设置ironic-conductor部署配置。[agent]deploy_logs_collect = alwaysdeploy_logs_storage_backend = localdeploy_logs_local_path = /var/log/ironic/deploy [deploy]erase_devices_priority = 0default_boot_option = localdefault_boot_mode = bios [neutron]port_setup_delay = 15

步骤8 重启ironic-conductor子服务。

systemctl restart openstack-ironic-conductor

systemctl status openstack-ironic-conductor

----结束

4.5.3 Ironic 服务与 Openstack 其他服务集成

4.5.3.1 Ironic 服务与 Identity 身份认证服务集成配置

以下所有操作在控制controller节点操作。

步骤1 使用admin用户登录OpenStack 命令行,创建裸金属Bare Metal服务用户ironic并设置密码。

source /etc/keystone/admin-openrc

openstack user create --password-prompt ironic

说明

这里输入的ironic用户密码需要和4.5.2.2 创建裸金属服务数据库 ironic数据库的访问密码一致。

步骤2 使用service租户并赋予ironic用户admin角色。

openstack role add --project service --user ironic admin

步骤3 在Identity Service中注册Bare Metal服务。

openstack service create --name ironic --description "Ironic baremetalprovisioning service" baremetal

步骤4 创建ironic在keystone中属性端点endpoint。

openstack endpoint create --region RegionOne baremetal admin http://$IRONIC_NODE:6385

openstack endpoint create --region RegionOne baremetal public http://$IRONIC_NODE:6385

openstack endpoint create --region RegionOne baremetal internal http://$IRONIC_NODE:6385

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 218

Page 226: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

请用户根据实际情况进行修改。此处IRONIC_NODE为ironi-api子服务的节点主机名“baremetal”。

----结束

4.5.3.2 Ironic 服务与 Compute 计算服务集成配置

步骤1 裸金属服务管理baremetal节点安装部署nova-compute服务,参照4.4.5.6 安装和配置Nova(计算节点)章节。

说明

以下修改在控制controller节点和裸金属服务管理baremetal节点都需要执行。

步骤2 Compute服务配置为使用Bare Metal服务的驱动程序。Compute服务的配置文件通常位于“/etc/nova/nova.conf”,在Compute服务配置文件中更改这些配置选项。[DEFAULT]compute_driver=ironic.IronicDriverfirewall_driver=nova.virt.firewall.NoopFirewallDriverreserved_host_memory_mb=0 [filter_scheduler]track_instance_changes=False [scheduler]discover_hosts_in_cells_interval=120

说明

本配置中“track_instance_changes=False”配置项仅在裸金属服务管理baremetal节点上配置,openstack管理节点controller上不要配置。

步骤3 更改ironic配置选项。[ironic]auth_type=passwordauth_url=http://controller:5000/v3/project_name=serviceusername=ironicpassword=<PASSWORD>project_domain_name=defaultuser_domain_name=default

说明

为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处<PASSWORD>为4.5.2.2 创建裸金属服务数据库ironic 用户密码。

步骤4 在控制controller节点上重启nova-scheduler子服务。

systemctl restart openstack-nova-scheduler

步骤5 在裸金属服务管理baremetal节点上重启nova-compute 子服务。

systemctl restart openstack-nova-compute

步骤6 验证ironic服务对接nova服务,需要等待步骤5重启后2min后验证。

以下验证在控制controller节点验证。

nova-manage cell_v2 discover_hosts

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 219

Page 227: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

nova-manage cell_v2 list_hosts

openstack compute service list

----结束

4.5.3.3 Ironic 服务与 Neutron 网络服务集成配置

需要配置网络,以便裸金属服务管理baremetal节点可以与neutron网络服务通信以实现DHCP,PXE引导和其他要求。

说明

要求:

1. 裸金属服务管理baremetal节点与 IPMI OOB Network(即BMC管理网络)互通:IronicConductor节点可以通过 ipmitool管理BM Node,可以在ironic-conductor节点通过ipmi命令操作裸金属服务器节点验证。

2. Provisioning Network复用External Network 与 BM Nodes二层互通:BM Node可以从Provisioning Network DHCP获取到IP地址和TFTP服务器的访问接口,要求裸金属服务器PXE网口和裸金属服务发放Provisioning network在二层互通。

以下安装配置在裸金属服务管理baremetal节点执行。

步骤1 裸金属服务管理baremetal节点安装Ovs Agent。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 220

Page 228: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

yum -y install openstack-neutron-openvswitch ipset

步骤2 编辑配置“/etc/neutron/plugins/ml2/openvswitch_agent.ini”。[linux_openvswitch]physical_interface_mappings = provider-x86:eno3 [ovs]datapath_type = systembridge_mappings = provider-x86:br-ex [agent]l2_population = True [securitygroup]enable_security_group=truefirewall_driver = openvswitch

步骤3 启动vswitchd守护进程。

systemctl enable openvswitch

systemctl start openvswitch

systemctl status openvswitch

步骤4 手动创建ovs provider Bridge。

ovs-vsctl add-br br-ex

ovs-vsctl add-port br-ex eno3

步骤5 启动 OVS Agent。

systemctl enable neutron-openvswitch-agent.service

systemctl start neutron-openvswitch-agent.service

systemctl status neutron-openvswitch-agent.service

步骤6 验证。

ovs-vsctl show

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 221

Page 229: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤7 验证ironic服务对接nova服务,需要等待步骤5重启后2min后验证。

以下验证在控制controller节点验证。

nova-manage cell_v2 list_hosts

openstack hypervisor list

openstack compute service list

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 222

Page 230: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

4.5.3.4 创建 Provisioning Network说明

在控制controller节点执行。

创建一个Flat类型的 Provisioning Network,该网络的本质是一个provider网络,通过provider网络的物理交换机连通到裸金属服务器,使得裸金属服务器可以借助该网络的DHCP服务获取到IP地址和PXE服务器的信息。所以该Provisioning Network 的Subnet一定要Enable DHCP。

步骤1 创建Provisioning网络。

openstack network create --project admin --share --provider-network-typeflat --provider-physical-network provider-x86 provisioning-net

步骤2 创建Provisioning网络subnet。

openstack subnet create provisioning-subnet-1 --network provisioning-net \

--subnet-range 90.91.16.0/21 --ip-version 4 --gateway 90.91.16.1 \

--allocation-pool start=90.91.18.1,end=90.91.18.50 --dhcp

----结束

4.5.3.5 配置裸金属服务 provisoning/cleaning 网络

以下所有操作在baremetal节点执行。

本指导将Provisioning Network 和 Cleaning Network 合并。

步骤1 获取Provisioning Network UUID。

openstack network list

步骤2 配置ironic-conductor provisioning/cleaning网络,编辑“/etc/ironic/ironic.conf”,在[neutron]section下面添加provisioning/cleaning network的UUID。

cleaning_network = NETWORK_UUID

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 223

Page 231: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

provisioning_network=NETWORK_UUID

说明

请用户根据实际情况进行修改。用NETWORK_UUID 在上一步中记下的UUID 替换,本文中NETWORK_UUID为9a2ec4f4-03ad-47fd-ac3d-1f0e91d9eea8。

步骤3 重新启动ironic-conductor服务

systemctl restart openstack-ironic-conductor

----结束

4.5.3.6 创建、上传用户镜像到 Image 服务

裸金属服务需要使用部署镜像与用户镜像,前者包含ironic-python-agent服务用于在部署裸金属服务过程中控制和部署裸金属实例节点,后者供 终用户使用。

以下所有操作在baremetal节点执行。

步骤1 获取x86、ARM Guest镜像

wget https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-2003.qcow2

wget https://cloud.centos.org/centos/7/images/CentOS-7-aarch64-GenericCloud-2003.qcow2

说明

参照华为云《裸金属服务器BMS私有镜像制作指南》可以制作用户自定义裸金属服务器实例镜像。

步骤2 将裸金属实例的用户镜像添加到Glance镜像服务。

glance image-create --name CentOS-7-x86_64-GenericCloud-2003 --visibilitypublic --disk-format qcow2 --container-format bare < ./CentOS-7-x86_64-GenericCloud-2003.qcow2

glance image-create --name CentOS-7-aarch64-GenericCloud-2003 --visibilitypublic --disk-format qcow2 --container-format bare < ./CentOS-7-aarch64-GenericCloud-2003.qcow2

步骤3 获取x86部署镜像。

wget https://tarballs.opendev.org/openstack/ironic-python-agent/dib/files/ipa-centos7-stable-train.initramfs -o ipa-x86.initramfs

wget https://tarballs.opendev.org/openstack/ironic-python-agent/dib/files/ipa-centos7-stable-train.kernel -o ipa-x86.kernel

步骤4 将x86部署镜像添加到Glance镜像服务。

openstack image create ipa-x86-kernel --public --disk-format aki --container-format aki --file ipa-x86.kernel

openstack image create ipa-x86-initrd --public --disk-format ari --container-format ari --file ipa-x86.initramfs

步骤5 编译arm部署镜像。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 224

Page 232: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

利用ironic-python-agent-builder编译arm部署镜像,因ironic-python-agent-builder新版本已不支持python2(支持Python2的 高版本为1.1.0),建议在其他arm环境上

升级python3,进行部署镜像编译。

1. 安装ironic-python-agent-builder。pip install ironic-python-agent-builder

2. 安装disk-image-create。

pip install disk-image-create3. 安装setuptools。

pip install disk-image-create4. 配置环境变量。

export ARCH=aarch64export DIB_REPOREF_ironic_python_agent=origin/stable/steinexport DIB_REPOREF_requirements=origin/stable/steinexport DIB_RELEASE=7export DIB_PYTHON_EXEC="/usr/bin/python3"export DIB_DEV_USER_USERNAME=devuserexport DIB_DEV_USER_PWDLESS_SUDO=YESexport DIB_DEV_USER_PASSWORD=<PASSWORD>

说明

为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处<PASSWORD>为部署引导过程中小系统的的登录密码, 此处为huawei,默认登录账号为devuser。

5. 编译部署镜像。

ironic-python-agent-builder -o ipa-aarch64 -e “devuser dynamic-logindhcp-all-interfaces” --release 7 centos-minimal --extra-args=-x编译完成后,会生成ipa-aarch64.initramfs与ipa-aarch64.kernel文件。

步骤6 将aarch64部署镜像添加到Glance镜像服务。

openstack image create ipa-aarch64-kernel --public --disk-format aki --container-format aki --file ipa-aarch64.kernel

openstack image create ipa-aarch64-initrd --public --disk-format ari --container-format ari --file ipa-aarch64.initramfs

----结束

4.5.4 配置裸金属实例驱动

4.5.4.1 配置 PXE以下操作在裸金属服务管理baremetal节点操作。

DHCP 服务器设置

应确保裸金属管理节点应与裸金属物理服务器节点存在网络链路,且已开启DHCP服务。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 225

Page 233: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

应结合实际网络情况。

TFTP 服务器设置

步骤1 创建tftp根目录。

sudo mkdir -p /tftpboot

sudo chown -R ironic /tftpboot

说明

根据需要修改tftpboot目录路径。

步骤2 安装tftp服务。

sudo yum install tftp-server xinetd

步骤3 编辑tftp配置文件”/etc/xinetd.d/tftp”,增加如下配置:

创建或编辑/etc/xinetd.d/tftp如下:

service tftp{ protocol = udp port = 69 socket_type = dgram wait = yes user = root server = /usr/sbin/in.tftpd server_args = -v -v -v -v -v --blocksize 1350 --map-file /tftpboot/map-file /tftpboot disable = no # This is a workaround for Fedora, where TFTP will listen only on # IPv6 endpoint, if IPv4 flag is not used. flags = IPv4}

说明

blocksize 大可设置为网卡MTU 大值减32。

步骤4 在tftp根目录创建映射文件。

echo 're ^(/tftpboot/) /tftpboot/\2' > /tftpboot/map-file

echo 're ^/tftpboot/ /tftpboot/' >> /tftpboot/map-file

echo 're ^(^/) /tftpboot/\1' >> /tftpboot/map-file

echo 're ^([^/]) /tftpboot/\1' >> /tftpboot/map-file

步骤5 重新启动xinetd服务。

sudo systemctl restart xinetd

----结束

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 226

Page 234: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

UEFI 引导支持

步骤1 安装Grub2和shim软件包。

sudo yum install grub2-efi shim

步骤2 复制引导文件至tftp根目录。

sudo cp /boot/efi/EFI/centos/shim.efi /tftpboot/bootx64.efi

sudo cp /boot/efi/EFI/centos/grubx64.efi /tftpboot/grubx64.efi

步骤3 复制aarch64引导文件至tftp根目录。

在arm服务器上执行sudo yum install grub2-efi shim安装Grub2和shim软件包,将/boot/efi/EFI/centos/目录下的shim.efi与grubaa64.efi传输至裸金属管理节点上的tftp根目录,并命名为bootaa64.efi与grubaa64.efi。

例如,可在arm服务器上执行如下命令:

sudo yum install grub2-efi shim

scp /boot/efi/EFI/centos/shim.efi ${user}@${ip}:/tftpboot/bootaa64.efi

scp /boot/efi/EFI/centos/grubaa64.efi ${user}@${ip}:/tftpboot/grubaa64.efi

说明

应正确配置user、ip以及tftpboot路径。

步骤4 创建grub.cfg文件。

创建grub.cfg存放目录。

GRUB_DIR=/tftpboot/EFI/centos

sudo mkdir -p $GRUB_DIR

在/tftpboot/EFI/centos目录下创建grub.cfg文件,内容如下:

set default=masterset timeout=5set hidden_timeout_quiet=false menuentry "master" {configfile /tftpboot/$net_default_mac.conf}

更改grub.cfg的权限:

sudo chmod 644 $GRUB_DIR/grub.cfg

步骤5 创建aarch64平台的grub配置模板文件。

由于grub在不同体系平台下所支持的命令不同,因此需为aarch64平台创建特定的pxe配置模板。

在/tftpboot路径下创建pxe_grubaa64_config.template文件,内容如下:

set default=deployset timeout=5set hidden_timeout_quiet=false

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 227

Page 235: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

menuentry "deploy" { linux {{ pxe_options.deployment_aki_path }} selinux=0 troubleshoot=0 text {{ pxe_options.pxe_append_params|default("", true) }} BOOTIF=${mac} boot_server={{pxe_options.tftp_server}} ipa-api-url={{ pxe_options['ipa-api-url'] }} coreos.configdrive=0 initrd {{ pxe_options.deployment_ari_path }}} menuentry "boot_partition" { linux {{ pxe_options.aki_path }} root={{ ROOT }} ro text {{ pxe_options.pxe_append_params|default("", true) }} boot_server={{pxe_options.tftp_server}} initrd {{ pxe_options.ari_path }}} menuentry "boot_ramdisk" { linux {{ pxe_options.aki_path }} root=/dev/ram0 text {{ pxe_options.pxe_append_params|default("", true) }} {{ pxe_options.ramdisk_opts|default('', true) }} initrd {{ pxe_options.ari_path }}} menuentry "boot_whole_disk" { linux chain.c32 mbr:{{ DISK_IDENTIFIER }}}

----结束

Legacy BIOS 引导支持

步骤1 安装syslinux软件包。

sudo yum install syslinux-tftpboot

步骤2 复制PXE镜像及相关文件至tftp根目录。

sudo cp /usr/share/syslinux/pxelinux.0 /tftpboot

● 若以pxe网络引导方式启动完整磁盘镜像,则需要chain.c32文件:

sudo cp /boot/extlinux/chain.c32 /tftpboot● 若syslinux的版本大于 4,则还需复制相关库模块:

sudo cp /usr/lib/syslinux/modules/*/ldlinux.* /tftpboot

----结束

修改 ironic 配置文件

步骤1 在”/etc/ironic/ironic.conf”文件中,新增如下内容。[pxe]tftp_root=/tftpboottftp_server=${my_ip}tftp_master_path = /tftpboot/master_images pxe_bootfile_name=pxelinux.0pxe_config_template = $pybasedir/drivers/modules/pxe_config.templateuefi_pxe_bootfile_name=bootx64.efiuefi_pxe_config_template=$pybasedir/drivers/modules/pxe_grub_config.template pxe_bootfile_name_by_arch=aarch64:grubaa64.efipxe_config_template_by_arch=aarch64:/tftpboot/pxe_grubaa64_config.template

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 228

Page 236: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

pxe_append_params = nofb nomodeset vga=normal systemd.journald.forward_to_console=yes ipa-debug=1 console=tty0 console=ttyS0,115200n8

裸金属服务会通过裸金属服务管理节点的cpu_arch属性,结合pxe_bootfile_name_by_arch与pxe_config_template_by_arch实现多架构部署支持,启动方式则由boot_mode指定。

步骤2 修改完成后,需重启ironic-conductor服务。

sudo systemctl restart openstack-ironic-conductor

----结束

4.5.4.2 配置串口控制台

步骤1 在控制节点安装serialproxy并开启服务

yum install openstack-nova-serialproxy

systemctl enable openstack-nova-serialproxy

systemctl start openstack-nova-serialproxy

步骤2 修改控制节点的nova配置文件

在/etc/nova/nova文件中增加如下内容:

[serial_console]enabled=trueport_range=10000:20000serialproxy_host=0.0.0.0serialproxy_port=6083

步骤3 重启控制节点的nova服务

systemctl restart openstack-nova-scheduler.service

步骤4 在裸金属服务管理节点安装socat

yum install socat

步骤5 修改裸金属服务管理baremetal节点的nova配置文件

在/etc/nova/nova文件中增加如下内容:

[serial_console]enabled=trueport_range=10000:20000base_url=ws://controller:6083/proxyclient_address=${my_ip}enabled=true

步骤6 重启裸金属服务管理节点的nova服务

systemctl restart openstack-nova-compute.service

----结束

4.5.4.3 配置裸金属实例管理驱动

Bare Metal服务通过裸金属实例管理驱动实现裸金属管理的相关操作。裸金属实例管理驱动是由一系列硬件接口组成,以实现相关操作,分为ipmi、redfish等通用型驱

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 229

Page 237: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

动,与ilo、irmc等特定厂商驱动。本小节以ipmi驱动为例子,介绍如何在Bare Metal服务中增加裸金属实例管理驱动。

以下操作在裸金属服务管理baremetal节点操作。

步骤1 启用裸金属实例管理驱动。

在”/etc/ironic/ironic.conf”文件中,设置如下内容:

[DEFAULT]enabled_hardware_types = ipmi

步骤2 启用硬件接口。

在”/etc/ironic/ironic.conf”文件中,设置如下内容:

[DEFAULT]enabled_boot_interfaces = pxeenabled_console_interfaces = ipmitool-socat,no-consoleenabled_deploy_interfaces = iscsi,directenabled_inspect_interfaces = no-inspect,inspectorenabled_management_interfaces = ipmitoolenabled_network_interfaces = flat,neutronenabled_power_interfaces = ipmitoolenabled_raid_interfaces = agent,no-raidenabled_storage_interfaces = cinder,noopenabled_vendor_interfaces = ipmitool,no-vendor

步骤3 设置硬件接口默认值。

在”/etc/ironic/ironic.conf”文件中,设置如下内容:

[DEFAULT]default_deploy_interface = iscsidefault_network_interface = flatdefault_console_interface = no-inspectdefault_inspect_interface = inspectordefault_raid_interface = no-raid

步骤4 配置IPMI支持。

1. 安装ipmitool。sudo yum install ipmitool或者通过源码进行安装:https://github.com/ipmitool/ipmitool

2. 安装完成后,可运行ipmitool命令进行验证。

ipmitool -I lanplus -H <ip-address> -U <username> -P <password> chassispower status

说明

应将<ip-address> ,<username> ,<password>设置为待验证服务器BMC的IP地址,账号,密码。

步骤5 配置ISCSI支持。

在ironic-conductor 节点安装 qemu-img与iscsiadm工具。

yum install iscsi-initiator-utils qemu-img

步骤6 配置direct部署支持。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 230

Page 238: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

direct部署可通过对象存储服务或者http服务实现。若使用对象存储服务则要求镜像服务glance后端需对接对象存储服务swift或ceph,同时完成对象存储服务中tempUrl配置。本小节使用http服务实现direct部署。

1. 创建http根目录

sudo mkdir -p /httpbootsudo chown -R ironic /httpboot

2. 在/etc/httpd/conf.d目录下创建ironic-http-wsgi.conf文件,内容如下:Listen 3928 <VirtualHost *:3928> DocumentRoot "/httpboot" <Directory "/httpboot"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all Require all granted </Directory></VirtualHost>

3. 应正确设置httpboot路径。

并执行如下命令:

sudo systemctl reload httpd

说明

若未安装apache 服务,则需使用命令sudo yum install httpd进行安装。

4. 在”/etc/ironic/ironic.conf”文件中,设置如下内容:[deploy]http_root=/httpboothttp_url=${my_ip}:3928 [agent]image_download_source = http

同时应确保正确配置http_url与http_root。

步骤7 重启服务。

sudo systemctl restart openstack-ironic-conductor

----结束

4.5.5 (可选)相关组件安装

4.5.5.1 ironic-inspector 组件安装

在裸金属实例管理节点注册过程中,需要将裸金属物理服务器硬件信息增加至节点中,ironic-inspector用于实现裸金属物理服务器硬件信息自动化收集,包括但不限于cpu核数、内存容量、硬盘容量、体系架构等信息。本节将介绍如何安装ironic-inspector。

ironic-inspector包含有两个服务,一个是ironic-inspector服务,用于和ipa协作完成inspect流程任务;另一个为ironic-inspector-dnsmasq服务,用于在inspect阶段承担dhcp、tftp功能。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 231

Page 239: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

ironic-inspector 可以与 ironic-conducor 在同一个节点,也可以在不同节点。本小节在ironic-conducor所在节点安装ironic-inspector组件,因此以下操作在裸金属服务管理baremetal节点操作。

ironic-inspector 网络配置

ironic-inspector组件将会为裸金属实例提供dhcp、tftp功能,因此要求ironic-inspector所在节点与裸金属服务器节点存在物理网络链路,推荐ironic-inspector组件使用单独的网络接口,以避免与其他服务相互干扰。若无单独网络接口,请参考情况2进行配置。

情况一:ironic-inspector组件使用单独的网络接口

步骤1 创建网桥。

ovs-vsctl add-br br-inspector

步骤2 连接外部网络接口。

ovs-vsctl add-port br-inspector {eth}

说明

应将{eth}修改为实际网络连接接口。

步骤3 配置br-inspector IP。

ifcongfig br-inspector up

ifconfig {eth} 0

ifcongfig br-inspector 172.24.66.254/24

说明

此处所配置的IP不与其他网络设备冲突就行。

----结束

情况2:ironic-inspector组件其他组件使用相同网络接口

步骤1 查看当前环境网络拓扑。

ovs-vsctl show

查看当前ironic管理节点网络拓扑如下:

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 232

Page 240: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

br-ex网桥使用存在外部连接接口。

说明

不同环境的网络配置存在差异,找到有外部连接端口的网桥即可。

步骤2 创建网络设备。

使用ip link命令创建ex-inspector与br-inspector设备:

sudo ip link add ex-inspector type veth peer name br-inspector

其中br-inspector作为ironic-inspector服务使用接口,ex-inspector用于连接br-ex与br-inspector。

步骤3 使能网络设备。

sudo ip link set dev ex-inspector up

sudo ip link set dev ex-inspector mtu 1400

sudo ip link set dev br-inspector up

sudo ip link set dev br-inspector mtu 1400

步骤4 配置br-inspector IP。

sudo ip addr add 172.24.66.254/24 dev br-inspector

说明

此处所配置的IP不与其他网络设备冲突就行。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 233

Page 241: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤5 将ex-inspector加入br-ex网桥。

sudo ovs-vsctl add-port br-ex ex-inspector

步骤6 配置iptables 。

sudo iptables -I INPUT -i br-inspector -p udp --dport 69 -j ACCEPT

sudo iptables -I INPUT -i br-inspector -p tcp --dport 5050 -j ACCEPT

----结束

ironic-inspector 安装

ironic-inspector服务可安装任意节点,可以与 ironic-conducor 在同一个节点,也可以不同,本文选择安装ironic-inspector服务于裸金属服务管理节点。

本小节内容除步骤1-3在控制节点进行,其他步骤在inspector服务节点进行。

步骤1 在控制节点创建ironic-inspector数据库。

创建ironic-inspector数据库,本文与其他openstack服务相同使用MySQL数据库。

mysql -u root -p

CREATE DATABASE ironic_inspector CHARACTER SET utf8;

GRANT ALL PRIVILEGES ON ironic_inspector.* TO 'ironic_inspector'@'localhost'IDENTIFIED BY '<PASSWORD>';

GRANT ALL PRIVILEGES ON ironic_inspector.* TO 'ironic_inspector'@'%'IDENTIFIED BY '<PASSWORD>';

exit

说明

为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处PASSWORD为ironic_inspector数据库的密码。

步骤2 在控制节点创建ironic-inspector认证信息与endpoint,并输入ironic-inspector用户密码。

openstack user create --password-prompt ironic-inspector

说明

这里输入的ironic-inspector用户密码需要和ironic-inspector数据库的访问密码一致。

openstack role add --user ironic-inspector --project service admin

openstack service create --name ironic-inspector --description 'Bare MetalIntrospection Service' --enable baremetal-introspection

openstack endpoint create --region RegionOne --enable ironic-inspectoradmin http://{IRONIC_INSPECTOR_NODE}:5050

openstack endpoint create --region RegionOne --enable ironic-inspectorinternal http://{IRONIC_INSPECTOR_NODE}:5050

openstack endpoint create --region RegionOne --enable ironic-inspectorpublic http://{IRONIC_INSPECTOR_NODE}:5050

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 234

Page 242: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

IRONIC_INSPECTOR_NODE为ironic-inspector服务所安装节点的主机名或IP,若ironic-inspector安装在ironic-api所在节点,则主机名为“baremetal”。

步骤3 在控制节点安装ironic-inspector-client。

sudo yum install python-ironic-inspector-client

步骤4 安装ironic-inspector。

sudo yum install openstack-ironic-inspector python-ironic-inspector-client

步骤5 配置ironic-inspector服务。

编写”/etc/ironic-inspector/inspector.conf”文件,增加如下内容:

[DEFAULT]rootwrap_config = /etc/ironic-inspector/rootwrap.conftransport_url = rabbit://openstack:<PASSWORD>@controller:5672auth_strategy = keystonelisten_address = 0.0.0.0listen_port = 5050 [database]connection = mysql+pymysql://ironic_inspector:<PASSWORD>@controller/ironic_inspector?charset=utf8 [iptables]dnsmasq_interface = {BR-inspect} //inspector-dnsmasq使用的网桥,用于发送dhcp、tftp的报文 [ironic]auth_type=passwordauth_url=http://controller:5000/v3/project_name=serviceusername=ironic-inspectorpassword=<PASSWORD>project_domain_name=defaultuser_domain_name=default [keystone_authtoken]auth_type=passwordwww_authenticate_uri=http://controller:5000auth_url=http://controller:5000/v3/memcached_servers = controller:11211username=ironic-inspectorpassword=<PASSWORD>project_name=serviceproject_domain_name=defaultuser_domain_name=default [processing]add_ports = pxekeep_ports = presentalways_store_ramdisk_logs = Trueramdisk_logs_dir = /var/log/ironic-inspector/ramdisk-logs

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 235

Page 243: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

表 4-5 参数解释

参数 解释

add_ports = pxe 用于发现网卡,all表示添加所有网卡,pxe表示只添加pxe启动的那块网卡

keep_ports = present 用于决定保留哪些网卡,all表示保留所有添加的网卡,present表示只保留当前使用的网卡

说明

PASSWORD为对应组件所设置密码,BR-inspect为inspector-dnsmasq所使用的网桥,本节中为br-inspector。

步骤6 创建inspector服务tftp根目录。

若ironic-inspector服务未安装在ironic服务节点,则需参考修改ironic配置文件完成tftp服务器安装与配置。

新建inspector服务tftp根目录。

sudo mkdir -p /tftpboot/inspector

sudo chown -R ironic /tftpboot/inspector

sudo chmod 776 /tftpboot/inspector

步骤7 复制相关文件。

1. 进入“/tftpboot/inspector”目录。

cd /tftpboot/inspector2. 复制相关文件至“/tftpboot/inspector”。

cp /tftpboot/*.efi /tftpboot/inspectorcp /tftpboot/pxelinux.0 /tftpboot/inspector

3. 将创建、上传用户镜像步骤步骤2-步骤7获取的x86、aarch64架构的部署镜像内核、临时文件系统至/tftpboot/inspector,并将文件重名为ipa-{arch}.initramfs与ipa-{arch}.kernel。openstack image save ipa-x86-kernel --file /tftpboot/inspector/ipa-x86.kernelopenstack image save ipa-x86-initrd --file /tftpboot/inspector/ipa-x86.initramfs

openstack image save ipa-aarch64-kernel --file /tftpboot/inspector/ipa-aarch64.kernelopenstack image save ipa-aarch64-initrd --file /tftpboot/inspector/ipa-aarch64.initramfs

步骤8 创建引导配置文件。

在“/tftpboot/inspector”目录完成以下操作:

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 236

Page 244: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

1. 创建引导配置文件grub.cfg,内容如下:set default=masterset timeout=5set hidden_timeout_quiet=false menuentry "master" { configfile /grub-${grub_cpu}.cfg}

2. 创建x86引导配置文件grub-i386.cfg,内容如下:set default='Introspection for x86'set timeout=5set hidden_timeout_quiet=false menuentry 'Introspection for x86' { linuxefi ipa-x86.kernel text showopts selinux=0 ipa-inspection-callback-url=http://{IRONIC_INSPECTOR_NODE}:5050/v1/continue ipa-inspection-collectors=default ipa-collect-lldp=1 systemd.journald.forward_to_console=yes ipa-debug=1 ipa-api-url=http://{IRONIC_NODE}:6385 initrdefi ipa-x86.initramfs}

3. 创建x86引导配置文件grub-x86_64.cfg软链接。

ln -s grub-i386.cfg grub-x86_64.cfg4. 创建aarch64引导配置文件grub-arm64.cfg,内容如下:

set default='Introspection for aarch64'set timeout=5set hidden_timeout_quiet=false menuentry 'Introspection for aarch64' { linux ipa-aarch64.kernel text showopts selinux=0 ipa-inspection-callback-url=http://{IRONIC_INSPECTOR_NODE}:5050/v1/continue ipa-inspection-collectors=default ipa-collect-lldp=1 systemd.journald.forward_to_console=yes ipa-debug=1 ipa-api-url=http://{IRONIC_NODE}:6385 initrd ipa-aarch64.initramfs}

5. 创建x86 Legacy启动引导配置文件。

6. 创建目录“sudo mkdir -p /tftpboot/inspect/pxelinux.cfg”。

7. 在“pxelinux.cfg”目录下创建文件default,内容如下default introspect label introspectkernel ipa-x86.kernelappend initrd=ipa-x86.initramfs ipa-inspection-callback-url=http://{IRONIC_INSPECTOR_NODE}:5050/v1/continue systemd.journald.forward_to_console=yes ipa-api-url=http://{IRONIC_NODE}:6385 ipappend 3

说明

{IRONIC_INSPECTOR_NODE}表示ironic-inspector服务所在节点ip,{IRONIC_NODE}表示ironic服务所在节点ip。

步骤9 配置ironic-inspector-dhcp服务。

编写”/etc/ironic-inspector/dnsmasq.conf”文件,增加如下内容:

interface={BR-inspect}dhcp-range=172.24.66.100,172.24.66.250

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 237

Page 245: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

dhcp-match=set:efi,option:client-arch,7dhcp-match=set:efi,option:client-arch,9dhcp-match=aarch64, option:client-arch, 11 #aarch64tftp-root=/tftpboot/inspectordhcp-boot=tag:aarch64,grubaa64.efidhcp-boot=tag:!aarch64,tag:efi,grubx64.efidhcp-boot=tag:!aarch64,tag:!efi,pxelinux.0dhcp-sequential-ip

说明

BR-inspect为inspector-dnsmasq所使用的网桥,本节中为br-inspector。dhcp-range所配置的ip范围应与5.5.1.1 小节为br-inspector配置的ip处于同一网段。

步骤10 配置ironic服务。

在”/etc/ironic/ironic.conf”文件中增加如下内容:

[inspector]enabled = trueregion_name = RegionOnecafile = /opt/stack/data/ca-bundle.pemproject_domain_id = defaultuser_domain_id = defaultproject_name = servicepassword = <PASSWORD>username = ironicauth_url = http://controller:5000/v3/auth_type = password

说明

为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处<PASSWORD>为你ironic在inspector中为用户配置的密码huawei。

并重启服务。

sudo systemctl restart openstack-ironic-conductor

步骤11 同步ironic-inspector数据库。

ironic-inspector-dbsync --config-file /etc/ironic-inspector/inspector.confupgrade

步骤12 启动服务。

systemctl start openstack-ironic-inspector

说明

由于inspector的DHCP服务是不区分mac地址的,如果在flat网络中使用,跟neutron-dhcp-agent有冲突。因此如果 是flat网络,建议分开进行inspector和provision。在需要再启动openstack-ironic-inspector-dnsmasq服务。

----结束

4.5.5.2 ironic-ui 组件安装

ironic-ui组件是OpenStack Horizon服务的一个插件,可实现裸金属服务管理节点的图形化操作。要求已完成Horizon组件安装。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 238

Page 246: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

在Horizon所安装节点安装ironic-ui,本文中Horizon安装在控制节点,因此ironic-ui安装于控制节点。

步骤1 下载ironic-ui源码。

git clone https://opendev.org/openstack/ironic-ui -b stable/stein

cd ironic-ui

步骤2 复制_2200_ironic.py文件至horizon使能目录。

cp ./ironic_ui/enabled/_2200_ironic.py /usr/share/openstack-dashboard/openstack_dashboard/local/enabled/

步骤3 安装ironic-ui。

pip install -r requirements.txt -e .

步骤4 重启httpd服务

systemctl restart httpd

----结束

4.6 OpenStack 混合部署虚拟机集成验证

4.6.1 混合部署 Glance在OpenStack中主要为实例提供公共镜像服务能力以及镜像/虚拟机快照管理功能,属于OpenStack的核心组件之一。

不同CPU架构的计算节点使用的镜像不同,因此混合部署环境下需要能区分X86_64和ARM两种体系的镜像文件,Glance本身支持通过设置镜像文件的元数据property:architecture属性设置镜像文件。

虚拟机创建过程中,选择某一architecture属性的镜像后,在Nova scheduler调度过程中自动选择匹配镜像architecture的节点创建虚拟机。

典型场景:

在创建Image时在Image上设置属性,也可以在现有Image上设置属性。分别使用openstack image create 和openstack image set命令。

在控制节点执行以下操作:

步骤1 使用admin凭据。

source /etc/keystone/admin-openrc

步骤2 (可选)下载x86_64/ARM测试镜像各一个,从外网下载测试镜像需配置代理,本地有测试镜像可忽略。

wget https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-aarch64-disk.img --no-check-certificate

wget https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img --no-check-certificate

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 239

Page 247: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤3 设置镜像architecture属性。

● 方式一:

上传镜像文件到OpenStack 镜像仓库时设置镜像architecture属性。

openstack image create "cirros-0.4.0-x86_64" --file ./cirros-0.4.0-x86_64-disk.img --property architecture=x86_64 --disk-format qcow2 --container-format bare --public

● 方式二:

对镜像仓现有Image设置architecture属性。

openstack image create "cirros-0.4.0-aarch64" --file ./cirros-0.4.0-aarch64-disk.img --disk-format qcow2 --container-format bare --publicopenstack image set --property architecture=aarch64 cirros-0.4.0-aarch64

步骤4 查询确认镜像已正确设置architecture属性。

openstack image show cirros-0.4.0-x86_64

openstack image show cirros-0.4.0-aarch64

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 240

Page 248: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

4.6.2 OpenStack 混合部署计算 AZ 域管理

Availability Zones是 终用户可见的逻辑抽象,用于在不了解物理基础结构的情况下对云进行分区。通常是对 computes 节点上的资源在小的区域内(国家/地区,数据中心,机架)进行逻辑上的分组和隔离。

Host Aggregates 是在 Availability Zones 的基础上更进一步地进行逻辑的分组和隔离。例如我们可以根据不同的 computes 节点的物理硬件配置将具有相同共性的物理资源规划在同一 Host Aggregate 之下,或者根据用户的具体需求将几个 computes 节点规划在具有相同用途的同一 Host Aggregate 之下,通过这样的划分有利于提高OpenStack 资源的使用效率。

图 4-4 Availability Zones 与 Host Aggregates 的关系

在控制节点执行以下操作。

典型场景:

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 241

Page 249: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤1 使用admin用户登录OpenStack 命令行。

source /etc/keystone/admin-openrc

步骤2 openstack客户端提供了创建主机聚合并将其与AZ关联的功能。例如,要创建一个新的聚合,并在此过程中将其与AZ关联,并使用openstack客户端向其添加主机 。

混合部署环境下同一个AZ域内为同一类型的计算节点。

nova aggregate-create agg-x86 az-x86

nova aggregate-create agg-arm az-arm

步骤3 向主机聚合名称内加入计算节点,自动会加入关联的AZ域。

nova aggregate-add-host agg-x86 x86-compute

nova aggregate-add-host agg-arm arm-compute

步骤4 要列出所有主机聚合并显示有关特定聚合的信息,以确定主机聚合属于哪个可用区。

openstack aggregate list --long

openstack aggregate show agg-arm

----结束

4.6.3 OpenStack 混合部署 Cinder在控制节点执行以下操作。

步骤1 使用admin凭据。

source /etc/keystone/admin-openrc

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 242

Page 250: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤2 查看所有Cinder 存储域。

openstack availability zone list --volume

步骤3 从指定Cinder存储AZ域创建一个卷. 示例创建从az-arm 存储域创建一个名称为volumeTest,大小10G的卷。

openstack volume create --availability-zone az-arm --name volumeTest --size10

步骤4 确认创建成功,AZ域信息正确。

openstack volume list

openstack volume show volumeTest

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 243

Page 251: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

----结束

4.6.4 OpenStack 混合部署 Network本案例示范self-service+ovs网络类型的混合部署操作指导,对于self-service+linuxBridge同样,ovs或者linuxBridge只是网络类型实现机制的区别,对于OpenStack管理和租户来说,不感知具体的网络实现方式。

本案列创建的网络拓扑如下,test_selfservice_arm是arm网络域租户网络,网络CIDR为192.168.120.0/24, test_selfservice_x86是x86网络域租户网络,网络CIDR为192.168.130.0/24, 通过neutron提供的虚拟router把两个网络连接起来,AZ域内网络互通,不同AZ域内网络通过router实现网络互通。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 244

Page 252: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4.6.4.1 网络拓扑创建

在控制节点执行以下操作。

步骤1 使用admin凭据。

source /etc/keystone/admin-openrc

步骤2 创建arm AZ域self-service租户网络。

openstack network create --availability-zone-hint az-arm test_selfservice_arm

openstack subnet create --network test_selfservice_arm --gateway192.168.120.1 --subnet-range 192.168.120.0/24 sub_selfservice_arm

步骤3 创建x86 AZ域self-service租户网络。

openstack network create --availability-zone-hint az-x86 test_selfservice_x86

openstack subnet create --network test_selfservice_x86 --gateway192.168.130.1 --subnet-range 192.168.130.0/24 sub_selfservice_arm

步骤4 创建一个名称为“test_router”的router。

openstack router create --availability-zone-hint az-x86 test_router

步骤5 通过router把两个self-service租户网络连接起来。

openstack router add subnet test_router test_selfservice_x86

openstack router add subnet test_router test_selfservice_arm

----结束

4.6.4.2 不同 AZ 域虚拟机互通测试

在控制节点执行以下操作。

步骤1 使用admin凭据。

source /etc/keystone/admin-openrc

步骤2 创建一台x86虚拟机在x86计算az域内(选择self-service x86网络)。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 245

Page 253: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

openstack server create --flavor m1.numa --image CentOS-7.6-x86_64 --nicnet-id=test_selfservice_x86 x86-self-service-instance

步骤3 创建一台arm虚拟机在arm计算az域内(选择self-service arm网络)。

openstack server create --flavor m1.numa --image CentOS-7.6-aarch64 --nicnet-id=test_selfservice_arm arm-self-service-instance

步骤4 测试两个不同az域两台虚拟机的网络互通。

1. 查询创建的虚拟机ip。

openstack server list

2. 查询vnc。

nova get-vnc-console x86-self-service-instance novnc

3. 通过浏览器登录虚拟机,然后ping 另外一台虚拟机的ip。

ping < arm-self-service-instance ip>

----结束

4.7 OpenStack 混合部署裸金属服务集成验证

4.7.1 裸金属实例部署先决条件裸金属实例节点验证要求已完成Bare Metal服务安装部署与配置,包括:

● 在运行Ironic-conductor的Bare Metal管理节点上已完成相关软件包配置,例如tftp-server,ipmi,syslinux等。

● 在Bare Metal管理节点完成Conpute服务配置,并将计算服务驱动设置为ironic驱动。

● 已在Glance中上传所需镜像,裸金属实例部署所需镜像如下:

a. 部署镜像,包括部署镜像内核kernel、部署镜像临时文件系统ramdisk。

b. 用户镜像,分为完整磁盘镜像与分区镜像两种:

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 246

Page 254: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

i. 完整磁盘镜像包含分区信息,可独立使用,比较常用。

ii. 分区镜像仅包含根分区内容,需配合分区镜像内核、分区镜像临时文件系统一同使用。

同时需要如下文所述进行以下操作:

● 通过Ironic RESTful API服务完成的裸金属实例对应的管理节点注册。

● 为可用裸金属物理服务器创建实例类型,在Nova发放实例时使用。

4.7.2 裸金属实例的管理节点注册在正确配置所有服务之后,您应该在Bare Metal服务中完成裸金属实例的硬件节点注册,使得Compute服务可以调度裸金属物理服务器资源。裸金属服务器硬件节点完成注册后,裸金属实例管理节点中的provision_state处于available状态,此时,Compute服务可以发现裸金属实例节点,从而可完成后续的实例创建等操作。

说明

在使用Bare Metal服务注册节点之后,不会立即将新资源通知Compute服务,需要等待compute服务的下一次定时任务完成后才会更新信息,也可手动执行"nova-manage cell_v2discover_hosts --by-service"命令使compute服务发现裸金属服务器节点资源。

以下所有操作在controller控制节点操作。

4.7.2.1 裸金属实例管理驱动

在注册节点时,需要选择裸金属实例管理驱动。

步骤1 查看当前节点所支持的裸金属实例管理驱动。

openstack baremetal driver list

步骤2 查看管理驱动信息,其中包含管理驱动所支持的接口选项可选值与默认值。

openstack baremetal driver show ipmi

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 247

Page 255: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤3 查看管理驱动的属性配置信息。

每个管理驱动都有一个管理驱动属性列表,需要在裸金属实例管理节点中的driver_info字段指定该属性,以便管理驱动在管理节点上运行。该列表包含管理驱动使用的硬件接口的属性与属性描述,其中的必填项需在裸金属实例管理节点中指定。

openstack baremetal driver property list ipmi

----结束

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 248

Page 256: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4.7.2.2 创建裸金属实例管理节点

步骤1 配置ironic API版本。

Ironic API 从1.11版本后,裸金属实例管理节点的provision_state状态机添加了新的状态,并增加新特性,当前默认使用1.9的ironic API版本,推荐使用更高版本。

可通过设置环境变量来配置API版本:

export IRONIC_API_VERSION=1.11

export OS_BAREMETAL_API_VERSION=1.11

也可在命令中通过--os-baremetal-api-version指定API版本,例如:

openstack baremetal --os-baremetal-api-version 1.11 node list

步骤2 创建裸金属实例管理节点。

创建裸金属实例管理节点时,必须通过--driver字段指定4.7.2.1 裸金属实例管理驱动小节中所述的管理驱动。

openstack baremetal node create --driver ipmi --name {BM_NAME}

说明

后续裸金属实例管理节点的相关设置可通过uuid指定节点,若已通过--name字段指定裸金属实例管理节点的逻辑名,可使用裸金属实例名指定节点。

{BM_NAME}为裸金属实例管理节点的裸金属实例名称,要求具有唯一性,不支持特殊字符,本小节中使用“BM_TEST”进行演示。

步骤3 查看裸金属实例管理节点信息。

openstack baremetal node show ${BM_UUID} 或者

openstack baremetal node show ${BM_NAME}

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 249

Page 257: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

此时管理节点的供应状态provision_state为enroll。

步骤4 配置管理节点硬件接口信息。

从API版本1.31开始,可以为裸金属实例管理节点配置硬件接口信息,可配置选项与默认值如步骤2所述。

openstack baremetal --os-baremetal-api-version 1.31 node set ${BM_NAME}--deploy-interface iscsi --raid-interface no-raid

配置完成后,可通过命令进行查看:

openstack baremetal --os-baremetal-api-version 1.31 node show ${BM_NAME} --fields deploy_interface raid_interface

在API 1.31版本中可通过--fields指定所查看属性。

步骤5 配置管理驱动属性信息。

1. 使用driver_info字段设置管理驱动所需的属性,主要包括BMC等相关信息,以便Bare Metal服务可以管理该节点。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 250

Page 258: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

openstack baremetal node set ${BM_NAME} --driver-info ipmi_username=${USER_NAME} --driver-info ipmi_password=${PASSWORD} --driver-infoipmi_address=${ADDRESS} --driver-info ipmi_port=${PROT}

说明

USER_NAME、PASSWORD、ADDRESS、PROT分别为访问BMC的用户名、密码、ip地址、端口号,若不配置ipmi_port,则使用默认值623。

2. 配置完成后,可进行查看。

openstack baremetal node show {BM_NAME}

3. 可通过ipmitool工具验证所填配置正确、网络环境是否正常。

ipmitool -I lanplus -H ${ADDRESS} -U ${USER_NAME} -P ${PASSWORD} -p${PORT} power status

4. 可通过查看待部署裸金属实例的启动项信息,验证信息是否配置成功。

openstack baremetal node boot device show ${BM_NAME}

步骤6 配置管理节点部署镜像。

1. 指定与管理驱动兼容的部署镜像内核kernel与部署镜像临时文件系统ramdisk。

openstack baremetal node set ${BM_NAME} --driver-info deploy_kernel=${deploy_kernel_uuid} --driver-info deploy_ramdisk=${deploy_ramdisk_uuid}

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 251

Page 259: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

其中部署镜像为4.5.3.6 创建、上传用户镜像到Image服务小节步骤3-6中所述镜像,可通过命令“openstack image list”获取镜像uuid,部署镜像的体系架构应与实际物理服务器相匹配。

2. 配置完成后,可通过命令进行查看。

openstack baremetal --os-baremetal-api-version 1.31 node show ${BM_NAME} --fields driver_info

步骤7 配置管理节点网络信息。

1. 管理节点若使用neutron网络接口,则需指定provisioning_network与cleaning_network,若使用flat网络接口,则只需指定cleaning_network。供应网络与清理网络可以相同,也可以不同,根据实际情况进行配置。

openstack baremetal node set ${BM_NAME} --driver-infocleaning_network=${cleaning_network_uuid} --driver-infoprovisioning_network=${provisioning_network_uuid}

说明

此处所使用的网络为4.5.3.4 创建 Provisioning Network中所创建的网络,cleaning_network与provisioning_network可以相同,可通过命令“openstack networklist”获取网络uuid。

2. 配置完成后,可通过命令进行查看:

openstack baremetal --os-baremetal-api-version 1.31 node show ${BM_NAME} --fields driver_info

步骤8 配置管理节点引导模式。

openstack baremetal node set ${BM_NAME} --propertycapabilities='boot_mode:uefi'

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 252

Page 260: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

鲲鹏服务器只支持UEFI引导启动。

若使用CentOS-7-x86_64-GenericCloud-2003镜像部署X86_64服务器,应设置boot_mode:bios。

步骤9 配置管理端口。

1. 需要根据裸金属实例服务器网口的MAC地址创建端口,Bare Metal服务将会把MAC地址传递至网络服务,用于网络配置。应确保裸金属实例服务器中应有一个网口开启PXE功能,并已根据网口MAC地址成功创建端口。

openstack baremetal --os-baremetal-api-version 1.31 port create ${MAC_ADDRESS} --node ${BM_UUID} --pxe-enabled true

说明

应在裸金属实例服务器BIOS中开启网卡的PXE功能,网口的MAC地址可通过BMC等方式获取。

2. 可通过命令查看端口列表。

openstack baremetal port list

3. 也可以通过命令查看端口详细信息。

openstack baremetal port show ${port_uuid}

4. 使用命令查看端口pxe_enabled状态。

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 253

Page 261: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

openstack baremetal --os-baremetal-api-version 1.31 port list --fieldsaddress pxe_enabled node_uuid

对于每个裸金属实例管理节点,应有有一个端口pxe_enabled状态为True。

若端口pxe_enabled为False,使用命令进行设置:

openstack baremetal port set {port_uuid} --pxe-enabled

----结束

4.7.2.3 管理裸金属实例管理节点

步骤1 添加资源调度信息。

1. 可通过资源类对不同规格的裸金属实例服务器进行管理。裸金属实例节点指定管理节点的资源类后,只有选择相匹配的实例类型flavors才可被调度。

openstack --os-baremetal-api-version 1.21 baremetal node set ${BM_NAME} --resource-class $CLASS_NAME

其中CLASS_NAME可自定义。

2. 配置完成后,可通过命令进行查看:

openstack baremetal --os-baremetal-api-version 1.31 node show ${BM_NAME} --fields name resource_class

若需指定更高级的调度,可通过--property字段指定节点的capabilities属性,配合compute服务中的ComputeCapabilitiesFilter进行使用。

openstack baremetal node set $NODE_UUID --propertycapabilities=key1:val1,key2:val2

步骤2 配置所匹配的硬件信息。

openstack baremetal node set ${BM_NAME} --property cpus=$CPU_COUNT --property memory_mb=$RAM_MB --property local_gb=$DISK_GB --propertycpu_arch=$ARCH

其中x86服务器的cpu_arch为x86_64,arm服务器的cpu_arch为aarch64。

配置完成后,可通过命令查看:

openstack baremetal --os-baremetal-api-version 1.31 node show ${BM_NAME} --fields name properties

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 254

Page 262: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

硬件信息也可通过硬件检查功能进行收集。

步骤3 验证管理节点配置。

openstack baremetal --os-baremetal-api-version 1.11 node validate ${BM_NAME}

应确保management 与 power状态为True。

如果验证失败,应根据失败信息进行检查,部分配置失败是因为驱动未支持。

当 Bare Metal服务与Compute服务配合使用时,管理节点中的instance_info中image相关配置无需用户主动配置,将在实例部署之前由Compute服务自动配置,因此可忽略部署deploy选项的错误。

步骤4 使管理节点进入管理状态。

当上一步骤中management 与 power状态为True时,管理节点可使用如下命令进入管理状态:

openstack baremetal --os-baremetal-api-version 1.11 node manage ${BM_NAME}

可通过命令进行查看:

openstack baremetal --os-baremetal-api-version 1.31 node show ${BM_NAME} --fields name provision_state

步骤5 (可选)硬件检查收集硬件信息。

若已完成硬件检查驱动配置,可进行如下操作收集硬件信息:

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 255

Page 263: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

1. 开启inspector-dnsmasq服务。

systemctl start openstack-ironic-inspector-dnsmasq2. 启动检查。

openstack baremetal --os-baremetal-api-version 1.11 node inspect ${BM_NAME}

该命令为异步调用,并不会立即返回结果,可通过如下命令查看管理节点状态:

watch -d -n 1 "openstack baremetal node list"

所配置的管理节点Provisioning State变化为manageable -> inspecting wait ->manageable

3. 完成检查后,可查看硬件信息。

openstack baremetal --os-baremetal-api-version 1.11 node show ${BM_NAME}管理节点的properties中包含memory_mb、cpu_arch、local_gb、cpus等信息。

4. 完成后停止inspector-dnsmasq服务。

systemctl stop openstack-ironic-inspector-dnsmasq

步骤6 配置控制台信息(可选)。

设置控制台接口

openstack --os-baremetal-api-version 1.31 baremetal node set ${BM_NAME}--console-interface ipmitool-socat

设置控制台端口

openstack baremetal node set ${BM_NAME} --driver-info ipmi_terminal_port=${port}

说明

port应符合4.5.4.2 配置串口控制台小节中所配置nova.conf中[serial_console]:port_range范围

使能控制台

openstack baremetal node console enable ${BM_NAME}

查看控制台信息

openstack baremetal node console show ${BM_NAME}

步骤7 使管理节点进入可用状态。

1. 进行端口检查。

openstack baremetal --os-baremetal-api-version 1.31 port list --fieldsaddress pxe_enabled node_uuid

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 256

Page 264: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

每个裸金属实例管理节点应至少有一个端口的pxe_enabled状态为true。

说明

若端口pxe_enabled状态为false,则使用命令"openstack baremetal --os-baremetal-api-version 1.31 port set ${port_uuid} --pxe-enable"进行设置

2. 使管理节点进入可用状态。

openstack baremetal --os-baremetal-api-version 1.11 node provide ${BM_NAME}

Bare Metal服务默认配置为自动清理,将会对节点进行格式化操作。

3. 清理操作为异步调用,并不会立即返回结果,可通过如下命令查看管理节点状态。

watch -d -n 1 "openstack baremetal node list"

所配置的管理节点Provisioning State变化为“manageable -> cleaning -> cleanwait -> available”。

4. 若管理节点长时间停留在clean wait状态,可使用如下命令停止清理状态。

openstack baremetal --os-baremetal-api-version 1.31 node abort ${BM_NAME}

管理节点Provisioning State将转变为clean fail,可使用如下命令重新进入管理状态。

openstack baremetal --os-baremetal-api-version 1.11 node manage ${BM_NAME}

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 257

Page 265: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

说明

管理节点长时间处于clean wait问题解决步骤:

1. 若管理节点Maintenance状态为True,使用如下命令取消维修状态即可。

openstack baremetal node maintenance unset ${BM_NAME}2. 如果磁盘空间较大,执行抹盘时间较长,可选择在clean操作中关闭磁盘擦除,只清除磁盘

metadata信息,在Bare Metal服务节点中修改配置文件/etc/ironic/ironic.conf如下。[deploy]erase_devices_priority = 0

3. 通过BMC等方式登陆裸金属实例节点,查看ironic-python-agent服务日志,定位具体原因。

4. (不建议)关闭自动清理功能,在Bare Metal服务节点中修改配置文件/etc/ironic/ironic.conf如下:[conductor]automated_clean = true关闭自动清理功能后,可手动执行清理。

openstack baremetal --os-baremetal-api-version 1.15 node clean ${BM_NAME} --clean-steps '[{"interface": "deploy", "step": "erase_devices_metadata"}]'

步骤8 使能nova节点检查。

nova-manage cell_v2 discover_hosts --by-service

可通过命令验证裸金属实例节点是否被nova发现。

nova hypervisor-list

----结束

4.7.3 裸金属实例发放裸金属实例管理操作与虚拟机一致,若使用UI界面操作可参考虚拟机实例发放流程。

以下所有操作在控制controller节点操作。

步骤1 创建实例类型flavor。

openstack flavor create --ram $RAM_MB --vcpus $CPU --disk $DISK_GB ${flavor_name}

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 258

Page 266: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

其中flavor_name可自定义。

并根据需求设置flavor属性。

openstack flavor set --property resources:CUSTOM_${CLASS_NAME}=1 $flavorName

openstack flavor set --property resources:VCPU=0 $flavorName

openstack flavor set --property resources:MEMORY_MB=0 $flavorName

openstack flavor set --property resources:DISK_GB=0 $flavorName

说明

flavor中 custom resource class应与裸金属实例管理资源类型相关联,关联规则如下:

1. 以”CUSTOM_”开头。

2. 裸金属实例管理资源类型变为大写。

3. 所有标点符号都替换为下划线。

4. 如资源类名为baremetal-small,则对应为CUSTOM_BAREMETAL_SMALL。

步骤2 裸金属实例管理节点状态检查。

1. 裸金属实例管理节点供应状态应为available ,同时关闭维修状态,可利用如下命令检查管理节点是否满足要求。

openstack baremetal node list --provision-state available --no-maintenance

2. 确保已运行并启用了Compute服务。

openstack compute service list --service nova-compute

3. 检查管理节点资源属性已设置。

openstack --os-baremetal-api-version 1.21 baremetal node list --fieldsuuid name resource_class

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 259

Page 267: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4. 检查管理节点properties 属性。

openstack baremetal node show $BM_NAME --fields properties

5. 应至少包含memory_mb、cpu_arch、local_gb、cpus等信息。

检查所创建的实例类型flavor属性

应与裸金属实例管理节点相对应,显示格式上会存在差异。

步骤3 创建用户数据文件

创建cloud-init 用户数据文件 /opt/cloud-init-user-data.txt

内容如下:

#cloud-configssh_pwauth: truedisable_root: falsepassword: passwordlock_passwd: false

runcmd: - [ systemctl, restart, network ]

步骤4 创建实例。

nova boot --config-drive true --flavor ${flavor_name} --image ${image_uuid}${instance_name} --nic net-id=${network_uuid} --user-data /opt/cloud-init-user-data.txt

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 260

Page 268: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

其中instance_name可自定义。

说明

此处所使用的用户镜像为4.5.3.6 创建、上传用户镜像到Image服务小节步骤1中所述镜像,用户镜像的体系架构应与实际物理服务器相匹配,可通过命令“openstack image list”获取镜像uuid。此处所使用的网络为4.5.3.4 创建 Provisioning Network中所创建的网络,可通过命令“openstack network list”获取网络uuid。

步骤5 清理操作为异步调用,并不会立即返回结果,可通过如下命令查看管理节点状态。

watch -d -n 1 "openstack baremetal node list"

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 261

Page 269: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

所配置的管理节点Provisioning State变化为“available -> deploying -> wait call-back -> deploying -> active”。

步骤6 部署成功后,可查看实例信息。

nova show ${instance_name}

其status应为ACTIVE。

步骤7 查看裸金属实例管理节点信息。

openstack baremetal node list

裸金属实例管理节点Provisioning State为ACTIVE,Instance UUID为所创建实例的UUID。

若nova返回“No valid host was found”错误,则需进行步骤2 所述的检查,还可查看nova-scheduler服务日志检查是否被过滤器过滤,若无发现,则需查看ironic-conductor服务日志进一步定位。

----结束

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 262

Page 270: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

4.7.4 裸金属实例删除裸金属实例管理操作与虚拟机一致,若使用UI界面操作可参考虚拟机实例删除流程。

以下所有操作在控制controller节点操作。

步骤1 删除实例。

nova delete ${instance_name} 或 openstack server delete ${instance_name}

步骤2 查看裸金属实例管理节点状态。

watch -d -n 1 "openstack baremetal node list"

实例所对应的裸金属实例管理节点Provisioning State变化为 “active -> deleting ->cleaning -> clean wait-> available”。

----结束

鲲鹏云平台解决方案部署指南

4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 263

Page 271: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

5 容器混部 部署指南(CentOS 7.6)

5.1 介绍

5.2 环境要求

5.3 安装Docker

5.4 安装K8s

5.5 安装Ceph

5.6 验证K8s+Docker部署

5.7 故障排除

5.1 介绍

简要介绍● Kubernetes

Kubernetes(常简称为K8s)是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具,包括Docker等。Kubernetes在设计结构上定义了一系列的构建模块,其目的是为了提供一个可以共同提供部署、维护和扩展应用程序的机制。组成Kubernetes的组件设计概念为松耦合和可扩展的,这样可以使之满足多种不同的工作负载。可扩展性在很大程度上由Kubernetes API提供,此API主要被作为扩展的内部组件以及Kubernetes上运行的容器来使用。

● DockerDocker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如同一个货轮,每一个在操作系统基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在 顶端署上自己的名字( 后一个标准化组件是用户的app),这也就是基于Docker的PaaS产品的原型。

开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上。容器是完全使用沙箱机制,相互之间不会有任何接口。

鲲鹏云平台解决方案部署指南 5 容器混部 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 264

Page 272: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

● CephCeph是一个可靠的、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。Ceph提供统一的横向扩展存储,带有自我修复和智能预测故障的功能,已经成为软件定义存储的事实上的标准之一。因为Ceph是开源的,它使许多供应商能够提供基于Ceph的软件去定义合适的存储系统。

● 混合部署

混合部署属于鲲鹏芯片生态使能的功能性需求:要求实现K8S+Docker在x86和TaiShan下的混合部署,支持混部的功能点包括容器镜像创建、容器网络管理、容器存储管理。

考虑到用户实际使用方式,可以划分为两大场景:

1. 扩容场景

客户已有基于x86服务器组成的K8S+Docker集群,要求将新购入的TaiShan服务器加入现有集群,通过K8S Master(x86服务器)对TaiShan节点进行容器发放、网络管理和存储管理。

2. 新建场景

客户基于现有的x86服务器和TaiShan服务器组建新的K8S集群,并选定了TaiShan服务器作为K8S集群的Master,通过K8S Master,能够纳管TaiShan、x86节点,并对其进行容器发放、网络管理和存储管理。

存储管理中存储类型分为Volum类型和PersistentVolum类型。鉴于Ceph的流行度,存储管理将使用K8S集群外部的Ceph存储进行Persistent Volum 验证。

本文将描述x86和TaiShan服务器上进行K8S+Docker混合部署的环境安装部署方法。

建议的版本

建议的版本如下表所示。

表 5-1 建议的版本

软件名称 版本

K8S v1.15.1

Docker 18.09

Ceph 14.2.1

约束和限制

由于业务容器镜像的体系结构兼容性问题(即不是所有容器镜像都同时支持arm64体系结构和amd64体系结构),K8S发放pod时需指定服务器的体系结构。这样可以规避在服务器故障的情况下,pod漂移到其他体系结构的服务器带来的潜在风险。

如下例所示,可利用K8S现有nodeSelector机制进行指定。

apiVersion: v1kind: ReplicationControllermetadata:

鲲鹏云平台解决方案部署指南 5 容器混部 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 265

Page 273: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

name: webappspec:replicas: 2template:metadata:name: webapplabels:app: webappannotations:cni: "flannel"spec:containers:- name: webappimage: tomcatports:- containerPort: 8080nodeSelector: kubernetes.io/arch: arm64

5.2 环境要求

硬件要求

硬件要求如表5-2所示。

表 5-2 硬件要求

项目 要求 说明

服务器 TaiShan 200服务器(型号2280)

(6台)3台用于部署K8S+Docker3台用于部署Ceph

服务器 RH2288 V5服务器

(2台)用于部署K8S+Docker

网卡 1822 10GE(8张)

-

操作系统要求

操作系统要求如表5-3所示。

表 5-3 操作系统要求

项目 版本 下载地址

CentOS 7.6 X86版本:https://www.centos.org/download/Arm版本:https://isoredirect.centos.org/altarch/7/isos/aarch64/

Kernel 4.14.0 包含在操作系统镜像中。

鲲鹏云平台解决方案部署指南 5 容器混部 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 266

Page 274: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

项目 版本 下载地址

网络需求 - ● DockerHub(https://hub.docker.com/)网络可达。

● Docker下载地址(https://download.docker.com/linux/static/stable/aarch64/)网络可达。

● 集群各个节点之间网络可达, flannel插件代码(https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml)网络可达。

部署组网

图 5-1 部署组网

如图5-1所示,用3台TaiShan 200服务器(型号2280)、两台RH2288V5组成K8S混部集群,另外使用3台TaiShan 200服务器(型号2280)组成Ceph集群以验证K8S的存储接入功能。所有服务器的BMC管理网口使用GE交换机相连,业务网口使用10GE交换机相连。

5.3 安装 Docker

5.3.1 TaiShan 200 服务器(型号 2280)安装 Docker分别在3台TaiShan 200服务器(型号2280)上部署Docker。Docker安装方式请参见《Docker 安装指南(CentOS 7.6)》。

5.3.2 X86 服务器(RH2288 V5)安装 Docker分别在2台RH2288 V5服务器上部署Docker。Docker安装方式请参见《Install DockerEngine on CentOS》。

该方法和现行通用的安装Docker方法一致。

5.4 安装 K8s

鲲鹏云平台解决方案部署指南 5 容器混部 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 267

Page 275: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

5.4.1 TaiShan 200 服务器(型号 2280)安装 K8s分别在3台TaiShan 200服务器(型号2280)上,参考《K8s集群 部署指南(CentOS7.6)》的手动部署方式安装kubelet、kubeadm、kubectl,

及kube-apiserver、kube-scheduler、kube-proxy、kube-controller-manage、pause、etcd容器镜像。

说明

如果安装版本不为v1.15.1版本,可参考下述链接升级:

https://kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/

5.4.2 X86 服务器(RH2288 V5)安装 K8S分别在2台RH2288 V5服务器上,按照安装 kubeadm安装kubelet、kubeadm、kubectl及kube-apiserver、kube-scheduler、kube-proxy、kube-controller-manage、pause、etcd容器镜像。

和现行通用的安装K8S方法一致。

说明

如果安装版本不为v1.15.1版本,可参考下述链接升级:

https://kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/

5.4.3 配置主节点

5.4.3.1 选中 TaiShan 200 服务器(型号 2280)为 master 节点的情况

参照《K8s集群 部署指南(CentOS 7.6)》中的手动部署方式进行master节点初始化,配置计算节点加入集群的操作。

5.4.3.2 选中 x86 服务器为 master 节点的情况

参照下述链接进行master节点初始化,配置计算节点加入集群的操作:

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

和现行通用的配置K8s Master方法一致。

5.4.4 添加 Flannel 网络插件

步骤1 在mater节点上,获取flannel网络插件yaml文件。

#wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml --no-check-certificate

步骤2 在master节点上,安装flannel网络插件。

#kubectl apply -f kube-flannel.yml

鲲鹏云平台解决方案部署指南 5 容器混部 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 268

Page 276: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

步骤3 如遇到网络插件kube-flannel一直在尝试重启,有时能够正常,有时提示CrashLoopBackOff有时OOMKilled,可尝试按照《5.7 故障排除问题一:kube-flannel CrashLoopBackOff和OOMkilled异常》方法解决。

----结束

5.5 安装 Ceph

5.5.1 TaiShan 服务器(型号 2280 V2)安装 Ceph分别在3台TaiShan服务器(型号2280 V2)上,按照下述链接部署Ceph:

https://support.huaweicloud.com/instg-kunpengsdss/kunpengcephblock_03_0001.html

5.6 验证 K8s+Docker 部署运行下面两个用例,输出若和期待结果相符,即可认为部署成功

用例编号 001

测试名称 查看K8S集群节点

测试组网 参照5.2 环境要求部署组网

预置条件 1. 按照5.3 安装Docker安装Docker。2. 按照5.4 安装K8s安装K8S、配置主节点、配置计算节点加入集群。

测试步骤 在master查看集群节点,有预期结果。

kubectl get nodes

预期结果 1.所有计算节点均加入集群(可参照备注截图)。

备注

用例编号 002

测试名称 Master节点往Taishan节点发放容器

测试组网 参照5.2 环境要求部署组网

预置条件 Taishan服务器已加入集群,状态为Ready。

鲲鹏云平台解决方案部署指南 5 容器混部 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 269

Page 277: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

测试步骤 1. 在master节点上编写yaml文件:#vi nginx-arm.yamlapiVersion: apps/v1kind: Deploymentmetadata:name: nginx-arm-deploymentspec:selector:matchLabels:app: arm64v8_nginxreplicas: 40template:metadata:labels:app: arm64v8_nginxannotations:cni: "flannel"spec:containers:- name: nginximage: nginx:latestports:- containerPort: 80nodeSelector:kubernetes.io/arch: arm64

2. 在master上,根据yaml文件创建pod。#kubectl apply -f nginx-arm.yaml

3. 在master上,查看pod情况,有预期结果1。kubectl get pods -o wide -A

4. 登录到pod所在的Taishan节点,查看docker镜像的体系结构,有预期结果2。docker inspect nginx

预期结果 1. Nginx对应Pod所在节点为Taishan节点(可参照备注截图)。

2. 体系结构为arm64(可参照备注截图)。

鲲鹏云平台解决方案部署指南 5 容器混部 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 270

Page 278: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

备注 1. Nginx对应Pod所在节点为Taishan节点。

2. 体系结构为arm64。

5.7 故障排除

问题一:kube-flannel CrashLoopBackOff 和 OOMkilled 异常

现象描述:

kubectl get pod -n kube-system发现网络插件kube-flannel一直在尝试重启,有时能够正常,有时提示 CrashLoopBackOff有时OOMKilled。

可能原因:

kube-flannel.yml文件中内存配置的太小。

处理步骤:

1. 修改kube-flannel.yml中内存配置,将其调大一些。

比如将内存从50M修改到200M。

鲲鹏云平台解决方案部署指南 5 容器混部 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 271

Page 279: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

2. 重新apply。

kubectl apply -f kube-flannel.yml

问题二:服务器不能直接联网,需要通过代理连接外网的情况下,yum install 会一直 timeout

现象描述:

yum install 一直提示timeout。

可能原因:

代理通过命令行export http_proxy=xxx等进行配置,yum未能识别代理。

处理步骤:

1. 编辑/etc/yum.conf,增加代理字段。[main]cachedir=/var/cache/yum/$basearch/$releaseverkeepcache=0debuglevel=2logfile=/var/log/yum.logexactarch=1obsoletes=1gpgcheck=1plugins=1installonly_limit=5bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yumdistroverpkg=centos-releasesslverify=falsehttp_proxy=http://90.91.4.119:3128HTTP_PROXY=http://90.91.4.119:3128https_proxy=http://90.91.4.119:3128HTTPS_PROXY=http://90.91.4.119:3128ftp_proxy=http://90.91.4.119:3128proxy=http://90.91.4.119:3128

2. 重新尝试yum install。

鲲鹏云平台解决方案部署指南 5 容器混部 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 272

Page 280: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

问题三:node 节点 pod 无法启动,Status 一直处于 ContainerCreating现象描述:

kubectl get pod -o wide发现pod的STATUS一直为ContainerCreating

查看日志可发现:network: failed to set bridge addr: "cni0" already has an IPaddress different from 10.244.2.1/24

可能原因:

Node之前反复添加过集群。

处理步骤:

1. 在Node上执行如下操作。

kubeadm resetsystemctl stop kubeletsystemctl stop dockerrm -rf /var/lib/cni/rm -rf /var/lib/kubelet/*rm -rf /etc/cni/ifconfig cni0 downifconfig flannel.1 downifconfig docker0 downip link delete cni0ip link delete flannel.1systemctl start docker

2. Node上重新运行kubeadm join 加入集群。

3. 重新尝试创建pod容器。

鲲鹏云平台解决方案部署指南 5 容器混部 部署指南(CentOS 7.6)

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 273

Page 281: 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求 类别 项目 要求 硬件 服务器 3 * TaiShan 200服务器(型号2280) CPU

A 修订记录

发布日期 修订记录

2020-06-24 第三次正式发布

新增《4 OpenStack Stein虚机裸机混合部署指南(CentOS7.6)》和《5 容器混部 部署指南(CentOS 7.6)》。

2020-05-15 第二次正式发布

修改《OpenStack Stein 部署指南(CentOS 7.6)》“2.4 安装并验证”章节部分操作描述。

2020-03-20 第一次正式发布

鲲鹏云平台解决方案部署指南 A 修订记录

文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 274