OpenStack 安装部署:新手避坑 + 高效实操指南
时间:2025-10-11 14:05:01 栏目:站长资讯OpenStack 安装部署:新手避坑 + 高效实操指南
刚接触 OpenStack 时,你是不是也遇到过这些麻烦?跟着网上教程一步步走,到某一步突然报错却找不到原因;好不容易装完,节点之间连不通,日志翻半天也没头绪;甚至有的教程本身步骤就有问题,浪费大半天时间还得推倒重来。
作为从运维转产品的人,我太懂这种感受了。我们团队 2023 年帮一家传统企业搭建私有云时,最初用手动部署的方式,6 个人折腾了 3 天还没搞定,后来优化了部署方案,2 个人 1 天就完成了基础环境搭建,还顺利跑通了虚拟机实例创建流程。
其实 OpenStack 安装部署难,核心是因为它涉及组件多、依赖关系复杂,稍有疏漏就会出问题。但只要选对工具、理清步骤,新手也能高效完成部署。接下来就从部署工具选择、详细操作步骤、常见坑点解决这几个方面,给大家讲透 OpenStack 安装部署这件事。
一、选对部署工具:少走 80% 的弯路
为什么要先选部署工具?因为 OpenStack 组件超过 10 个,手动部署需要配置大量文件、处理复杂依赖,对新手极不友好,出错率高还难排查。而合适的部署工具能自动化完成大部分操作,大幅降低难度。
目前主流的 OpenStack 部署工具有两种:DevStack 和 Kolla-Ansible。很多新人会纠结选哪个,其实两者适用场景完全不同,我做了个对比表格,你一看就清楚:
对比维度 | DevStack | Kolla-Ansible |
适用场景 | 开发测试、学习研究 | 生产环境、企业级部署 |
部署速度 | 快(1-2 小时) | 较慢(3-5 小时) |
稳定性 | 较低(适合临时环境) | 高(支持高可用) |
操作复杂度 | 简单(单命令启动) | 稍复杂(需配置 inventory) |
后期维护 | 困难(不适合长期使用) | 方便(支持滚动升级) |
我们团队在 2023 年那个企业项目里,最初想图快用了 DevStack,结果部署完的环境跑了没几天就出现组件崩溃的情况,后来换成 Kolla-Ansible 重新部署,不仅稳定性大幅提升,后续还顺利完成了 3 个节点的扩容。根据 OpenStack 官方 2024 年发布的用户调查报告,在生产环境中,Kolla-Ansible 的使用率已经超过了 65%,成为企业的首选部署工具。
不过值得注意的是,如果你只是想快速体验 OpenStack 的功能,比如测试某个组件的特性,DevStack 还是很合适的;但如果是要搭建长期使用的环境,哪怕是小型企业的私有云,也建议直接用 Kolla-Ansible,避免后期反复踩坑。
二、Kolla-Ansible 部署步骤:照着做就能成
用 Kolla-Ansible 部署 OpenStack,核心是做好环境准备、配置文件调整、镜像拉取、部署执行和功能验证这五步。每一步都有明确的操作要点,我会把具体怎么做、需要注意什么都讲清楚,你照着做就能少走很多弯路。
步骤 1:环境准备(最容易被忽略的关键一步)
首先得准备服务器,至少需要 2 台:1 台控制节点(Control Node),1 台计算节点(Compute Node)。硬件配置不能太低,控制节点至少要 4 核 CPU、8G 内存、100G 硬盘;计算节点如果要跑虚拟机,建议 8 核 CPU、16G 内存、200G 硬盘,硬盘最好用 SSD,能提升虚拟机存储性能。
操作系统推荐用 Ubuntu 22.04 LTS,因为 Kolla-Ansible 对这个版本的兼容性最好,遇到问题也更容易找到解决方案。接着要做这几个操作:
1. 给所有节点设置静态 IP,比如控制节点设为 192.168.1.10,计算节点设为 192.168.1.11,避免 IP 变动导致节点失联;
2. 配置主机名解析,在每台节点的 /etc/hosts 文件里,添加所有节点的 IP 和主机名映射,比如 “192.168.1.10 controller”“192.168.1.11 compute1”;
3. 关闭防火墙和 SELinux,Ubuntu 用 “sudo ufw disable” 关闭防火墙,CentOS 则用 “sudo systemctl stop firewalld”;
4. 配置免密登录,在控制节点上执行 “ssh-keygen” 生成密钥,然后用 “ssh-copy-id 用户名 @计算节点 IP” 把密钥传到所有计算节点,这样后续部署不用反复输密码。
我之前带新人时,有个同事就是没配置主机名解析,结果部署到一半提示 “找不到 compute 节点”,排查了 1 个多小时才发现是这个问题。所以这一步一定要仔细,每配置完一项就检查一遍。
步骤 2:安装依赖与配置 Kolla-Ansible
环境准备好后,就可以在控制节点上安装 Kolla-Ansible 了。首先安装必要的依赖包,执行 “sudo apt update && sudo apt install -y python3-pip python3-dev libffi-dev gcc libssl-dev”,这些包是保证 Kolla-Ansible 正常运行的基础。
然后用 pip 安装 Kolla-Ansible,命令是 “sudo pip3 install kolla-ansible”。安装完成后,需要复制配置文件到 /etc/kolla 目录,执行 “sudo cp -r /usr/local/share/kolla-ansible/etc_examples/kolla/etc/” 和 “sudo cp /usr/local/share/kolla-ansible/ansible/inventory/* /etc/kolla/”。
接下来要修改 inventory 文件,这个文件是用来指定控制节点和计算节点的。打开 /etc/kolla/all-in-one 文件(如果是多节点部署就改 multinode 文件),在 “[control]” 下面添加控制节点的主机名或 IP,在 “[compute]” 下面添加计算节点的主机名或 IP,比如:
[control]
controller
[compute]
compute1
这里有个小技巧,你可以用 “ansible -i /etc/kolla/all-in-one all -m ping” 命令测试节点连通性,如果所有节点都返回 “pong”,说明配置没问题;如果报错,就检查免密登录和主机名解析是否正确。
步骤 3:生成与修改配置文件
配置文件是部署的核心,需要根据实际环境调整。首先生成密码文件,执行 “sudo kolla-genpwd”,这个命令会在 /etc/kolla 目录下生成 passwords.yml 文件,里面包含了 OpenStack 所有组件的默认密码,建议把 keystone_admin_password 改成自己容易记的密码,比如 “Admin@123”,后续登录 Dashboard 会用到。
然后修改 globals.yml 文件,这个文件里的配置会影响整个部署过程。主要改这几项:
1. “kolla_base_distro: ubuntu”:指定基础操作系统,Ubuntu 就填 ubuntu,CentOS 填 centos;
2. “kolla_install_type: binary”:安装类型,binary 是二进制安装,source 是源码安装,新手建议选 binary,速度更快、更稳定;
3. “network_interface: ens33”:管理网络接口,用 “ip addr” 命令查看自己的网卡名,比如 ens33、eth0;
4. “neutron_external_interface: ens34”:外部网络接口,用来提供虚拟机的外网访问,需要单独准备一块网卡;
5. “enable_haproxy: yes”:如果是多控制节点,需要开启 HAProxy 做负载均衡,单控制节点也可以开启,提升稳定性。
我之前在一个项目里,因为把 neutron_external_interface 填成了和 network_interface 一样的网卡,导致部署完后虚拟机无法访问外网,后来改对网卡名重新部署才解决。所以这里一定要仔细核对网卡信息,不能填错。
步骤 4:拉取镜像与执行部署
配置文件改好后,就可以拉取镜像了。执行 “sudo kolla-ansible pull”,这个命令会从 Docker Hub 拉取 OpenStack 所有组件的镜像,根据网络速度不同,时间会不一样,一般需要 30 分钟到 1 小时。如果网络慢,可以配置国内镜像源,比如添加 “docker_registry: registry.cn-hangzhou.aliyuncs.com” 到 globals.yml 文件里,能大幅提升拉取速度。
镜像拉取完成后,先执行预部署检查,命令是 “sudo kolla-ansible prechecks -i /etc/kolla/all-in-one”。这个步骤会检查环境是否满足部署要求,比如依赖包是否安装、磁盘空间是否足够、网络是否通畅等。如果有报错,就根据提示解决,比如缺少某个包就安装,磁盘空间不够就清理文件。
预检查通过后,就可以正式部署了,执行 “sudo kolla-ansible deploy -i /etc/kolla/all-in-one”。部署过程中会显示每一步的执行情况,如果出现失败,不要慌,先看报错信息,大部分问题都是配置错误导致的,比如密码不对、网卡名错误等,改好配置后重新执行部署命令即可。
我们团队在那个企业项目里,第一次部署时因为磁盘空间不够报错,清理了没用的日志文件后,重新执行部署就成功了。整个部署过程大概用了 4 小时,比最初用 DevStack 的方式稳定多了。
步骤 5:验证部署结果
部署完成后,需要验证是否成功。首先执行 “sudo kolla-ansible post-deploy”,这个命令会生成 admin-openrc.sh 文件,里面包含了登录 OpenStack 的环境变量。然后执行 “source /etc/kolla/admin-openrc.sh” 加载环境变量,接着用 “openstack server list” 命令查看虚拟机列表,如果没有报错,说明控制节点和计算节点通信正常。
还可以通过 Dashboard 登录验证,打开浏览器,输入控制节点的 IP 地址,比如 “http://192.168.1.10”,登录用户名是 admin,密码就是之前在 passwords.yml 文件里改的 keystone_admin_password。登录后如果能看到 Dashboard 界面,并且能创建虚拟机实例,就说明部署成功了。
有趣的是,很多新人部署完成后,只检查了命令行是否能执行,却没登录 Dashboard 验证,后来发现 Dashboard 因为配置问题无法访问,影响了后续使用。所以这一步一定要同时验证命令行和 Dashboard,确保所有功能都正常。
三、常见坑点与解决办法:帮你节省排查时间
在 OpenStack 安装部署过程中,即使按照步骤来,也可能遇到各种问题。我整理了几个最常见的坑点,以及对应的解决办法,帮你少走弯路。
坑点 1:部署过程中提示 “镜像拉取失败”
这是最常见的问题,主要原因有两个:一是网络不通,二是镜像源问题。解决办法很简单:首先检查控制节点是否能访问外网,用 “ping www.baidu.com” 测试;如果网络通,就配置国内镜像源,在 globals.yml 文件里添加 “docker_registry: registry.cn-hangzhou.aliyuncs.com”,然后重新执行 “sudo kolla-ansible pull” 命令。
? 注意:如果是私有网络环境,无法访问外网,就需要先在能联网的机器上拉取镜像,然后导出镜像文件,再拷贝到控制节点和计算节点上导入,具体命令是 “docker save 镜像名> 镜像文件.tar” 和 “docker load < 镜像文件.tar”。
坑点 2:虚拟机创建后无法获取 IP 地址
这个问题通常是 Neutron 组件配置错误导致的。首先检查 neutron_external_interface 是否配置正确,确保用的是专门的外部网络接口;然后查看 Neutron 的日志,执行 “sudo docker logs neutron-server”,如果看到 “no route to host” 的报错,就检查计算节点和控制节点的网络是否连通,比如用 “ping” 命令测试;如果日志显示 “port binding failed”,就检查计算节点的 neutron-openvswitch-agent 容器是否正常运行,用 “sudo docker ps | grep neutron-openvswitch-agent” 查看,没运行的话就执行 “sudo docker start neutron-openvswitch-agent”。
我们团队之前遇到过一次这个问题,排查后发现是计算节点的 neutron-openvswitch-agent 容器没启动,启动后虚拟机就能正常获取 IP 了。
坑点 3:登录 Dashboard 提示 “认证失败”
遇到这个问题,首先检查输入的密码是否正确,就是 passwords.yml 文件里的 keystone_admin_password;如果密码没错,就检查 keystone 容器是否正常运行,执行 “sudo docker ps | grep keystone”,如果没运行,就重启容器;还可以用命令行测试认证是否正常,执行 “openstack token issue”,如果能生成 token,说明认证服务没问题,可能是 Dashboard 的配置错误,检查 /etc/kolla/horizon/horizon.conf 文件里的 keystone 相关配置是否正确。
反直觉的是,有时候 Dashboard 认证失败,不是密码或配置的问题,而是浏览器缓存导致的,清除浏览器缓存后重新登录,问题就解决了。
四、部署完成后的检查清单
为了确保部署的 OpenStack 环境能正常使用,建议按照下面的检查清单逐一验证:
☑ 控制节点所有容器正常运行(执行 “sudo docker ps”,确保没有 Exited 状态的容器)
☑ 计算节点所有容器正常运行(同上,需要在计算节点执行)
☑ 命令行能正常执行 OpenStack 命令(如 “openstack server list”“openstack user list”)
☑ 能通过 Dashboard 登录(用户名 admin,密码正确)
☑ 能在 Dashboard 上创建虚拟机实例(选择合适的镜像和规格,创建后状态为 Active)
☑ 虚拟机能获取 IP 地址(在 Dashboard 或命令行查看虚拟机 IP)
☑ 虚拟机能访问内网(ping 控制节点 IP,能通)
☑ 虚拟机能访问外网(ping www.baidu.com,能通,需要配置外部网络)
如果所有检查项都通过,说明你的 OpenStack 环境已经搭建成功,可以开始使用了;如果有没通过的,就对照前面讲的步骤和坑点,逐一排查解决。
其实 OpenStack 安装部署并没有那么难,关键是选对工具、理清步骤,遇到问题不要慌,一步步排查。我最初学的时候,也踩了很多坑,但每次解决问题后,对 OpenStack 的理解就更深一层。你不用等所有条件都完美了再开始,今天就可以找两台服务器,按照上面的步骤试试,相信你很快就能搭建出自己的 OpenStack 环境。
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。