OpenStack Wallaby 部署0 选型及整体介绍

👌 2021-05-06 OpenStack Wallaby 部署0 选型及整体介绍

FileInfo Filename - OpenStack Wallaby 部署简介 Version - v1.1.2105(2021/05/06 ~ 2021/05/11) Author - standuke Email - shadowdoker@gmail.com DescriptionKey - Introduction to OpenStack Wallaby deployment

版本修订记录:

v1.0.2105:2021-05-06:建立 OpenStack Wallaby 部署0 选型及整体介绍 文档,修订人:standuke v1.1.2105:2021-05-11:新增 OpenStack 简介、官方概念架构及逻辑架构配图、组件密码规划待下一版本修订,修订人:standuke

[TOC]

简介

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

OpenStack 是一个由 NASA「美国国家航空航天局」和 Rackspace 合作研发并发起的,以 Apache 许可证授权的自由软件和开放源代码项目。 OpenStack 是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack 支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack 通过各种互补的服务 - 即组件,提供了基础设施即服务「IaaS」的解决方案,每个服务提供 API 以进行集成。 OpenStack 是一个旨在为公共及私有云的建设与管理提供软件的开源项目。OpenStack 项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。

与前期版本差异

Wallaby,是 OpenStack 的第 23 个发行版,其对基于角色的访问控制「RBAC」进行了改进,并与其他开源项目「包括 Ceph,Kubernetes 和 Prometheus」集成,以增强用于云原生应用程序的开放基础架构。

  • 基于角色的访问控制策略格式从 JSON 迁移到 YAML,使 OpenStack 与 Kubernetes 更加同步。
  • OpenStack 内置了对开源 Ceph 后端驱动程序 Ceph iSCSI 的支持。除了其他新的 Cinder 存储驱动程序外,旧的驱动程序还增加了对新功能的支持,如恢复到快照和后端服务质量。
  • Kolla 现在已经添加了对 Prometheus V2 的支持。
  • Magnum API 服务已经更新了对 Kubernetes 和 containerd(一个标准的容器运行环境)的支持。
  • 运营商可通过 Neutron 将网络端口中的固定 IP 地址路由到外部世界,而不受 IPv4 地址范围的限制。

参考资料: https://www.techrepublic.com/article/in-new-release-openstack-wallaby-reaches-out-to-kubernetes/

说明

  1. 此次部署 各个组件密码 在本文当中使用环境变量替代,具体使用的密码可见 组件密码规划 部分
  2. 组件部署完毕之后会有一个 里程碑 用于检验组件是否工作正常,组件工作正常后建议在开展之后的部署工作。
  3. 部署采用的是最小化部署 OpenStack,再逐渐扩充组件丰富功能,最终目标是能够实现一套满足生产环境的架构「只是架构,参数等配置优化有时间有心情再写」

部署方案

此次部署 OpenStack 版本为 Wallaby,发行「release」日期为 2021 年 4 月 21 日。 部署方案为,计算与存储分离,计算节点只负责计算,管理节点只负责管理调度、镜像存储,存储将采用 Ceph 作为底层存储平台,为前端计算节点虚拟机提供存储资源池。

部署资源规划

此次部署共使用 3 台物理服务器,对应的服务器角色如下

服务器名称 管理段 IP 地址 服务器配置 泛角色 操作系统
node1.nuo.com 192.168.2.11 64C256G Controller  Ubuntu Server 20.04.2 LTS
node2.nuo.com 192.168.2.12 64C256G Compute Ubuntu Server 20.04.2 LTS
node3.nuo.com 192.168.2.13 64C256G Storage Ubuntu Server 20.04.2 LTS

对于 在虚拟机环境部署 建议 3 台虚拟机「每台 4 核 8G 内存 60G 磁盘」或者 1 台虚拟机部署所有核心组件「配置 4 核 12G 内存 80G 磁盘」

操作系统

对于 Ubuntu LTS 于 Ubuntu 官网可见 Ubuntu 服务器的长期支持版本将包含 OpenStack。同样地,安全更新也将支持至 2025 年 4 月,仅限 64 位平台。 对于 OpenStack 官方文档中使用的 Ubuntu 20.04.2 LTS 作为底层操作系统。 目前 OpenStack 支持如下操作系统平台 可见官网 https://docs.openstack.org/install-guide/preface.html OpenStack Wallaby is available for CentOS Stream 8. OpenStack Ussuri and Victoria are available for both CentOS 8 and RHEL 8. OpenStack Train and earlier are available on both CentOS 7 and RHEL 7. 考虑到 CentOS 后期官方不再维护且支持周期较短,故此次部署不采用 CentOS 操作系统。

如下为 泛角色 内部对应的组件规划「如下组件能保证 OpenStack 能够正常提供基础服务,后期在部署完成后计划逐步添加容器等其他服务组件」

  • Controller
  • OpenStack 环境依赖「MariaDB、etcd、RocketMQ、Memcached」
  • CINDER「后期使用 Ceph 替代」
  • NEUTRON
  • KEYSTONE
  • PLACEMENT
  • GLANCE「后期存储于 Ceph 上」
  • HORIZON
  • Compute
  • NOVA
  • NEUTRON
  • Storage
  • Ceph

如下为官方对于最小化部署 OpenStack 的组件要求

Minimal deployment for Wallaby
At a minimum, you need to install the following services. Install the services in the order specified below:

Identity service – keystone installation for Wallaby
Image service – glance installation for Wallaby
Placement service – placement installation for Wallaby
Compute service – nova installation for Wallaby
Networking service – neutron installation for Wallaby

We advise to also install the following components after you have installed the minimal deployment services:

Dashboard – horizon installation for Wallaby
Block Storage service – cinder installation for Wallaby

磁盘规划「测试环境」

node1「Controller」

root@node1:~# lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0 55.5M  1 loop /snap/core18/1997
loop1                       7:1    0 67.6M  1 loop /snap/lxd/20326
loop2                       7:2    0 69.9M  1 loop /snap/lxd/19188
loop3                       7:3    0 31.1M  1 loop /snap/snapd/10707
loop4                       7:4    0 55.4M  1 loop /snap/core18/1944
loop5                       7:5    0 32.3M  1 loop /snap/snapd/11588
sda                         8:0    0  1.1T  0 disk
├─sda1                      8:1    0  512M  0 part /boot/efi
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0  1.1T  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0  200G  0 lvm  /
sdb                         8:16   0  5.5T  0 disk
root@node1:~# df -Th
Filesystem                        Type      Size  Used Avail Use% Mounted on
udev                              devtmpfs  126G     0  126G   0% /dev
tmpfs                             tmpfs      26G  2.3M   26G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4      196G   11G  176G   6% /
tmpfs                             tmpfs     126G     0  126G   0% /dev/shm
tmpfs                             tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs                             tmpfs     126G     0  126G   0% /sys/fs/cgroup
/dev/sda2                         ext4      976M  200M  710M  22% /boot
/dev/loop0                        squashfs   56M   56M     0 100% /snap/core18/1997
/dev/sda1                         vfat      511M  7.9M  504M   2% /boot/efi
/dev/loop1                        squashfs   68M   68M     0 100% /snap/lxd/20326
/dev/loop2                        squashfs   70M   70M     0 100% /snap/lxd/19188
/dev/loop3                        squashfs   32M   32M     0 100% /snap/snapd/10707
/dev/loop4                        squashfs   56M   56M     0 100% /snap/core18/1944
/dev/loop5                        squashfs   33M   33M     0 100% /snap/snapd/11588
tmpfs                             tmpfs      26G     0   26G   0% /run/user/0
root@node1:~#

node2「Compute」

root@node2:~# lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0 55.5M  1 loop /snap/core18/1997
loop1                       7:1    0 55.4M  1 loop /snap/core18/1944
loop2                       7:2    0 67.6M  1 loop /snap/lxd/20326
loop3                       7:3    0 69.9M  1 loop /snap/lxd/19188
loop4                       7:4    0 32.3M  1 loop /snap/snapd/11588
loop5                       7:5    0 31.1M  1 loop /snap/snapd/10707
sda                         8:0    0  5.5T  0 disk
├─sda1                      8:1    0  512M  0 part /boot/efi
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0  5.5T  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0  5.5T  0 lvm  /
root@node2:~# df -Th
Filesystem                        Type      Size  Used Avail Use% Mounted on
udev                              devtmpfs  126G     0  126G   0% /dev
tmpfs                             tmpfs      26G  2.3M   26G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4      5.5T   11G  5.2T   1% /
tmpfs                             tmpfs     126G     0  126G   0% /dev/shm
tmpfs                             tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs                             tmpfs     126G     0  126G   0% /sys/fs/cgroup
/dev/sda2                         ext4      976M  200M  710M  22% /boot
/dev/loop0                        squashfs   56M   56M     0 100% /snap/core18/1997
/dev/sda1                         vfat      511M  7.9M  504M   2% /boot/efi
/dev/loop1                        squashfs   56M   56M     0 100% /snap/core18/1944
/dev/loop2                        squashfs   68M   68M     0 100% /snap/lxd/20326
/dev/loop3                        squashfs   70M   70M     0 100% /snap/lxd/19188
/dev/loop5                        squashfs   32M   32M     0 100% /snap/snapd/10707
/dev/loop4                        squashfs   33M   33M     0 100% /snap/snapd/11588
tmpfs                             tmpfs      26G     0   26G   0% /run/user/0
root@node2:~#

node3「Storage」

root@node3:~# lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0 55.4M  1 loop /snap/core18/1944
loop1                       7:1    0 55.5M  1 loop /snap/core18/1997
loop2                       7:2    0 69.9M  1 loop /snap/lxd/19188
loop3                       7:3    0 31.1M  1 loop /snap/snapd/10707
loop4                       7:4    0 67.6M  1 loop /snap/lxd/20326
loop5                       7:5    0 32.3M  1 loop /snap/snapd/11588
sda                         8:0    0  1.1T  0 disk
├─sda1                      8:1    0  512M  0 part /boot/efi
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0  1.1T  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0  1.1T  0 lvm  /
sdb                         8:16   0  1.1T  0 disk
sdc                         8:32   0  1.1T  0 disk
sdd                         8:48   0  1.1T  0 disk
root@node3:~# df -Th
Filesystem                        Type      Size  Used Avail Use% Mounted on
udev                              devtmpfs  126G     0  126G   0% /dev
tmpfs                             tmpfs      26G  2.6M   26G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4      1.1T   11G  1.1T   2% /
tmpfs                             tmpfs     126G     0  126G   0% /dev/shm
tmpfs                             tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs                             tmpfs     126G     0  126G   0% /sys/fs/cgroup
/dev/sda2                         ext4      976M  200M  710M  22% /boot
/dev/sda1                         vfat      511M  7.9M  504M   2% /boot/efi
/dev/loop0                        squashfs   56M   56M     0 100% /snap/core18/1944
/dev/loop1                        squashfs   56M   56M     0 100% /snap/core18/1997
/dev/loop2                        squashfs   70M   70M     0 100% /snap/lxd/19188
/dev/loop3                        squashfs   32M   32M     0 100% /snap/snapd/10707
/dev/loop5                        squashfs   33M   33M     0 100% /snap/snapd/11588
/dev/loop4                        squashfs   68M   68M     0 100% /snap/lxd/20326
tmpfs                             tmpfs      26G     0   26G   0% /run/user/0
root@node3:~#

部署网络规划

网段规划

此次采用官方「Networking Option 2: Self-service networks」自主管理网络

  • 管理段 192.168.2.0/24

即相对于云服务商的内网环境,此次环境管理段与公网相通,用于部署安装调试,同时管理段与服务器 BMC 相通,便于调试

  • 业务段 192.168.10.0/24

即相对于云服务商的外网环境,用户客户访问云服务

网络架构

此次部署采用「Self-service networks」网络架构

  • 下图来自官方对于 Provider networks 的组件部署架构

2021-05-11_14-29-37_network1-services

  • 下图来自官方对于 Self-service networks 的组件部署架构

可见对于 Option 1 来说 Self-service networks 网络架构多了 L3 Agent 也就是多了,三层网络的路由功能,通过路由协议将虚拟网络与外界打通。

2021-05-11_14-29-43_network2-services

组件密码规划

组件名称 用户名 密码 环境变量名称
MariaDB「MySQL」 root 1212 MARIADB_PASS
RabbitMQ openstack OPENSTACK RABBIT_PASS
keystone keystone KEYSTONE KEYSTONE_DBPASS
glance glance GLANCE GLANCE_DBPASS
keystone keystone KEYSTONE KEYSTONE_DBPASS
keystone keystone KEYSTONE KEYSTONE_DBPASS
keystone keystone KEYSTONE KEYSTONE_DBPASS
keystone keystone KEYSTONE KEYSTONE_DBPASS
keystone keystone KEYSTONE KEYSTONE_DBPASS

附录

架构

  • 如下为 OpenStack 各个组件之间的关系「概念架构」

https://docs.openstack.org/install-guide/get-started-conceptual-architecture.html

2021-05-11_14-30-00_openstack_kilo_conceptual_arch

  • 如下为一种云的组织架构图「逻辑架构」

https://docs.openstack.org/install-guide/get-started-logical-architecture.html

2021-05-11_14-29-50_openstack-arch-kilo-logical-v1

组件介绍

==OpenStack Services「OpenStack 服务」==

OpenStack 部署包含许多组件,这些组件提供用于访问基础结构资源的 API。如下列出了可以部署以向云最终用户提供此类资源的各种服务。

Compute「计算资源」

NOVA - Compute Service「计算服务」 ZUN - Containers Service「容器服务」

Hardware Lifecycle「硬件生命周期」

IRONIC - Bare Metal Provisioning Service「裸机配置服务」 CYBORG - Lifecycle management of accelerators「加速器的生命周期管理」

Storage「存储」

SWIFT - Object store「对象存储」 CINDER - Block Storage「块存储」 MANILA - Shared filesystems「共享文件系统」

Networking「网络」

NEUTRON - Networking「网络」 OCTAVIA - Load balancer「负载均衡」 DESIGNATE - DNS service「DNS 服务」

Shared Services「共享服务」

KEYSTONE - Identity service「身份认证服务」 PLACEMENT - Placement service「服务安置服务」 GLANCE - Image service「镜像服务」 BARBICAN - Key management「密钥管理服务」

Orchestration

HEAT - Orchestration「编排」 SENLIN - Clustering service「集群服务」 MISTRAL - Workflow service「工作流服务」 ZAQAR - Messaging Service「消息服务」 BLAZAR - Resource reservation service「资源预约服务」 AODH - Alarming Service「报警服务」

Workload Provisioning

MAGNUM - Container Orchestration Engine Provisioning「容器编排配置引擎」 SAHARA - Big Data Processing Framework Provisioning「大数据处理框架配置」 TROVE - Database as a Service「数据库即服务」

Application Lifecycle

MASAKARI - Instances High Availability Service「实例高可用性服务」 MURANO - Application Catalog「应用目录」 SOLUM - Software Development Lifecycle Automation「软件开发生命周期自动化」 FREEZER - Backup, Restore, and Disaster Recovery「备份,还原和灾难恢复」

API Proxies

EC2API - EC2 API proxy「EC2 API代理」

Web Frontend

HORIZON - Dashboard「仪表盘」

==Operations tooling「运维工具」==

这些服务提供主要针对云管理员和部署者的API,以帮助进行云操作。

Monitoring services「监控服务」

CEILOMETER - Metering & Data Collection Service「计量和数据收集服务」 PANKO - Event, Metadata Indexing Service「事件,元数据索引服务」 MONASCA - Monitoring「监控」

Resource optimization「资源优化」

WATCHER - Optimization Service「优化服务」 VITRAGE - Root Cause Analysis service「根本原因分析服务」

Billing / Business Logic「计费 / 业务逻辑」

ADJUTANT - Operations processes automation「运营流程自动化」 CLOUDKITTY - Billing and chargebacks「帐单和退款」

Testing / Benchmark

RALLY - Benchmarking tool「跑分工具标杆管理工具」 TEMPEST - The OpenStack Integration Test Suite「OpenStack集成测试套件」 PATROLE - The OpenStack RBAC Integration Test Suite「OpenStack RBAC集成测试套件」

==Add-Ons to Services「附加服务」==

该软件可以作为其他 OpenStack 服务的附件或插件运行。

Swift 附加组件

STOR - Computable object storage「可计算对象存储」

==Integration enablers「其他系统整合」==

本节中的软件有助于将 OpenStack 组件集成到相邻的开放基础架构堆栈中。

Containers「容器」

KURYR - OpenStack Networking integration for containers「容器的OpenStack网络集成」

NFV

TACKER - NFV Orchestration「NFV编排」