
在本实践中,将学习如何在 Ubuntu 24.04 上使用 DevStack 部署 OpenStack。部署 OpenStack 有多种不同的方法/工具,例如 Ansible-kolla、openstack-ansible 等。DevStack 是一套脚本和实用程序,用于快速从 git 源代码树部署 OpenStack 云。
云原生时代必备技能:OpenStack作为开源云计算平台的标杆,已成为IT从业者的核心竞争力。但部署过程常让新手望而却步——今天就用DevStack带你一键通关,避开90%的部署深坑!
OpenStack部署通常需要复杂的集群配置,但DevStack通过自动化脚本实现了单机快速部署:
💡 血泪教训:本实践融合多次翻车经验,特别针对网络阻塞、权限陷阱等高频雷区提供终极解决方案!
部署前的准备工作直接决定成功率,这些关键步骤背后都有深刻教训。
组件 | 最低要求 | 推荐配置 | 为什么重要 |
|---|---|---|---|
CPU | 4核 | 8核 | Nova计算服务需要多核支持 |
内存 | 8GB | 16GB | 多个服务同时运行易OOM |
磁盘 | 50GB HDD | 100GB SSD | Glance镜像存储需要大空间 |

网络加速(解决99%卡顿)
# Git代理(IP更换为自己的实际地址)
git config --global http.https://github.com.proxy socks5://127.0.0.1:7890
# Wget代理(IP更换为自己的实际地址)
echo'https_proxy=http://127.0.0.1:7890' | sudo tee -a /etc/wgetrc
echo'http_proxy=http://127.0.0.1:7890' | sudo tee -a /etc/wgetrc
# Pip国内源(加速Python依赖下载)
mkdir ~/.pip
cat << EOF > ~/.pip/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
EOF
为什么关键:DevStack需要从GitHub下载数百个组件,国内直连常因超时失败。代理设置可提速10倍!如果 http/https 代理无效,请使用 socks5 。

专属用户(避免权限灾难)
sudo useradd -s /bin/bash -d /opt/stack -m stack
sudo chmod +x /opt/stack # 开放目录执行权限
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack

经验之谈:用root直接运行会导致服务启动权限混乱,专用用户能隔离环境,卸载时也能一键清除
国内源加速
sudo sed -i 's|https://archive.ubuntu.com|https://mirrors.pku.edu.cn|g' /etc/apt/sources.list.d/ubuntu.sources
sudo apt update && sudo apt upgrade -y

小技巧:更新后执行apt autoremove清理旧内核,释放磁盘空间
每个步骤背后的原理和优化技巧:
sudo -u stack -i # 进入专属用户
为什么重要:保持环境纯净,避免sudo权限污染。使用echo $USER确认当前用户为stack。
[[local|localrc]]
# ====== 密码安全规范 ======
ADMIN_PASSWORD=OpenStack2025! # 这里修改为你自己的密码,避免使用@等需要转译的特殊字符
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
# ====== 网络核心配置 ======
HOST_IP=$(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')

高级技巧:
ip命令自动获取本机IP,避免手动输入错误SERVICE_TIMEOUT=300可解决部分服务启动超时问题DOWNLOAD_DEFAULT_IMAGES=False跳过Cirros镜像下载(脚本部署时,默认情况下需要通过 wget 从 github下载此文件,后续可手动添加)git clone https://opendev.org/openstack/devstack
cd devstack
nohup ./stack.sh > deploy.log 2>&1 & # 后台运行
tail -f deploy.log # 实时监控日志
监控要点:
Installing Python packages表示进入依赖安装阶段Running stack.sh:phase:init标志核心服务开始部署Horizon dashboard enabled即近成功当终端出现以下信息即告成功:
Horizon is now available at http://<你的IP>/dashboard
Keystone is serving at http://<你的IP>/identity/

首次登录必做:

症状 | 根本原因 | 急救方案 | 预防措施 |
|---|---|---|---|
RabbitMQ启动失败 | 内存不足/端口冲突 | sudo systemctl restart rabbitmq-server | 分配≥8GB内存 |
8080端口被占用 | 已有服务监听 | sudo ss -tulnp | grep 8080 → 杀进程 |
磁盘不足 | 镜像缓存膨胀 | 手动清理/opt/stack/.cache | 预留100GB空间 |
登录后白屏 | HOST_IP配置错误 | 核对ip a显示的实际IP | 使用动态获取脚本 |
卡在cirros镜像下载 | GitHub连接不稳定 | 提前下载放至/tmp目录 | 配置wget代理 |
Pip安装超时 | PyPI源访问慢 | 检查~/.pip/pip.conf格式 | 使用阿里云镜像源 |
💪 黄金建议:
./unstack.sh && ./clean.sh彻底清理grep "ERROR" openstack.log快速定位错误free -h && df -h确认资源状态成功部署只是OpenStack之旅的开始,接下来建议:
资源监控:安装ceilometer组件实现资源计量
# 在local.conf中添加
enable_service ceilometer
网络进阶:尝试创建VXLAN网络隔离租户
存储扩展:集成Ceph分布式存储系统
高可用:研究Ansible-Kolla多节点部署
最后忠告:
OpenStack部署是"99%的准备+1%的执行",本文解决的网络、权限、资源配置问题已排除90%的失败风险。当看到Horizon登录界面时,你已战胜大多数挑战者!
云计算的星辰大海已在你眼前展开——登录Dashboard开始创建第一个云主机吧!