Ubuntu 22.04上使用DevStack快速部署OpenStack开发测试环境

发布时间:2026/8/21 0:59:49

Ubuntu 22.04上使用DevStack快速部署OpenStack开发测试环境
在国内开发或测试环境中快速搭建一个可用的 OpenStack 平台是很多学习者和开发者面临的第一道门槛。手动部署 OpenStack 组件复杂且耗时而 DevStack 作为一个自动化部署脚本工具能够极大地简化这一过程。它通过一系列 Shell 脚本将 OpenStack 的核心服务快速部署到一台机器上非常适合用于开发、测试和概念验证。本文将带你在一台 Ubuntu 22.04 LTS 系统上从零开始完成 DevStack 的配置和 OpenStack 的快速部署并解释每一步背后的原理和常见问题的排查方法。本文的目标读者是具备 Linux 基础操作知识希望快速获得一个 OpenStack 实验环境的开发者或运维人员。通过本文你将理解 DevStack 的工作机制掌握从系统准备、网络配置、脚本修改到服务验证的全流程并能处理部署过程中遇到的大部分典型错误。1. 理解 DevStack 的核心机制与准备工作DevStack 并非一个生产级的部署工具它的设计目标是“快速”和“可重复”。它通过 Git 拉取 OpenStack 各个项目的最新代码或指定分支然后运行一系列安装和配置脚本在本地创建一个 All-in-One单节点的 OpenStack 环境。这意味着所有服务如 Nova、Neutron、Glance、Keystone 等都将运行在同一台主机上。在开始之前必须明确几个关键前提这能避免后续很多问题纯净的系统强烈建议使用新安装的 Ubuntu 22.04 LTS 系统。已有复杂环境或旧版本残留可能导致依赖冲突。充足的资源单节点部署对硬件有一定要求。建议至少提供 4 核 CPU、8 GB 内存和 50 GB 磁盘空间。虚拟机资源不足是部署失败的主要原因之一。稳定的网络部署过程中需要从 GitHub、PyPI 等源下载大量软件包和代码网络中断或缓慢会导致脚本执行超时失败。正确的身份全程需要使用具有sudo权限的非 root 用户例如ubuntu或stack进行操作DevStack 脚本会检查此点。1.1 基础系统环境准备首先确保系统是最新的并安装一些基础工具。# 更新系统包列表和已安装的包 sudo apt update sudo apt upgrade -y # 安装 DevStack 所需的基础工具如 Git、Python 环境等 sudo apt install -y git python3-pip接下来创建一个专门用于运行 DevStack 的用户。虽然可以使用现有用户但创建一个独立的stack用户是一种最佳实践可以更好地隔离环境。# 创建 stack 用户并设置密码 sudo useradd -s /bin/bash -d /opt/stack -m stack echo stack ALL(ALL) NOPASSWD: ALL | sudo tee /etc/sudoers.d/stack切换到stack用户后续所有操作都将在此用户下进行。sudo su - stack1.2 配置系统与网络环境DevStack 会配置复杂的网络包括桥接设备和 IP 地址。为了避免与现有网络管理服务冲突我们需要先禁用 Ubuntu 自带的网络管理器对于服务器版通常未安装可跳过。更重要的是确保主机名设置正确。# 设置主机名例如设置为 ‘devstack’ sudo hostnamectl set-hostname devstack # 编辑 /etc/hosts确保 127.0.1.1 或 127.0.0.1 指向正确的主机名 echo 127.0.0.1 devstack | sudo tee -a /etc/hosts对于虚拟机环境如 VMware、VirtualBox需要确保虚拟机的网络适配器设置为“桥接模式”或“NAT 模式”并且主机可以访问互联网。在物理机上则需保证网络连通。2. 获取与配置 DevStack环境准备就绪后就可以获取 DevStack 脚本并进行关键配置了。2.1 克隆 DevStack 仓库在stack用户的家目录下克隆官方仓库。建议使用稳定分支如stable/zed对应 OpenStack Zed 版本以避免主分支可能存在的临时问题。# 进入家目录 cd ~ # 克隆 stable/zed 分支 git clone https://opendev.org/openstack/devstack -b stable/zed cd devstack2.2 创建本地配置文件local.conflocal.conf是 DevStack 的核心配置文件它允许我们自定义各种参数如密码、服务、网络配置等。在devstack目录下创建该文件。# 使用文本编辑器创建并编辑 local.conf nano local.conf以下是一个最小化但功能完整的local.conf配置示例它定义了管理员密码、启用基础服务并配置了简单的 FlatDHCP 网络。将此内容复制到文件中[[local|localrc]] # 通用配置 ADMIN_PASSWORDsecretadmin DATABASE_PASSWORD$ADMIN_PASSWORD RABBIT_PASSWORD$ADMIN_PASSWORD SERVICE_PASSWORD$ADMIN_PASSWORD # 启用基础服务 enable_plugin heat https://opendev.org/openstack/heat stable/zed enable_plugin magnum https://opendev.org/openstack/magnum stable/zed # 网络配置 - 使用简单的 FlatDHCP 模式更易成功 FLOATING_RANGE192.168.100.224/27 FIXED_RANGE10.0.0.0/24 FIXED_NETWORK_SIZE256 FLAT_INTERFACEeth0 PUBLIC_INTERFACEeth0 # 禁用安全组仅用于测试简化网络访问 disable_service tempest关键参数解释ADMIN_PASSWORDOpenStack 管理员密码其他服务密码默认与其相同。FLOATING_RANGE浮动 IP 池需要是一个与主机物理网络eth0所在网络同网段但未被占用的 IP 段。例如主机 IP 是192.168.100.10那么可以设置一个该子网内的小段。FLAT_INTERFACE指定用于扁平网络的物理网卡名称使用ip addr命令查看你的网卡名可能是ens33,enp0s3等。disable_service tempest禁用集成测试服务 Tempest以加快部署速度。注意FLOATING_RANGE的配置是初期失败的高发区。如果主机使用 DHCP 获取 IP且你无法控制所在网段可以考虑先使用PUBLIC_INTERFACEeth0但不配置FLOATING_RANGE让 DevStack 仅创建私有网络后续再处理外部网络。3. 执行部署与监控过程配置完成后就可以运行部署脚本了。这个过程会持续较长时间30分钟到数小时取决于网络和机器性能。3.1 启动部署脚本在devstack目录下直接运行stack.sh脚本。./stack.sh脚本会开始执行以下主要阶段可以在终端输出中观察到系统依赖安装安装所需的系统包如数据库、消息队列。项目代码克隆从 Git 拉取各个 OpenStack 服务的代码。Python 虚拟环境创建与依赖安装为每个服务创建独立的虚拟环境并安装 Python 包。数据库初始化创建服务所需的数据库和表结构。服务配置与启动生成配置文件并以后台进程形式启动所有 OpenStack 服务。3.2 监控日志与处理交互部署过程是自动的但需要关注以下几点网络交互脚本可能会提示输入密码或确认通常直接按回车即可。错误暂停如果遇到错误脚本会暂停并高亮显示错误信息。此时需要根据错误日志进行排查见第5节。日志文件所有服务的日志都位于/opt/stack/logs/目录下。如果脚本运行失败查看stack.sh.log或对应服务的.log文件是首要的排查手段。一个成功的部署会在最后输出类似以下的信息... This is your host IP address: 192.168.100.10 This is your host IPv6 address: ::1 Horizon is now available at http://192.168.100.10/dashboard Keystone is serving at http://192.168.100.10/identity/ The default users are: admin and demo The password: secretadmin ...记下输出的 HorizonWeb 控制台地址和管理员密码。4. 验证部署结果与基本操作部署脚本成功运行完毕并不代表所有服务都健康。需要进行基础验证。4.1 加载环境变量并检查服务状态DevStack 会创建一个管理员权限的环境变量文件openrc。加载它后才能使用命令行工具。# 加载管理员环境变量 source ~/devstack/openrc admin admin检查核心服务列表是否都处于up状态openstack compute service list openstack network agent list openstack volume service list4.2 访问 Dashboard 并创建第一个实例打开浏览器访问http://你的主机IP/dashboard。使用用户名admin和密码secretadmin即local.conf中设置的ADMIN_PASSWORD登录。进入“管理员” - “系统” - “计算服务”查看所有 Nova 服务是否正常。创建测试实例镜像进入“项目” - “计算” - “镜像”可以上传一个 Cirros一个微型 Linux 测试镜像的 QCOW2 文件或使用 DevStack 可能已预下载的cirros镜像。网络确保在“网络” - “网络拓扑”中存在一个网络且路由器连接到了外部网络如果配置了FLOATING_RANGE。安全组添加一条规则允许 ICMP 和 SSH 入站流量。启动实例选择镜像、网络、密钥对需提前创建然后启动实例。4.3 通过命令行管理资源除了 Dashboard熟悉命令行操作至关重要。以下是一些基本命令# 查看镜像列表 openstack image list # 查看网络列表 openstack network list # 查看创建的实例 openstack server list # 为实例分配浮动 IP openstack floating ip create public openstack server add floating ip 实例ID 浮动IP地址5. 常见问题排查与解决DevStack 部署失败很常见关键在于学会查看日志和定位问题。5.1 部署失败通用排查流程当./stack.sh运行失败时按以下顺序排查检查最直接的错误信息脚本停止时屏幕上最后几行通常包含错误摘要。查看主日志文件tail -f /opt/stack/logs/stack.sh.log查看实时日志或less /opt/stack/logs/stack.sh.log查看完整日志搜索ERROR、Failed关键字。检查特定服务日志如果错误指向某个服务如nova-api则查看/opt/stack/logs/nova-api.log。检查网络连通性使用ping 8.8.8.8和curl -I https://github.com测试外网连通性。国内环境有时需要配置 Git 和 Pip 代理。检查资源是否充足使用free -h查看内存df -h查看磁盘空间。内存不足会导致编译或服务启动失败。5.2 典型错误与解决方案下表列出了几个最常见的错误场景及处理思路问题现象可能原因检查与解决方案git clone超时或失败网络连接问题特别是访问 GitHub。1. 配置 Git HTTP/HTTPS 代理git config --global http.proxy your_proxy2. 或使用国内镜像源需修改 DevStack 脚本中的仓库地址较复杂。pip install失败提示包找不到或版本冲突Python 包索引访问慢或依赖解析问题。1. 配置 PIP 源在stack用户下创建~/.pip/pip.conf指向国内镜像如清华、阿里云。2. 尝试重启./stack.sh有时重试即可。服务启动失败日志中出现Address already in use端口被占用。可能是之前未清理的旧服务。运行./unstack.sh和./clean.sh进行彻底清理然后重新部署。实例启动失败状态为ERROR日志提示No valid host was found计算节点本机资源不足或调度失败。1. 检查内存和磁盘是否足够。2. 检查 Nova 计算服务状态openstack compute service list。3. 查看/opt/stack/logs/nova-scheduler.log和nova-compute.log获取详细原因。无法访问 Horizon 控制台防火墙阻止了 80 端口或apache2服务未运行。1. 检查防火墙sudo ufw status如需则放行 80 端口sudo ufw allow 80/tcp。2. 检查 Apache 服务sudo systemctl status apache2。网络创建失败Neutron 代理异常网络配置错误特别是FLAT_INTERFACE指定错误。1. 确认FLAT_INTERFACE的网卡名是否正确 (ip addr)。2. 查看/opt/stack/logs/neutron-*.log获取具体错误。3. 考虑使用更简单的local.conf先禁用复杂网络功能。5.3 清理与重装如果环境混乱需要推倒重来务必使用 DevStack 自带的清理脚本# 在 devstack 目录下执行 ./unstack.sh # 停止所有服务 ./clean.sh # 删除所有编译安装的程序、配置和数据危险执行clean.sh后相当于回到了刚克隆完仓库的状态可以修改local.conf后再次运行./stack.sh。6. 生产环境考量与最佳实践再次强调DevStack 仅适用于开发、测试和学习。如果你需要考虑更接近生产的环境以下是一些重要的扩展方向和最佳实践多节点部署生产环境需要将控制节点、计算节点、网络节点、存储节点分离。可以考虑使用 Kolla-Ansible、OpenStack-Ansible 或 Charms 等专业的部署工具。高可用对关键服务如 API、数据库、消息队列实施集群化部署避免单点故障。网络规划生产环境需要精心规划 Provider Networks、Overlay NetworksVXLAN/GRE、安全组策略、负载均衡器等。存储后端DevStack 通常使用本地存储或简单的 LVM。生产环境需要集成 Ceph、SAN/NAS 等共享存储以实现实时迁移和卷服务高可用。监控与日志集成 Prometheus、Grafana 进行监控使用 ELK 或 Loki 栈集中管理日志。配置管理所有对 OpenStack 的配置变更都应通过代码如 Ansible Playbook进行管理并纳入版本控制。定期备份备份数据库尤其是 Keystone、Nova、Neutron 的库和关键配置文件。对于使用 DevStack 的学习环境一个核心建议是将部署成功的整个虚拟机或物理机状态制作一个快照或模板。这样可以在实验环境被破坏后快速恢复到已知的健康状态节省大量重复部署的时间。通过本文的步骤你应该已经成功搭建起一个基础的 OpenStack 环境。接下来可以深入探索具体服务的使用如通过 Heat 进行编排通过 Magnum 管理容器集群或者深入研究 Neutron 的网络模型。理解这个单节点环境的构成是迈向理解复杂分布式云平台架构的第一步。

相关新闻

Linux 内核 mana 驱动 TOCTOU 双取高危漏洞 CVE‑2026‑64034 技术解析

Linux 内核 mana 驱动 TOCTOU 双取高危漏洞 CVE‑2026‑64034 技术解析

2026/8/21 0:59:49

近期披露的 CVE‑2026‑64034 为 Linux 内核 net 子系统 mana 网卡驱动高危漏洞,CVSS 评分为 9.3。该漏洞属于 TOCTOU(检查时间与使用时间)双取问题,驱动对 DMA 共享内存中的字段执行两次读取操作,两次读取之间数据可被…

救命!论文格式不用熬夜改|OKBIYE智能排版一键搞定全校规范✅

救命!论文格式不用熬夜改|OKBIYE智能排版一键搞定全校规范✅

2026/8/21 0:59:49

写论文最难熬的从来不是写内容,是无休止的格式修改! 导师每次返稿不看内容,只挑格式毛病:字体不对、行距错乱、目录不跳转、页眉奇偶页不一、参考文献格式翻车、图表排版歪歪扭扭……很多人论文内容完美,却栽在细节格…

AI论文软件百科全书:从语法纠错到查重降AI,这一篇承包你的全部痛点

AI论文软件百科全书:从语法纠错到查重降AI,这一篇承包你的全部痛点

2026/8/21 0:59:49

论文写完了,但总觉得哪里不对劲?别急,AI 工具能帮你把初稿打磨成能拿得出手的终稿。每年毕业季,后台总能看到这样的提问:“论文写完怎么改才能过审?”作为一个曾经被查重率 50% 吓到怀疑人生的过来人&#…

基于混合动态事件触发的微电网弹性二次控制Simulink仿真实践

基于混合动态事件触发的微电网弹性二次控制Simulink仿真实践

2026/8/21 1:59:51

如果你正在研究微电网的二次控制,特别是如何在通信受限甚至遭受网络攻击时保持系统稳定,那么这篇文章正是为你准备的。传统的集中式控制方案在通信延迟、带宽限制和网络安全威胁面前显得越来越脆弱。一个孤岛微电网,一旦通信链路被干扰或攻击…

Java技术栈面试核心解析与实战指南

Java技术栈面试核心解析与实战指南

2026/8/21 1:59:51

1. 项目概述:Java技术栈面试全景解析互联网大厂Java技术面试从来不是简单的知识点问答,而是一场对候选人技术深度与系统思维的全面检验。我经历过7次阿里P7级别的技术面试(3次作为候选人,4次作为面试官),发…

协作机器人、四足机器人与人形机器人:核心技术栈对比与2026年产业落地选型指南

协作机器人、四足机器人与人形机器人:核心技术栈对比与2026年产业落地选型指南

2026/8/21 1:59:51

在实际机器人技术从实验室走向工厂、仓库、家庭的过程中,我们常常会困惑:为什么有的场景用机械臂,有的用“机器狗”,而有的又在大力研发人形机器人?这背后并非简单的技术堆砌,而是由任务需求、环境约束和成…

Windows挂载NFS不再头疼:ms-nfs41-client从编译到上线的完整通关手册

Windows挂载NFS不再头疼:ms-nfs41-client从编译到上线的完整通关手册

2026/8/21 1:59:51

Windows挂载NFS不再头疼:ms-nfs41-client从编译到上线的完整通关手册 【免费下载链接】ms-nfs41-client NFSv4.1 Client for Windows 项目地址: https://gitcode.com/gh_mirrors/ms/ms-nfs41-client 想象这样一个早晨:公司的Linux存储服务器上躺着…

Montserrat字体使用手记:从布宜诺斯艾利斯街头招牌走出的免费几何无衬线字体

Montserrat字体使用手记:从布宜诺斯艾利斯街头招牌走出的免费几何无衬线字体

2026/8/21 1:59:51

Montserrat字体使用手记:从布宜诺斯艾利斯街头招牌走出的免费几何无衬线字体 【免费下载链接】Montserrat 项目地址: https://gitcode.com/gh_mirrors/mo/Montserrat 如果你常在设计社区闲逛,大概率见过这个名字反复出现:Montserrat字…

免费三步上手《命运2》单人模式:Destiny 2 Solo Enabler 使用指南

免费三步上手《命运2》单人模式:Destiny 2 Solo Enabler 使用指南

2026/8/21 1:49:51

免费三步上手《命运2》单人模式:Destiny 2 Solo Enabler 使用指南 【免费下载链接】Destiny-2-Solo-Enabler Repo containing the C# and XAML code for the D2SE program. Included is also the dependency for the program, and image asset. 项目地址: https:/…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/19 3:36:59

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/20 21:07:35

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/19 8:02:16

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

091、主从同步控制策略

091、主从同步控制策略

2026/8/21 0:09:47

091、主从同步控制策略:从一次多轴抖动事故说起 去年调试一台四轴龙门平台,Z轴和两个X轴做主从同步。电机选的是台达A2系列,驱动器工作在位置模式,主站发脉冲指令,从站硬线跟随。调试时发现一个诡异现象:当主站以500rpm匀速运行时,从站电流波形每隔几秒会出现一次毛刺,…

向量检索实验失败后该查什么

向量检索实验失败后该查什么

2026/8/21 0:09:47

向量检索实验失败后该查什么 这篇要解决什么 向量检索实验失败后该查什么讨论的是一个可复查的工程问题。向量检索实验失败后该查什么不拿未经记录的事故、跑分或成本当作论据;判断需要回到当前项目的输入、版本和运行条件。 从边界开始 处理向量检索实验失败后该查…

提示词发布过程中的止损边界

提示词发布过程中的止损边界

2026/8/21 0:09:47

提示词发布过程中的止损边界 这篇要解决什么 提示词发布过程中的止损边界讨论的是一个可复查的工程问题。提示词发布过程中的止损边界不拿未经记录的事故、跑分或成本当作论据;判断需要回到当前项目的输入、版本和运行条件。 从边界开始 处理提示词发布过程中的止损…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/18 12:20:24

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…