当前位置: 首页 > article >正文

从零搭建OpenStack私有云:我是如何用两台旧电脑打造个人开发测试平台的

从零搭建OpenStack私有云我是如何用两台旧电脑打造个人开发测试平台的去年整理仓库时发现两台闲置的旧台式机配置都是i5-6500加16GB内存。看着它们积灰实在可惜我决定用这两台老伙计搭建一个OpenStack私有云环境用于日常开发测试。整个过程充满意外和挑战但也收获了不少实战经验。本文将详细记录这次搭建之旅希望能给同样想用有限资源构建私有云的开发者一些参考。1. 硬件准备与系统规划两台旧电脑的配置如下设备类型CPU内存硬盘网卡控制节点i5-650016GB256GB SSD千兆有线×1计算节点i5-650016GB256GB SSD1TB千兆有线×1关键决策点将SSD用于系统盘和数据库存储机械硬盘作为计算节点的实例存储由于只有单网卡选择Linuxbridge而非OVS简化网络配置控制节点需要运行大部分服务分配更多内存资源安装Ubuntu 18.04 LTS时遇到第一个坑UEFI启动模式下安装程序无法识别SSD。解决方法是在BIOS中切换为Legacy启动模式。系统安装完成后立即执行以下基础配置# 更新系统并安装必要工具 sudo apt update sudo apt upgrade -y sudo apt install -y git vim net-tools # 设置主机名和hosts文件 sudo hostnamectl set-hostname controller # 控制节点 # 或 sudo hostnamectl set-hostname compute1 # 计算节点 # 编辑/etc/hosts添加两节点的IP和主机名映射 192.168.1.100 controller 192.168.1.101 compute1提示确保两台机器的时间同步非常重要后续的认证服务对时间差极其敏感。建议安装chrony并配置NTP服务器sudo apt install -y chrony sudo systemctl restart chrony2. OpenStack Stein基础环境搭建选择Stein版本是因为它在稳定性和资源消耗之间取得了较好平衡。首先在两台机器上安装OpenStack客户端和数据库# 添加OpenStack仓库 sudo apt install -y software-properties-common sudo add-apt-repository cloud-archive:stein # 安装MySQL数据库仅控制节点 sudo apt install -y mariadb-server python-pymysql创建MySQL配置文件/etc/mysql/mariadb.conf.d/99-openstack.cnf[mysqld] bind-address 192.168.1.100 default-storage-engine innodb innodb_file_per_table on max_connections 4096 collation-server utf8_general_ci character-set-server utf8安装消息队列服务时遇到了第二个坑RabbitMQ服务启动后无法连接。排查发现是防火墙阻止了5672端口。解决方案# 安装RabbitMQ sudo apt install -y rabbitmq-server # 创建OpenStack用户 sudo rabbitmqctl add_user openstack RABBIT_PASS sudo rabbitmqctl set_permissions openstack .* .* .* # 检查端口监听状态 sudo netstat -tnlp | grep 5672注意如果使用UFW防火墙记得开放必要端口sudo ufw allow 3306/tcp # MySQL sudo ufw allow 5672/tcp # RabbitMQ sudo ufw allow 80/tcp # Horizon3. 核心组件安装与配置3.1 Keystone身份服务安装Keystone时特别注意要提前创建好数据库mysql -u root -p -e CREATE DATABASE keystone; mysql -u root -p -e GRANT ALL PRIVILEGES ON keystone.* TO keystonelocalhost IDENTIFIED BY KEYSTONE_DBPASS; mysql -u root -p -e GRANT ALL PRIVILEGES ON keystone.* TO keystone% IDENTIFIED BY KEYSTONE_DBPASS;配置完成后测试认证服务是否正常工作openstack --os-auth-url http://controller:5000/v3 \ --os-project-domain-name Default --os-user-domain-name Default \ --os-project-name admin --os-username admin token issue3.2 Glance镜像服务将下载的CirrOS测试镜像添加到Glancewget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img openstack image create cirros \ --file cirros-0.4.0-x86_64-disk.img \ --disk-format qcow2 --container-format bare \ --public3.3 Nova计算服务计算节点的配置需要特别注意资源分配。在/etc/nova/nova.conf中调整以下参数[DEFAULT] compute_driver libvirt.LibvirtDriver [libvirt] virt_type qemu cpu_mode none由于使用的是旧硬件选择qemu而非KVM可以获得更好的兼容性虽然性能会有所下降。4. 网络与服务验证4.1 Neutron网络服务采用最简单的provider网络模式配置如下[linux_bridge] physical_interface_mappings provider:enp3s0 [securitygroup] firewall_driver nova.virt.firewall.NoopFirewallDriver enable_security_group True创建网络和子网openstack network create --share --external \ --provider-physical-network provider \ --provider-network-type flat provider openstack subnet create --network provider \ --allocation-pool start192.168.1.150,end192.168.1.200 \ --dns-nameserver 8.8.8.8 --gateway 192.168.1.1 \ --subnet-range 192.168.1.0/24 provider4.2 创建测试实例通过Horizon仪表板创建第一个实例时遇到了VNC控制台无法连接的问题。排查发现是nova-consoleproxy服务没有正确配置。解决方法# 编辑/etc/nova/nova.conf [vnc] enabled true server_listen 0.0.0.0 server_proxyclient_address $my_ip novncproxy_base_url http://controller:6080/vnc_auto.html最终成功创建并登录测试实例ssh -i mykey.pem cirros192.168.1.1505. 实际应用场景这个简易OpenStack环境已经稳定运行了三个月主要支撑以下开发场景多版本测试同时运行Python 3.6/3.8/3.10环境进行兼容性测试CI/CD实验部署Jenkins slave节点进行构建任务网络原型验证测试不同网络拓扑下的应用表现教学演示向团队新人展示云计算基础概念资源监控显示平均负载节点CPU使用率内存使用磁盘IO控制节点35%12GB中等计算节点60%14GB较高对于性能瓶颈我的优化策略是对开发测试实例启用内存气球ballooning技术调整Nova调度器的权重配置优先选择负载较低的节点对不重要的实例设置CPU配额限制6. 遇到的典型问题与解决时间同步问题某天突然所有API调用都返回401错误。检查发现控制节点的时间比NTP服务器快了5分钟。解决方法# 强制同步时间 sudo chronyc -a makestep sudo systemctl restart apache2镜像上传失败Glance报错Unable to add image to store。原因是/var/lib/glance/images目录权限问题sudo chown glance:glance /var/lib/glance/images sudo systemctl restart glance-api实例启动卡住查看Nova日志发现是计算节点libvirt服务崩溃。根本原因是旧电脑的BIOS中需要禁用CPU的C-states节能功能。

相关文章:

从零搭建OpenStack私有云:我是如何用两台旧电脑打造个人开发测试平台的

从零搭建OpenStack私有云:我是如何用两台旧电脑打造个人开发测试平台的 去年整理仓库时发现两台闲置的旧台式机,配置都是i5-6500加16GB内存。看着它们积灰实在可惜,我决定用这两台"老伙计"搭建一个OpenStack私有云环境,…...

3个步骤快速定位Windows热键占用者:Hotkey Detective完整实战指南

3个步骤快速定位Windows热键占用者:Hotkey Detective完整实战指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective …...

Cadence软件安装后找不到图标?别慌,手把手教你从开始菜单启动Capture和Allegro

Cadence软件安装后找不到图标?别慌,手把手教你从开始菜单启动Capture和Allegro 刚完成Cadence软件安装的兴奋感,往往会被桌面上空空如也的现状瞬间浇灭。这就像拿到一台新电脑却发现没有电源键——明明安装了专业EDA工具,却连入口…...

FPSoC芯片如何重塑嵌入式设计?SF1系列实战解析

1. 项目概述:一颗芯片如何重塑嵌入式设计的边界?最近,业内朋友都在讨论安路科技新推出的SF1系列FPSoC产品。作为一名在嵌入式领域摸爬滚打了十几年的老工程师,我第一眼看到这个“FPSoC”的命名,就嗅到了一丝不同寻常的…...

433MHz无线模块解码避坑指南:从示波器抓波形到STM32代码实现的完整流程

433MHz无线模块解码实战:从波形分析到STM32代码优化的全流程解析 1. 解码前的硬件准备与信号捕获 当你第一次拿到433MHz无线模块时,最令人困惑的往往是"为什么我的代码无法正确解码?"要解决这个问题,我们需要从最基础的…...

靖江注册公司需要多少钱?2026最新费用明细与隐形消费避坑指南

对于靖江的传统小微型企业、个体工商户、夫妻店及初创公司而言,注册公司的费用多少、是否存在隐形消费,是创业初期最关心的问题。这类企业大多没有专职会计,社保参保人数通常在3人以下,注册年限多在2年内,资金预算有限…...

深入浅出:拆解Xilinx ERNIC IP的硬件架构,看RoCE v2如何卸载CPU

深入浅出:拆解Xilinx ERNIC IP的硬件架构,看RoCE v2如何卸载CPU 在数据中心和高性能计算领域,RDMA(远程直接内存访问)技术正成为突破网络性能瓶颈的关键。Xilinx的ERNIC IP核作为RoCE v2协议的硬件实现,通过…...

如何用LizzieYzy围棋AI分析工具快速提升棋力:新手完整指南

如何用LizzieYzy围棋AI分析工具快速提升棋力:新手完整指南 【免费下载链接】lizzieyzy LizzieYzy - GUI for Game of Go 项目地址: https://gitcode.com/gh_mirrors/li/lizzieyzy 如果你正在寻找一款能够真正帮助提升围棋水平的AI分析工具,那么Li…...

用Matlab给变形镜建模:从高斯函数到贝塞尔曲线,两种响应函数仿真全流程

用Matlab给变形镜建模:从高斯函数到贝塞尔曲线,两种响应函数仿真全流程 光学系统工程师在设计自适应光学系统时,经常需要精确模拟变形镜的响应特性。这种模拟不仅关系到系统性能预测的准确性,也直接影响控制算法的开发效率。本文将…...

超强干货整理!2026GEO排名查询监测系统排名,适配多场景企业需求

2026年,AI搜索主导信息分发逻辑,GEO(生成式引擎优化)成为企业品牌曝光、流量增长的核心抓手。对企业而言,GEO优化的关键不仅是“铺内容、做适配”,更在于“精准监测、科学优化”——唯有实时掌握AI搜索排名…...

Java反射getMethods()方法顺序不确定性解析与解决方案

1. 项目概述:一个看似简单却暗藏玄机的API行为如果你写过Java反射相关的代码,大概率用过Class.getMethods()这个方法。它的官方文档描述简洁明了:“返回一个包含 Method 对象的数组,这些对象反映了此 Class 对象表示的类或接口的所…...

从‘管理模式’到‘监听模式’:一张无线网卡在Kali Linux下的四种工作模式详解与切换实战

从‘管理模式’到‘监听模式’:一张无线网卡在Kali Linux下的四种工作模式详解与切换实战 当你第一次在Kali Linux中插入无线网卡时,它默认处于"管理模式"——就像普通笔记本电脑连接WiFi一样温顺。但在这张小小的硬件里,其实藏着四…...

RK3576开发板AP6275S无线模块调试:从驱动到应用实战

1. 项目概述:从零上手RK3576的无线模块调试最近在折腾一块基于瑞芯微RK3576的国产工业评估板——眺望电子的EVM-RK3576。这块板子接口资源相当丰富,双千兆网口、CAN、RS485、USB3.0等一应俱全,对于做工业网关、边缘计算盒子或者多媒体终端的开…...

硬件开发、智能硬件与硬件系统:从概念到产品的完整技术解析

1. 项目概述:从“黑盒子”到“白盒子”的认知跃迁在科技行业摸爬滚打十几年,我见过太多对“硬件”这个词的误解。有人觉得硬件就是电脑、手机这些看得见摸得着的“铁疙瘩”;有人觉得智能硬件就是给传统设备加个Wi-Fi模块;还有人觉…...

别再只盯着IoU了!深入浅出聊聊边界框回归:从IoU到Shape-IoU的演进与选择

边界框回归的进化论:从IoU到Shape-IoU的技术跃迁与实战选型 当我们在计算机视觉领域谈论目标检测时,边界框回归就像是一场永不停歇的进化竞赛。从最初的IoU开始,这场竞赛已经经历了GIoU、DIoU、CIoU、SIoU等多个技术迭代,而最新登…...

Python自动化办公:用PyPDF2批量给PDF加密、调整页面顺序,解放你的双手

Python自动化办公实战:用PyPDF2实现PDF批量加密与智能排序 在数字化办公环境中,PDF文件处理已成为行政、财务和法律从业者的日常必修课。当面对数百份合同需要加密保护,或是季度报告需要重新编排页码时,手动操作不仅效率低下&…...

告别FreeRTOS:在乐鑫ESP32-C3上为RT-Thread打上‘内核补丁’的完整指南

从FreeRTOS到RT-Thread:ESP32-C3内核替换的工程实践 在嵌入式开发领域,操作系统的选择往往决定了项目的技术栈和生态边界。对于习惯了ESP-IDF和FreeRTOS的开发者来说,RT-Thread以其模块化设计和丰富的中间件支持正成为颇具吸引力的替代方案。…...

STM32F103标准库下,DAC的三种触发方式(软件、自动、定时器+DMA)到底该怎么选?

STM32F103标准库下DAC触发方式深度解析:从单次输出到精密波形生成 在嵌入式系统开发中,数字模拟转换器(DAC)是实现数字信号到模拟信号转换的关键模块。STM32F103系列微控制器内置的12位DAC模块提供了三种不同的触发方式&#xff1…...

美团春招笔试“小美的朋友关系”全网无AC?我用逆向并查集搞定它(附完整代码)

逆向并查集:破解美团笔试"小美的朋友关系"难题 大厂算法笔试中,总有一两道题能卡住绝大多数求职者。今年美团春招的"小美的朋友关系"就是这样一道"拦路虎"——全网找不到AC代码,无数人在超时和错误答案中挣扎。…...

2026年大模型内容精准收录实操,企业长效流量布局核心方法论

引言:大模型正在成为企业品牌认知的新前置入口。当越来越多用户绕过搜索引擎、直接向AI提问"哪家公司更适合""某个方案值不值得选"时,企业在AI回答中的位置、语气和引用来源,已经构成真实的竞争格局。本文将从大模型内容…...

给AI模型选‘口粮’:MIT-BIH、CPSC、PTB-XL,哪个ECG数据集更适合你的项目?

给AI模型选‘口粮’:三大ECG数据集深度评测与实战指南 当心电图(ECG)分析遇上人工智能,数据质量直接决定模型性能天花板。PhysioNet作为全球最大的生物医学信号开放平台,其收录的MIT-BIH、CPSC-2018和PTB-XL三大经典EC…...

《微服务被吹上天了?我劝你别盲目跟风,这 5 种情况千万别用》

《微服务被吹上天了?我劝你别盲目跟风,这 5 种情况千万别用》 一、开头(钩子)“微服务不是银弹,而是毒药。很多团队用了微服务之后,开发效率反而下降了,系统复杂度反而上升了。”这句话不是我说…...

用K210开发板驱动HUB75E点阵屏:从SPI时序到S型排列的完整避坑指南

用K210开发板驱动HUB75E点阵屏:从SPI时序到S型排列的完整避坑指南 在嵌入式开发领域,驱动LED点阵屏一直是兼具挑战性和实用性的课题。当K210这款高性能RISC-V开发板遇上HUB75E接口的大尺寸点阵屏,开发者往往会在SPI时序优化、内存管理和独特的…...

手把手教你用STM32F103C8T6驱动NRF24L01模块(附完整代码与避坑指南)

STM32F103C8T6与NRF24L01无线通信实战:从硬件对接到代码调试全解析 在物联网和智能硬件快速发展的今天,无线通信技术已成为嵌入式系统设计中不可或缺的一环。NRF24L01作为一款性价比极高的2.4GHz无线收发模块,配合STM32F103C8T6这类主流微控制…...

别再乱配了!H3C交换机上给不同VLAN打QoS标签和限速,这篇保姆级教程讲透了

H3C交换机QoS实战:精准标记与智能限速配置指南 在企业网络环境中,不同业务部门对网络质量的需求差异显著——研发部门需要稳定的文件传输带宽,高管团队依赖流畅的视频会议,而访客网络则要限制其对核心资源的占用。这种场景下&…...

PCB设计避坑指南:用ANSYS Designer快速评估耦合长度,别再盲目布线了

PCB设计避坑指南:用ANSYS Designer快速评估耦合长度,别再盲目布线了 高速PCB设计中,平行走线的耦合效应一直是工程师们头疼的问题。那些看似整齐的并行布线,往往在信号完整性测试时暴露出意想不到的串扰问题。我曾亲眼见过一个千兆…...

Ubuntu20.04安装Mapviz避坑指南:解决Qt与OpenCV冲突,手把手配置天地图

Ubuntu20.04安装Mapviz避坑指南:解决Qt与OpenCV冲突,手把手配置天地图 在ROS开发中,地图可视化工具Mapviz因其强大的插件系统和高度可定制性备受青睐。然而,Ubuntu20.04环境下安装Mapviz时,Qt版本冲突和OpenCV链接错误…...

别再让容器‘断网’了!Docker DNS配置保姆级教程(从全局到单容器,含8.8.8.8等常用DNS)

Docker容器网络疑难排查:全方位DNS配置指南与实战技巧 当你正在赶一个紧急项目,突然发现Docker容器无法连接外部API服务,控制台不断抛出"Name or service not known"错误——这种场景对开发者来说再熟悉不过了。容器网络问题&#…...

阿里云ECS新手避坑指南:搞定校园网、安全组和SSH端口映射(附XShell连接测试)

阿里云ECS新手全流程配置手册:从安全组到SSH连接的深度实践 第一次接触云服务器时,那种既兴奋又忐忑的心情我至今记忆犹新。看着控制台里各种陌生的术语和选项,明明按照教程一步步操作却总是卡在连接阶段,这种经历想必不少技术爱好…...

保姆级教程:红米K70澎湃OS解锁BL后,如何用Delta面具(德尔塔面具)一键Root

红米K70澎湃OS深度Root指南:Delta面具全流程实战解析 在安卓玩机圈里,Root始终是释放设备潜力的终极钥匙。对于手持红米K70并已解锁Bootloader的进阶用户而言,Delta面具(Magisk Delta)无疑是当前最安全、最稳定的Root解…...