ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

一日搭建云平台:虚拟机安装与OpenStack环境准备实战

2026/9/16 4:44:28 拓冰建站 浏览量
一日搭建云平台:虚拟机安装与OpenStack环境准备实战 如果你打算在一天之内把一套云平台搭起来看看效果那第一步不是去翻OpenStack各个项目的官方文档而是先把虚拟机环境搞定。很多人对“云平台”这三个字有天然恐惧觉得得有一整柜物理服务器才行实际上在一台普通的PC上用虚拟机模拟出几台节点跑一套精简的云平台完全可行。这篇文章就手把手带你走完“1 Day搭建云平台”的第一程虚拟机安装与系统准备这条路我走过好几遍哪些地方容易卡壳、哪些参数别乱动我都会写明。这套内容适合三类人一是刚接触云计算、想在本机搭个OpenStack环境练手的学生二是公司要搞私有云评估、需要快速出原型验证的运维三就是纯粹想搞明白“云平台底层到底是什么”的好奇型选手。不需要你有服务器不需要多核怪兽一台16GB内存的普通台式机就能开干。我会把虚拟机创建、镜像下载、系统安装、参数配置、常见坑全部拆开讲跟着操作半天内你就能看到一个能登录的云管理界面。1. 项目整体设计与思路拆解1.1 “1 Day”目标怎么拆解看到“1 Day”这个限定词先别急着兴奋。完整意义上的OpenStack生产环境别说一天一个团队一周都未必能交付。但如果我们只是做“能跑起来、能创建云主机、能看Dashboard”的实验环境一天确实够。关键在于你要把时间花对地方。我的习惯是先把任务拆成四个阶段环境准备虚拟机与操作系统、基础依赖部署数据库、消息队列、认证服务、核心组件安装计算、网络、镜像、验证与调优。真实时间占比大概是第一阶段占2小时第二阶段占3小时第三阶段占3小时第四阶段占2小时留2小时缓冲。凡是跟你说“半小时装完OpenStack”的要么用的是封装好的ISO镜像要么就是没算上排错时间。这篇文章聚焦在第一阶段也就是整个链条的地基。地基没打好后面所有组件的服务状态都会是红叉你根本分不清是配置写错还是系统环境有问题。所以虚拟机安装这一步我会刻意放慢讲参数也都给默认建议值目的就是让后面几个阶段少出幺蛾子。1.2 方案选型为什么是 VMware Ubuntu DevStack先交代我的选型宿主机用Windows或Linux都行虚拟化软件用VMware Workstation虚拟机里装Ubuntu Server 22.04 LTS云平台本身用DevStack方式部署。这套组合不是拍脑袋定的每一环都有原因。VMware Workstation还是目前个人电脑上最稳的桌面虚拟化工具。虽然现在也有VirtualBox、Hyper-V但VMware对嵌套虚拟化的支持更成熟网络编辑器也更直观。所谓嵌套虚拟化就是在虚拟机里再跑虚拟化——因为OpenStack的Nova又要去创建云主机如果你的CPU虚拟化指令没有透传给虚拟机后面的计算节点连起来会非常痛苦。VMware对这一块的支持相对省心这也是我优先选它的理由。Ubuntu Server则是因为OpenStack生态对它的支持最完善社区文档、示例配置几乎全是Ubuntu风格。你拿CentOS也不是不行但遇到问题搜到的答案大概率是Ubuntu路径多一道转换就多一个出错机会。用LTS版本是求稳22.04目前包源稳定、兼容性好推荐直接选它。DevStack是OpenStack官方提供的自动部署脚本它会把控制节点、计算节点、网络服务、Dashboard打包部署到单台机器上。对于实验环境来说这是最务实的路径比手动一个个装组件省掉大半天时间。后面第4章我会详细讲它。1.3 资源规划先算清楚再动手很多人在虚拟机里装Linux没压力但装OpenStack就卡成PPT原因基本是资源分配不合理。如果你打算在同一台虚拟机里用DevStack部署All-in-One单节点推荐最低配是4核CPU、8GB内存、50GB磁盘。这能保证基础服务起来但Dashboard切换页面会明显有延迟。舒服的配置是8核、16GB内存、100GB磁盘。这只是“云平台控制节点”的资源。如果你还想跑真正的“计算节点”虚拟化即让OpenStack在这台机器里再创建云主机物理机的总内存至少要32GB。因为计算节点上每跑一台云主机就要吃掉对应的内存和CPU。我自己的测试机是64GB内存跑一个控制节点加一个计算节点再开两台云主机整体压力不大。如果你的物理机只有16GB内存建议把调度器和大内存服务做点简化或者暂时只部署控制节点计算节点以后加到第二台虚拟机上。这个取舍一定提前想好别等装到一半发现内存告急到时删组件、调参数会非常折腾。2. 虚拟机环境准备与创建2.1 VMware Workstation 下载与安装先下载合适版本的VMware Workstation。目前主流版本是17注意区分Workstation Pro和Workstation Player搭建实验环境一定选Pro版因为创建虚拟机、自定义网络、开启嵌套虚拟化这些核心功能只有Pro版全部开放。Player版只能运行别人做好的虚拟机不适合当主力。安装包下载后一路Next即可有几个细节值得注意第一安装路径不要带中文和空格避免后面虚拟机文件路径出现解析问题第二安装时会询问是否加入用户体验改善计划可以取消勾选不影响功能第三如果系统提示需要重启就老实重启I/O虚拟化驱动要重启后才生效。安装完成后先别急着创建虚拟机打开“编辑-虚拟网络编辑器”确认VMnet8NAT模式网段正常。这个网段是虚拟机访问外网用的后面Ubuntu装系统时要用到。默认网段一般是192.168.x.0只要没有和你的公司局域网冲突就不用动。2.2 创建云平台虚拟机一步一步来打开VMware选择“创建新的虚拟机”在类型选择页面选“自定义(高级)”这样每一步参数都能自己控制。硬件兼容性选Workstation 17.x后续如果要迁移到ESXi或者其他平台兼容性越新功能越完整。客户机操作系统选“Linux”版本下拉框选“Ubuntu 64位”。这个选项会和后续的ISO引导方式匹配选错会导致安装介质无法识别。接下来命名虚拟机名字建议用“openstack-controller”、“node1”这种有业务含义的不要用“test”、“123”之类的后面节点多了你自己都分不清哪台是哪台。处理器配置这块如果你要跑All-in-One给4核以上固件类型选BIOS兼容性最稳。内存按前面规划走。网络类型选NAT模式这个太关键了——桥接模式依赖宿主机所处的物理网络换网换地点就容易断连NAT模式是VMware虚拟出来的一个私有网段宿主机开着虚拟机就能上网稳定得多。磁盘选“创建新虚拟磁盘”大小先给50GB选“将虚拟磁盘存储为单个文件”。单个文件读写性能比拆分成2GB分卷好备份迁移也方便。但注意文件系统格式如果虚拟磁盘所在的物理分区是FAT32单文件超4GB会有问题用NTFS或ext4就没这个顾虑。2.3 虚拟机参数详解每个选项背后的原因创建向导完成后先别急着开机在“编辑虚拟机设置”里还有几个地方要改。第一是“处理器-虚拟化引擎”勾选“虚拟化Intel VT-x/EPT或AMD-V/RVI”。这行就是嵌套虚拟化开关。OpenStack的Nova计算服务需要在其托管的云主机里再跑虚拟机如果你不勾选后面创建云主机时几乎100%报“KVM不可用”等你发现再去改设置系统配置都装一半了回滚成本很高。第二是CD/DVD设置选择“使用ISO镜像文件”把下载好的Ubuntu Server安装镜像指进来并勾选“启动时连接”。镜像选择要注意版本Ubuntu Server 22.04.x的ISO大约2GB从官方源或国内镜像站下载都行下载后核对一下SHA256校验值这个步骤别省镜像损坏在安装中段才会暴露非常浪费时间。第三是“显示器”如果不需要图形界面可以取消“加速3D图形”为宿主机省一点GPU资源。Ubuntu Server本来就是纯命令行不需要伺候图形桌面。还有一点容易被忽略虚拟机内存如果超过宿主机物理内存的50%建议在“高级-内存”里不要勾选“预留所有虚拟机内存”。不然每次启动都会把内存锁定宿主机自己反而卡成幻灯片。2.4 安装Ubuntu Server操作实录把ISO挂载好打开虚拟机电源你会看到GRUB引导菜单。这里不要直接回车先移动高亮到“Install Ubuntu Server”按e进入编辑在“linux”那一行末尾加上“nomodeset”。这个参数的意思是让内核先不加载显卡驱动避免某些显卡在安装阶段黑屏。等你系统装好后再移除这个参数否则显示分辨率会一直不顺眼。安装向导的第一项是语言选“English”就行系统装完可以再改语言包。网络配置这步比较有趣如果检测到DHCP会自动显示你虚拟机的IP地址这里建议把IP记录下来后面SSH登录要用。键盘布局保持默认的“English (US)”。接下来是Proxy配置默认留空。然后是软件源地址这步非常关键Ubuntu安装默认使用的是archive.ubuntu.com国内访问非常慢强烈建议换成阿里云或清华的镜像源地址选好源后安装程序会额外跑一次仓库更新等它把包列表下载完。磁盘分区那步新手直接选“Use An Entire Disk”即可。但要注意如果你打算用cinder做块存储后面可能还需要额外的空白磁盘空间给OpenStack使用。建议在物理机条件允许时创建虚拟机的磁盘时直接设置成100GB安装系统时让“Use An Entire Disk”吃掉60GB留出30~40GB不分区后面cinder和swift的存储配置就能用这部分空间。用户账户设置时建议取一个简单但不弱的用户名比如“stack”或“openstack”。千万别用纯数字用户名后面DevStack脚本对用户名有要求虽然可以改但很烦。密码就用你常用的强密码服务器密码要熟记忘了只能重装。安装完成后系统会重启移除ISO后自动从磁盘启动。看到一个黑色背景的命令行界面和你设置的用户名说明系统装成功了。3. 系统初始化让虚拟机“能用”与“好用”3.1 网络配置与SSH连接刚装好的Ubuntu Server默认走DHCP虚拟机重启后IP地址有可能会变。为了稳定建议配置成静态IP。用ip a命令看当前网卡名Ubuntu 22.04一般是ens33或ens160。然后编辑/etc/netplan/01-netcfg.yaml文件名可能略有差异把dhcp4改成no手动指定IP地址、网关、DNS。network: version: 2 ethernets: ens33: dhcp4: false addresses: [192.168.88.10/24] routes: - to: default via: 192.168.88.2 nameservers: addresses: [223.5.5.5, 114.114.114.114]这里网关地址要填VMware NAT网段的网关也就是VMnet8的网关一般就是192.168.x.2。DNS建议用阿里或114的别直接用8.8.8.8很多国内网络环境访问国外DNS延迟高、还会被干扰。改完执行sudo netplan apply然后用ping -c 3 www.baidu.com验证外网连通。之后在Windows宿主机上用SSH工具比如FinalShell、MobaXterm甚至Windows自带的ssh命令连接虚拟机的IP就可以告别VMware灰蒙蒙的小窗口了。SSH连不上时九成原因是防火墙没放行22端口执行sudo ufw allow 22或直接sudo ufw disable实验环境图省事可以关掉。3.2 系统更新与基础组件安装接着把系统包索引和软件包更新到最新sudo apt update sudo apt upgrade -y首次升级可能耗时比较久特别是内核更新后要重启。这里推荐先更新再重启否则后面DevStack装到一半系统闹重启很容易出半截状态。然后安装一些基础工具sudo apt install -y git vim net-tools curl wget python3-pip。这里git是后面拉DevStack代码要用的curl和wget用于下载脚本net-tools提供ifconfig命令排查网络问题时很方便。如果你打算装的是带界面的DevStack还需要准备python3的虚拟环境工具。DevStack本身会自己创建venv你只要保证系统里python3版本不低于3.8即可。检查版本用python3 --version。3.3 验证虚拟化能力与内核参数云平台能不能顺利创建云主机关键看这条命令egrep -c (vmx|svm) /proc/cpuinfo返回的数字大于0说明CPU虚拟化指令已经成功透传进虚拟机。返回0的话回到VMware虚拟机设置里检查“虚拟化引擎”那三个勾选是否全开并且确认宿主机BIOS里也开启了虚拟化选项。这一步是后续KVM能否工作的硬门槛。再执行kvm-ok需要先装cpu-checkersudo apt install -y cpu-checker如果输出“KVM acceleration can be used”那就可以放心进入下一步了。还有一个容易忽略的内核模块桥接网络用的bridge模块。执行sudo modprobe bridge sudo lsmod | grep bridge有输出说明加载成功。OpenStack的neutron会创建大量Linux Bridge或Open vSwitch网桥底层依赖这个模块。如果lsmod看不到bridge后面创建外部网络时会报“Bridge is not ready”那时候排查起来比现在费劲得多。4. 云平台核心组件部署DevStack快速落地4.1 DevStack到底是什么DevStack不是某个单一组件它是一组Shell脚本的集合用于在单台机器上快速部署OpenStack的完整实验环境。它的定位就是开发和测试不是生产环境但它的部署逻辑和手动安装是一致的先装基础服务MariaDB、RabbitMQ、Memcached再装认证服务Keystone然后是镜像服务Glance、计算服务Nova、网络服务Neutron、DashboardHorizon最后装编排服务Heat等可选组件。选择DevStack的理由很实际手动部署这些组件第一步就是十几个软件包的依赖排列组合一个版本不匹配就全盘重来。DevStack把所有版本依赖关系写死了你跑一个./stack.sh它自动把38个包装好、配置文件写好、服务注册好。对于“1 Day搭建云平台”这个目标来说这是唯一现实的选择。不过要清楚边界DevStack部署出来的环境身份认证默认是admin用户网络默认是VXLAN模式功能全但并不精细。适合你验证“OpenStack长什么样、基本操作怎么走”不适合承载真实业务。这个心理预期要提前建立。4.2 local.conf配置文件详解开始部署前先创建一个叫“stack”的普通用户必须不能用root跑DevStacksudo 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切到stack用户拉代码sudo su - stack git clone https://opendev.org/openstack/devstack cd devstack关键文件是local.conf它决定了部署哪些组件、使用什么密码、网络怎么配置。这是我的参考配置[[local|localrc]] ADMIN_PASSWORDadmin123 DATABASE_PASSWORDadmin123 RABBIT_PASSWORDadmin123 SERVICE_PASSWORDadmin123 HOST_IP192.168.88.10 FLAT_INTERFACEeth0 FIXED_RANGE10.0.0.0/24 FIXED_NETWORK_SIZE256 FLOATING_RANGE192.168.88.128/25 disable_service tempest ENABLE_SERVICEkeystone,glance,nova,nova-api,neutron,horizon这几个参数逐个解释ADMIN_PASSWORD及后面三个密码是Dashboard登录和各服务之间认证用的密码可以设成一样的省心HOST_IP填你虚拟机的静态IP就是刚才netplan里配置的那个FLAT_INTERFACE是flat网络用的物理网卡填你机器上的网卡名FLOATING_RANGE是浮动IP网段要和你的NAT网段在同一个子网但不要和HOST_IP冲突。我建议FLOATING_RANGE取一个与主机IP不同但同网段的子网段比如主机192.168.88.10浮动IP用192.168.88.128/25。disable_service tempest是为了省时间tempest是OpenStack的集成测试集生产环境有价值实验环境跑它纯属浪费时间。ENABLE_SERVICE列出了本次要启动的核心组件如果你对存储感兴趣可以在后面加cinder、swift但加组件意味着更长的部署时间请酌情。4.3 一键部署过程实录执行./stack.sh接下来的时间屏幕上会滚动大量日志。前10分钟主要是下载软件包和创建Python虚拟环境中间10分钟安装数据库、消息队列等基础服务最后10分钟初始化OpenStack各个服务并创建数据库表。整个过程预计30~40分钟取决于网速和机器性能。日志里如果中途出现红色ERROR先别慌屏幕下方会提示失败时的日志文件路径。常见几类坑我在下一章单独说。看到最后一行类似“Horizon is now available at http://192.168.88.10/dashboard”的字样说明部署成功。部署完成后测试环境里默认有一个名为demo的项目项目里没有任何云主机。你可以用openstack命令行工具或Dashboard的网页界面登录用户名admin密码用你local.conf里设置的ADMIN_PASSWORD。这里再次提醒第一次创建云主机时如果报KVM或网络相关的错回去确认前面3.3小节的虚拟化验证是否通过。4.4 登录Dashboard与基本验证浏览器里访问http://192.168.88.10/dashboardVMware的NAT模式下宿主机可以直接访问虚拟机的这个地址。登录后会看到Horizon的白色界面左侧菜单是“项目”、“身份”、“管理”三大块。建议先做两个验证动作一是“项目-计算-镜像”里确认是否已经存在cirros等测试镜像DevStack默认会下载一个很小的cirros镜像二是“管理-系统-主机汇总”里查看计算主机的状态如果是Enabled且没有报错说明Nova服务正常。到这里从虚拟机安装到云平台核心组件落地一天的搭建任务就算完成了。你可以在“项目-计算-实例”里点击“创建实例”自己动手创建第一台云主机试试。5. 常见问题与排查技巧速查5.1 高频报错与解决办法搭建过程中肯定会踩坑我把常见问题整理成一张速查表按出现频率排序现象可能原因解决办法Ubuntu安装界面黑屏或花屏显卡驱动不兼容安装引导时加nomodeset参数SSH连接不上虚拟机防火墙拦截、网络配置错误ufw allow 22或关闭防火墙检查netplan配置egrep -c (vmx|svm)返回0嵌套虚拟化未开启VMware虚拟化引擎勾选三项宿主机BIOS开启VT-xDevStack跑了一会儿后报内存不足虚拟机内存过小至少8GB推荐16GB下载devstack或apt包速度极慢网络源问题更换国内镜像源设置apt代理Dashboard页面打不开Horizon服务异常检查systemctl状态下的devstackhorizon服务创建云主机一直处于BUILD状态Nova-compute服务故障或资源不足查看/var/log/nova/nova-compute.log日志5.2 部署中最容易忽略的三个坑第一个坑是内存分配。很多教程说4GB内存就能跑DevStack实际勉强能起服务但只要你创建一台云主机物理内存立刻见底系统开始疯狂swap所有服务响应延迟都会变得很夸张。建议在规划阶段就把物理机内存的预算考虑进去别等卡了再开虚拟机加内存——加是能加但重新启动整套服务的耗时不可小觑。第二个坑是浮动IP网段设置错误。FLOATING_RANGE如果和你的NAT网段不匹配创建出来的浮动IP无法ping通但排查起来很隐蔽因为服务状态全都正常。记住浮动IP网段必须和虚拟机的HOST_IP在同一个子网而且避开HOST_IP本身。第三个坑是中途失败后重跑。DevStack提供了一条快速清理命令cd /opt/stack/devstack ./unstack.sh ./clean.sh很多人失败后直接重启虚拟机再执行./stack.sh结果残留服务和新服务打架报错信息五花八门。正确姿势是先unstack再clean确认/etc/hosts和local.conf没问题后再重跑。这个习惯能帮你省下至少两小时的排错时间。5.3 关于“1 Day”节奏的最后建议一天搭建云平台心态比技术更重要。如果中途一个报错卡了半小时不用怀疑自己的水平这套环境涉及的组件几十个互相之间的耦合关系就是容易出各种奇怪问题。我的经验是卡住超过20分钟就换个方向排查要么看日志文件、要么查端口监听状态、要么直接搜报错关键字。一条路走不通就换路不要原地纠结。实际跑通之后不少同学习惯立刻删掉环境这是很亏的。在搭建完成后的新鲜感里把Dashboard上每个菜单都点一遍创建一台实例、绑定一次浮动IP、删除一次实例这套“创建-使用-销毁”流程会让你对OpenStack的理解远超看十遍文档。我见过太多人搭好环境后只截个图就撤了过一个月再问他要部署文档什么都想不起来。6. 写在最后我搭建云平台从第一次摸XML配置文件到全流程跑通前后折腾了三个周末现在回想起来一半时间都浪费在虚拟机环境的各种小问题上。把这篇文章写出来就是希望你能绕开这些冤枉路。预祝你一天搭完能在自己的云平台上创建出第一台云主机。