部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求...
Transcript of 部署指南 · 1.2 环境要求 硬件要求 硬件要求如表1-2所示。 表1-2 硬件要求...
鲲鹏云平台解决方案
部署指南
文档版本 03
发布日期 2020-06-24
华为技术有限公司
版权所有 © 华为技术有限公司 2020。 保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。 商标声明
和其他华为商标均为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 i
目 录
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
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
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
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
5.6 验证 K8s+Docker 部署....................................................................................................................................................... 2695.7 故障排除................................................................................................................................................................................. 271
A 修订记录................................................................................................................................. 274
鲲鹏云平台解决方案部署指南 目 录
文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 vi
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
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
类型 获取方法
网络需求 ● 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
图 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
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
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
步骤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
步骤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
步骤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
须知
集群加入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
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
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
工具使用限制
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
图 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
图 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
注意
当前并不支持多主节点集群部署,环境信息请根据实际配置环境修改,配置信息如表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
2. 在安装界面选择个性化安装。
3. 在特性选择里,选择安装pip,点击Next,点击Install完成python安装。
鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)
文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 17
步骤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
步骤2 运行脚本后根据提示输入命令DEBUG。
步骤3 在命令交互框每次分别输入: PACTRANS,DOCKERINS, PRESET,IMGLOAD,RPMINS,INIT,JOIN,NET,即可完成部署。
鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)
文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 19
表 1-6 命令说明
命令 说明
PACTRANS 将安装包传输至集群内所有主机
鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)
文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 20
命令 说明
DOCKERINS 为集群内所有主机安装Docker
PRESET 为集群内所有主机进行必要的系统设置
IMGLOAD 加载部署K8s集群所需的全部Docker镜像
RPMINS 安装K8s管理组件RPM包
INIT 集群主节点进行初始化
JOIN 计算节点加入集群
NET 应用网络策略
----结束
鲲鹏云平台解决方案部署指南 1 K8S 集群 部署指南(CentOS 7.6)
文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 21
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
表 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
表 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
软件名称 版本
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
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
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
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
安装 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
说明
初次安装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
说明
该章节中的步骤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
并执行 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
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
说明
启动了插件后,可以在浏览器访问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
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
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
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
步骤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
说明
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
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
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
步骤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
并添加以下内容:
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
步骤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
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
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
----结束
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
----结束
创建角色和用户
步骤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
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
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
----结束
验证 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
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
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
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
步骤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
步骤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
:
步骤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
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
[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
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
步骤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
安装 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
安装 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
说明
如果出错则可以使用另外一种方法编译:
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
步骤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
步骤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
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
# 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
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
步骤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
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
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
安装和配置 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
步骤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
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
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
----结束
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
说明
如果有多个对象存储节点则依次设置为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
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
[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
步骤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
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
# 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
[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
说明
此处--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
----结束
创建对象环
在控制节点执行以下操作。
步骤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
----结束
分配环配置文件
在控制节点执行以下操作。
将生成的副本“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
启动服务
在控制节点和存储节点执行以下操作。
步骤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
# 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
步骤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
先决环境配置
在控制节点执行以下操作。
步骤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
----结束
安装配置 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
步骤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
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
说明
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
----结束
安装和配置 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
须知
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
配置 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
完成安装
在计算节点执行以下操作。
步骤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
步骤2 列出所有可计量的metric计量类型。
# gnocchi metric list
步骤3 验证Ceilometer对虚拟机中硬件资源的监控。
# gnocchi measures show ID
鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)
文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 100
----结束
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
步骤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
鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)
文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 103
步骤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
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
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
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
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
步骤2 在dashboard界面进行openstack的服务管理操作。
----结束
鲲鹏云平台解决方案部署指南 2 OpenStack Stein 部署指南(CentOS 7.6)
文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 109
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
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
软件名称
版本 获取方式 安装指导参考
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
节点名称
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
配置时间同步
步骤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
[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
配置 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
步骤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
配置 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
步骤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
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
步骤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
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
----结束
验证 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
步骤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
步骤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
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
裸金属服务提供对物理服务器进行管理和配置的支持。
本文主要介绍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
设备类型 主机名 型号/配置 备注
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
软件环境
混合部署环境使用软件版本如表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
图 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
节点名称 网卡名称/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
步骤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
步骤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
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
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
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
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
说明
初次安装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
步骤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
步骤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
步骤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
步骤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
说明
注意修改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
----结束
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
说明
注意修改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
说明
该步骤介绍域的创建方式,默认的域已经在前面章节创建。
步骤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
步骤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
步骤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
步骤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
说明
这里输入的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
说明
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
重启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
----结束
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
----结束
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
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
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
步骤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
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
注意
若查询版本不为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
● 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
说明
如果出错则可以使用另外一种方法编译:
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
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
说明
这里输入的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
[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
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
说明
此处的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
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
步骤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
说明
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
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
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
步骤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
说明
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
– 对于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
计算节点
在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
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
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
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
--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
● 对于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
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
步骤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
说明
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
说明
● 执行该操作前,请确保已经安装了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
步骤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
步骤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
步骤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
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
步骤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
[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
[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
步骤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
[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
[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
步骤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
命令行 功能描述
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
步骤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
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
步骤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
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
说明
一些发行版默认包含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
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
配置 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
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
----结束
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
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
'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
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
● 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
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
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
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
步骤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
编辑文件“/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
[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
步骤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
步骤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
步骤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
说明
请用户根据实际情况进行修改。此处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
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
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
步骤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
----结束
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
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
利用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
说明
应结合实际网络情况。
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
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
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
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
动,与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
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
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
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
步骤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
说明
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
表 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
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
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
说明
在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
步骤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
----结束
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
步骤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
步骤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
----结束
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
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
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
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
步骤3 查看管理驱动的属性配置信息。
每个管理驱动都有一个管理驱动属性列表,需要在裸金属实例管理节点中的driver_info字段指定该属性,以便管理驱动在管理节点上运行。该列表包含管理驱动使用的硬件接口的属性与属性描述,其中的必填项需在裸金属实例管理节点中指定。
openstack baremetal driver property list ipmi
----结束
鲲鹏云平台解决方案部署指南
4 OpenStack Stein 虚机裸机混合部署指南(CentOS7.6)
文档版本 03 (2020-06-24) 版权所有 © 华为技术有限公司 248
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
此时管理节点的供应状态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
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
说明
其中部署镜像为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
说明
鲲鹏服务器只支持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
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
硬件信息也可通过硬件检查功能进行收集。
步骤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
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
每个裸金属实例管理节点应至少有一个端口的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
说明
管理节点长时间处于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
其中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
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
其中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
所配置的管理节点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
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
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
● 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
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
项目 版本 下载地址
网络需求 - ● 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
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
步骤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
测试步骤 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
备注 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
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
问题三: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
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