OpenStack私有云搭建实战:从环境筑基到CLI排错

发布时间:2026/10/5 8:44:02
OpenStack私有云搭建实战:从环境筑基到CLI排错 简介本资源是一份面向云计算初学者与运维工程师的OpenStack私有云实战搭建指南聚焦IaaS层基础平台部署解决从零构建可用私有云环境的核心问题。文档以清晰步骤链贯穿全流程涵盖主机名与hosts映射配置、SELinux与防火墙调优、YUM源配置、iaas-xiandian软件包安装、Glance镜像上传与创建、Cinder云硬盘与Neutron内外网定义等关键操作特别包含控制节点与计算节点双机协同部署要点及浮动IP绑定、卷挂载等典型业务验证环节。资源为单个Word文档.doc格式体积仅119KB内容精炼、指令明确、目录层级完整便于逐项对照执行与笔记批注。目前已有619人学习下载适合作为高校云计算课程实验参考、企业私有云POC快速落地手册或OpenStack认证备考实操补充材料。1. OpenStack 私有云搭建不是装完就跑的“一键脚本”而是网络、存储、认证三线并行的系统工程你手头这份openstack私有云搭建.doc表面看是份竞赛类实训文档带chinaskills_cloud_iaas.iso和iaas-xiandian包但实际是一套高度收敛、强依赖环境约束的 OpenStack 部署流水线——它不面向生产环境高可用架构也不走 DevStack 或 Kolla 这类通用路径而是专为教学验证与技能考核设计的“最小可行私有云”。它用两台物理/虚拟机controller compute硬编码了网络拓扑、服务依赖和密码策略所有组件Keystone、Glance、Nova、Neutron、Cinder、Horizon通过 shell 脚本串行安装跳过容器化、跳过 HA、跳过 TLS但恰恰因此它成了理解 OpenStack 各服务间真实调用链路的“黑匣子解剖图”比如iaas-install-neutron-controller.sh里如何把br-ex桥绑定到物理网卡、neutron router-gateway-set怎么触发 L3 agent 的 SNAT 规则生成、openstack server add volume背后 Cinder 如何调度 LVM 卷并通知 Nova 挂载。如果你正被 OpenStack 的“服务太多、报错太散、日志太深”卡住这份文档就是你的第一块拆解板——它不教你“云是什么”它逼你亲手把openrc.sh里的HOST_IP_NODE和INTERFACE_NAME对齐真实网卡把BLOCK_DISKsda3和lsblk输出反复比对把neutron subnet-create的 CIDR 和network_segment_IP做数学校验。新手靠它建立 OpenStack 组件地图熟手靠它反推服务启动顺序与依赖断点。别把它当说明书它是张必须手填的电路图。2. 环境筑基从主机名、SELinux 到 YUM 源每一步都在为后续服务启动埋下伏笔OpenStack 不是独立运行的单体应用它的每个服务进程都像精密钟表里的齿轮必须在特定时间、特定权限、特定网络上下文中咬合。而环境筑基阶段就是给这些齿轮上油、校准、固定底座的过程。跳过或潦草处理这一步后续iaas-install-*脚本失败率会陡增 70% 以上——不是脚本有问题是你没给它准备好“呼吸的空气”。2.1 主机名与 hosts 映射服务发现的底层协议锚点OpenStack 服务间通信大量依赖 hostname 解析如 Nova 计算节点向 Keystone controller 发起 token 校验时URL 中的controller必须能被 DNS 或/etc/hosts解析。文档中要求# 控制节点执行 hostnamectl set-hostname controller # 计算节点执行 hostnamectl set-hostname compute注意hostnamectl set-hostname修改的是hostname但 OpenStack 服务尤其是 Neutron agent实际读取的是/proc/sys/kernel/hostname而该值在hostnamectl后需CtrlD退出当前 session 才刷新。更稳妥做法是执行sysctl kernel.hostnamecontroller并写入/etc/sysctl.conf。接着在/etc/hosts中硬编码映射# /etc/hosts控制节点 192.168.1.130 controller 192.168.1.140 compute # 注意必须包含本机 IP hostname否则 keystone-admin-openrc.sh 中的 export OS_AUTH_URLhttp://controller:5000/v3 会解析失败逻辑说明openstackCLI 工具默认使用http://controller:5000/v3作为认证端点。若controller无法解析source /etc/keystone/admin-openrc.sh后执行openstack token issue直接报Connection refused而非提示“host not found”。这是新手最常踩的第一个坑——以为网络通就行忽略了服务发现层。2.2 SELinux 与防火墙不是简单关闭而是精准降权文档要求将 SELinux 设为permissive并清空 iptables 规则。这不是偷懒而是规避 OpenStack 复杂安全上下文带来的权限冲突SELINUXpermissive在/etc/selinux/config中设置后必须重启系统reboot才生效。setenforce 0只是临时切换且部分 OpenStack 服务如httpdfor Horizon在启动时会检查/etc/selinux/config若仍为enforcing可能拒绝加载模块。iptables -F清空规则后iptables-save /etc/sysconfig/iptables是必须操作。否则重启后规则恢复Neutron 的br-int、br-ex桥流量会被 DROP。参数说明iptables -Z清空计数器iptables -X删除用户自定义链——这两步确保iptables -L输出干净避免旧链干扰neutron-server启动时的iptables_manager初始化。2.3 YUM 源配置本地镜像挂载是性能与稳定性的双重保障文档使用chinaskills_cloud_iaas.iso提供定制化 RPM 包含iaas-xiandian、openstack-ocata或pike版本组件而非公网源。原因有三公网源包版本碎片化iaas-install-*脚本硬编码了包名与依赖关系本地挂载避免网络波动导致yum install中断iaas-repo目录内含repodatayum makecache速度远超远程同步。挂载命令# 控制节点执行计算节点同理 mkdir -p /opt/centos /opt/iaas mount -o loop CentOS-7-x86_64-DVD-1804.iso /opt/centos mount -o loop chinaskills_cloud_iaas.iso /opt/iaas # 验证挂载 lsblk | grep loop # 应显示两个 loop 设备 df -h | grep opt # 应显示 /opt/centos 和 /opt/iaas 占用逻辑说明mount -o loop将 ISO 文件当作块设备挂载使file:///opt/centos成为有效baseurl。若挂载失败yum repolist会报Cannot retrieve metalink...而非具体包缺失——这是排查 YUM 源问题的第一信号。2.4 FTP/HTTP 服务选型计算节点获取源的两种路径与实操差异计算节点无法直接挂载 ISO需通过网络访问控制节点的/opt/centos和/opt/iaas/iaas-repo。文档给出 FTP 和 HTTP 两种方案推荐 HTTP原因如下对比项FTP 方案HTTP 方案安装命令yum install vsftpd -yyum install httpd -y配置关键点anon_root/optchmod -R 755 /optsystemctl start httpdfirewall-cmd --add-servicehttp计算节点 baseurlftp://controller/centoshttp://controller/centos排查重点ftp controller登录是否成功ls是否列出目录curl -I http://controller/centos返回 200ls /var/www/html是否软链正确实操建议HTTP 方案中执行ln -s /opt/centos /var/www/html/centos和ln -s /opt/iaas/iaas-repo /var/www/html/iaas-repo比修改httpd.conf更安全。firewall-cmd --add-servicehttp --permanent firewall-cmd --reload必须执行否则计算节点yum repolist会超时。3. 配置驱动openrc.sh是 OpenStack 的“DNA 序列”改错一个字段全盘崩溃/etc/xiandian/openrc.sh不是普通环境变量文件它是整个 IaaS-Xiandian 自动化部署的唯一配置中枢。所有iaas-install-*.sh脚本都 source 它来获取 IP、密码、网卡名等参数。它的错误不会立即报错而是在服务启动后表现为Keystone token 无效、Neutron agent 无法注册、Cinder volume 无法 attach——此时 debug 日志里满屏ConnectionRefusedError或Unauthorized根源却在openrc.sh里一个HOST_IP写错。3.1 关键字段解析哪些必须改哪些可不动# /etc/xiandian/openrc.sh控制节点示例 HOST_IP192.168.1.130 # ✅ 必须控制节点管理 IPKeystone/Nova API 监听地址 HOST_PASS000000 # ✅ 必须所有数据库 root 密码MySQL、RabbitMQ 密码、服务账户密码 HOST_NAMEcontroller # ✅ 必须与 hostnamectl 设置一致 HOST_IP_NODE192.168.1.140 # ✅ 必须计算节点管理 IPNova-compute 连接 controller 的地址 INTERFACE_IP192.168.1.130 # ✅ 必须Neutron external network 绑定的物理网卡 IP通常与 HOST_IP 同网卡 INTERFACE_NAMEp4p1 # ⚠️ 必须物理网卡名用 ip link show 确认非 eth0/enp0s3 Physical_NAMEprovider # ⚠️ 必须Neutron provider network 名称脚本中用于创建 br-ex BLOCK_DISKsda3 # ⚠️ 必须计算节点上用于 Cinder LVM 的空白分区fdisk -l 确认 STORAGE_LOCAL_NET_IP192.168.1.140 # ✅ 必须计算节点 storage 网络 IP若与管理网分离血泪经验INTERFACE_NAME错配是 Neutron 安装失败的头号原因。例如脚本中ovs-vsctl add-br br-ex ovs-vsctl add-port br-ex p4p1若实际网卡是ens33则br-ex无物理出口neutron-server启动后neutron agent-list显示XXX down。解决方法ip link show查真实网卡名ovs-vsctl show看 bridge 状态tcpdump -i p4p1 port 67 or port 68抓 DHCP 流量验证连通性。3.2 密码策略为什么所有*_PASS都设为000000这不是弱密码倡导而是 IaaS-Xiandian 脚本的硬编码约定DB_PASS000000→ MySQL root 密码iaas-install-mysql.sh中mysqladmin -u root password 000000RABBIT_PASS000000→ RabbitMQ guest 用户密码iaas-install-rabbitmq.sh中rabbitmqctl change_password guest 000000ADMIN_PASS000000→ Keystone admin 用户密码iaas-install-keystone.sh中openstack user create --password 000000 admin。避坑若你擅自改成Admin123iaas-install-glance.sh中openstack endpoint create ... --url http://controller:9292会因 Keystone 认证失败而卡住。脚本不校验密码强度只按固定字符串匹配。生产环境需替换但学习阶段请严格遵循。3.3 网络段规划network_segment_IP与Physical_NAME的协同逻辑network_segment_IP192.168.1.0/24 # ✅ 管理网络 CIDRNova、Neutron agent 通信网段 Physical_NAMEprovider # ✅ provider network 名Neutron 创建 external network 时引用 minvlan2 maxvlan200 # ✅ VLAN ID 范围仅当使用 VLAN provider network 时生效原理说明Physical_NAMEprovider会在iaas-install-neutron-controller.sh中触发ovs-vsctl add-br br-provider ovs-vsctl add-port br-provider $Physical_NAME此时br-provider桥将接管provider网卡的流量。若Physical_NAME错配br-provider无端口neutron net-create --provider:physical_network provider直接报错Provider physical network provider is not associated with any bridge.3.4 配置分发与校验scp不是终点source才是起点控制节点配置好openrc.sh后需分发至计算节点并二次修改# 控制节点执行 scp /etc/xiandian/openrc.sh rootcompute:/etc/xiandian/openrc.sh # 计算节点执行必须 sed -i s/HOST_IP192.168.1.130/HOST_IP192.168.1.140/g /etc/xiandian/openrc.sh sed -i s/INTERFACE_IP192.168.1.130/INTERFACE_IP192.168.1.140/g /etc/xiandian/openrc.sh # 若计算节点网卡名不同还需改 INTERFACE_NAME逻辑说明iaas-pre-host.sh脚本会读取openrc.sh中的HOST_IP来判断本机角色if [ $HOST_IP $HOST_IP_NODE ]; then若未修改计算节点会误执行 controller 脚本导致服务端口冲突。4. 服务安装iaas-install-*.sh脚本链不是黑盒而是可打断、可重入的原子操作IaaS-Xiandian 的核心价值在于其脚本链的可调试性。每个iaas-install-*.sh都是独立 shell 脚本内部有清晰的set -e出错退出、source /etc/xiandian/openrc.sh、yum install、systemctl start、openstackCLI 初始化步骤。它不像 Packstack 那样封装成单个 Python 进程你可以随时CtrlC中断查看日志修复配置再重新执行——这才是工程师该有的掌控感。4.1 安装顺序的底层逻辑为什么必须 controller 先于 computeOpenStack 服务存在强依赖链MySQL/RabbitMQ → Keystone → Glance → Nova-controller → Neutron-controller → Dashboard ↓ Nova-compute → Neutron-computeiaas-install-mysql.sh和iaas-install-rabbitmq.sh必须最先执行为所有服务提供数据与消息总线iaas-install-keystone.sh创建 service project、admin user、endpoint后续所有服务注册都依赖它iaas-install-glance.sh需要 Keystone token 才能openstack image createiaas-install-nova-controller.sh启动nova-api、nova-scheduler但nova-compute服务启动时会向 controller 的nova-api注册故 controller 必须先就绪。实操验证若先执行iaas-install-nova-compute.sh日志/var/log/nova/nova-compute.log会出现ERROR nova.service Unable to establish connection to http://controller:8774/v2.1/os-services此时systemctl status openstack-nova-api必为inactive (dead)。4.2 脚本执行与日志定位哪里出错看哪几行每个脚本执行后必须检查三处脚本自身输出末尾应有Install Success!或类似提示systemd 服务状态systemctl status openstack-keystone # 应 active (running) systemctl status neutron-server # 应 active (running)关键日志文件Keystone/var/log/keystone/keystone.log→ 查Starting Keystone和WSGI启动行Neutron/var/log/neutron/server.log→ 查Neutron server started和Agent RPC connectedNova/var/log/nova/nova-api.log→ 查Starting nova-api和Loaded extension。参数说明iaas-install-keystone.sh中openstack service create --name keystone --description OpenStack Identity identity是服务注册起点若此步失败后续所有openstack endpoint create均报No service with a type, name, or id of identity exists。4.3 Dashboard 安装的隐藏依赖httpd与mod_wsgi的版本陷阱iaas-install-dashboard.sh实际是安装openstack-dashboardHorizon它依赖 Apache HTTP Server (httpd) 和 Python WSGI 模块 (mod_wsgi)。常见翻车点httpd版本过高如 2.4.53与mod_wsgi不兼容导致systemctl start httpd启动失败/etc/httpd/conf.d/openstack-dashboard.conf中WSGIScriptAlias路径错误访问http://controller/dashboard报404 Not Foundlocal_settings.py中OPENSTACK_HOST controller未与/etc/hosts一致。排查命令# 查看 mod_wsgi 是否加载 httpd -M | grep wsgi # 查看 dashboard 配置语法 httpd -t # 查看 apache 错误日志 tail -f /var/log/httpd/error_log4.4 避坑iaas-pre-host.sh与iaas-install-*.sh的执行边界文档要求“前 9 个步骤完成无误后安装 iaas-xiandian 软件包”但新手常忽略iaas-pre-host.sh的作用# iaas-pre-host.sh 核心功能 # 1. 创建 /etc/xiandian 目录 # 2. 拷贝 openrc.sh 模板 # 3. 设置 selinux permissive再次确认 # 4. 关闭 firewalld若启用 # 5. 启动 ntpd确保时间同步Keystone token 依赖时间戳常见问题与解决现象iaas-install-keystone.sh执行到openstack domain create --description An Example Domain example报错Connection refused原因iaas-pre-host.sh未执行firewalld未关闭iptables规则阻断 5000 端口解决systemctl stop firewalld systemctl disable firewalld再重试现象iaas-install-nova-controller.sh中openstack compute service list为空原因iaas-pre-host.sh未执行ntpd未启动controller 与 compute 时间差 5 分钟Keystone token 被拒解决systemctl start ntpd systemctl enable ntpdntpdate controller同步时间现象iaas-install-neutron-controller.sh执行后neutron agent-list显示l3-agent为down原因iaas-pre-host.sh未执行openvswitch服务未启动ovs-vsctl show无 bridge解决systemctl start openvswitch systemctl enable openvswitch5. OpenStack CLI 实战从镜像、网络到虚拟机每条命令背后都是服务协作Dashboard 图形界面只是表象OpenStack 的灵魂在 CLI。文档第 12 节列出的openstack命令本质是调用 Keystone、Glance、Nova、Neutron 的 REST API。理解每条命令触发的服务链才能真正驾驭私有云。5.1 镜像上传Glance 服务的双模式与格式陷阱# 方式一openstack CLI推荐API v3 openstack image create cirros \ --disk-format qcow2 \ --container-format bare \ --file /root/cirros-0.3.3-x86_64-disk.img \ --public # 方式二glance CLIAPI v2兼容旧脚本 glance image-create \ --name cirros \ --disk-format qcow2 \ --container-format bare \ --file /root/cirros-0.3.3-x86_64-disk.img \ --is-public True原理说明--disk-format qcow2指定镜像文件格式QEMU Copy-On-Write--container-format bare表示无元数据封装。若传入 ISO 文件如CentOS-7-x86_64-DVD-1804.isoGlance 会拒绝因 ISO 不是可启动磁盘镜像。--public使镜像对所有 project 可见否则需openstack image set --project demo cirros。5.2 网络拓扑external 与 internal 的隔离本质# 创建 external network物理网络直通 openstack network create --external --provider-network-type flat --provider-physical-network provider ext-net # 创建 internal network租户网络由 Neutron L2 agent 隔离 openstack network create int-net # 创建 external subnet关联物理网关 openstack subnet create --network ext-net --subnet-range 192.168.1.0/24 --gateway 192.168.1.1 --dns-nameserver 114.114.114.114 ext-subnet # 创建 internal subnet租户私有网段 openstack subnet create --network int-net --subnet-range 10.0.0.0/24 --gateway 10.0.0.1 --dns-nameserver 114.114.114.114 int-subnet关键区别--external参数让ext-net被标记为router:externalTrue只有此类网络才能被neutron router-gateway-set绑定为路由器的外部网关。int-net无此标记只能作为内部接口。--provider-network-type flat表示不封装 VLAN直接使用物理网卡带宽。5.3 路由器与浮动 IPSNAT/DNAT 的命令级实现# 创建路由器 openstack router create router # 绑定 external network启用 SNAT openstack router set --external-gateway ext-net --enable-snat router # 添加 internal subnet 接口启用 DNAT openstack router add subnet router int-subnet # 创建浮动 IP从 external subnet 分配 openstack floating ip create ext-net # 绑定浮动 IP 到虚拟机 openstack server add floating ip vm1 192.168.1.150底层机制openstack router set --enable-snat触发 Neutron L3 agent 在br-ex上添加 iptables SNAT 规则-A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.1.130openstack floating ip create在br-ex上添加 DNAT 规则-A PREROUTING -d 192.168.1.150 -j DNAT --to-destination 10.0.0.2假设 vm1 内网 IP 为 10.0.0.2。5.4 云硬盘挂载Cinder 与 Nova 的协同工作流# 创建卷类型Cinder openstack volume type create ssd # 创建云硬盘Cinder openstack volume create --size 1 --type ssd examlv1 # 将云硬盘附加到虚拟机Nova 调用 Cinder API openstack server add volume vm1 examlv1 # 在虚拟机内操作vm1 OS 层 sudo fdisk /dev/vdb # 分区 sudo mkfs.xfs /dev/vdb1 # 格式化 sudo mkdir /data sudo mount /dev/vdb1 /data服务协作openstack server add volume命令触发 Nova-compute 调用 Cinder API 创建 attachmentCinder 通过 iSCSI 或 LVM 将卷映射到计算节点/dev/vdbNova 再通过 libvirt 将该设备透传给虚拟机。ls /dev/vd*在 vm1 内看到/dev/vdb证明透传成功。5.5 常见问题排查CLI 报错的三分钟定位法报错信息可能原因快速定位命令The request you have made requires authentication.Keystone token 过期或admin-openrc.sh未 sourcesource /etc/keystone/admin-openrc.sh openstack token issueNo route to hostNeutron agent 未注册或br-ex未绑定物理网卡neutron agent-list、ovs-vsctl showNo valid host was foundNova-compute 服务 down 或资源不足CPU/RAMnova service-list、nova hypervisor-statsUnable to find volumeCinder-volume 服务未启动或 LVM VG 未创建systemctl status openstack-cinder-volume、vgdisplayFloating ip is not associated虚拟机未运行或网络命名空间未创建nova list、ip netns exec qrouter-xxx ip a提示所有openstack命令加--debug参数可输出完整 HTTP 请求/响应如openstack server list --debug 21 | grep -A 20 REQ:这是定位 API 层问题的终极手段。6. 故障注入与验证用tcpdump和ip netns穿透 OpenStack 网络黑匣子OpenStack 最让人抓狂的不是服务起不来而是服务起来了虚拟机却 ping 不通外网——此时日志里没有 ERROR只有 INFO仿佛一切正常。真正的验证必须跳出 CLI 和 Dashboard用底层工具刺穿网络虚拟化层。我从那以后每次部署完 Neutron都强制走一遍tcpdump抓包 ip netns进入 namespace 查路由这成了我的后悔药。6.1 抓包定位从虚拟机到外网的五段式流量追踪假设 vm110.0.0.2要访问www.baidu.com流量路径为vm1 eth0 → qbr-xxx → qvo-xxx → br-int → qr-xxxrouter namespace→ br-ex → p4p1 → 外网步骤 1在 vm1 内抓包# 进入 vm1 控制台Horizon 或 nova console-log vm1 ping -c 3 www.baidu.com # 在 vm1 内执行 tcpdump -i eth0 icmp -nn # 应看到 ICMP request 发出步骤 2在计算节点 qbr 桥抓包# 计算节点执行qbr 是 Linux bridge连接 vm1 tap 设备 tcpdump -i qbr-xxx icmp -nn # 应看到相同 ICMP request步骤 3在 br-int 桥抓包# br-int 是 OVS integration bridge tcpdump -i br-int icmp -nn # 应看到 request但目的 IP 已被 SNAT 改为 192.168.1.130步骤 4进入 router namespace 抓包# 获取 router namespace 名称 ip netns list | grep qrouter # 进入 namespace假设为 qrouter-abc123 ip netns exec qrouter-abc123 tcpdump -i qr-xxx icmp -nn # qr-xxx 是 router 的 internal interface应看到 SNAT 后的包步骤 5在 br-ex 桥抓包# br-ex 是 OVS external bridge tcpdump -i br-ex icmp -nn # 应看到包从 qr-xxx 流向 qg-xxxrouter external interface关键洞察若步骤 1 有包步骤 2 没包 → vm1 tap 设备未正确 attach 到 qbr若步骤 2 有包步骤 3 没包 → OVS flow table 未命中ovs-ofctl dump-flows br-int查 rule若步骤 3 有包步骤 4 没包 → router namespace 未启用ip netns exec qrouter-xxx ip a查 qr-xxx 是否 UP。6.2 namespace 深度诊断ip netns exec是 Neutron 的 X 光机Neutron 的 router、dhcp、l3 agent 都运行在独立 network namespace 中。ip netns是透视它们的唯一窗口# 查看所有 namespace ip netns list # 进入 dhcp namespace对应 int-net ip netns exec qdhcp-xxx ip a # 应看到 dhcp port如 10.0.0.1UP 状态 # 查看 dhcp namespace 路由 ip netns exec qdhcp-xxx ip route # 应有 default via 10.0.0.1 dev tapxxx # 进入 router namespace ip netns exec qrouter-xxx ip a # 应看到 qr-xxx10.0.0.1和 qg-xxx192.168.1.130两个 interface # 查看 router 路由表 ip netns exec qrouter-xxx ip route # 应有 10.0.0.0/24 via 10.0.0.1 dev qr-xxx 和 default via 192.168.1.1 dev qg-xxx避坑ip netns exec需要iproute2包支持若报command not foundyum install iproute -y。namespace 名称中的xxx是 UUIDneutron router-show router输出的id字段后 12 位。6.3 Cinder LVM 验证绕过 Nova直击存储后端当openstack volume create成功但openstack server add volume失败时问题常在 Cinder 存储后端# 查看 Cinder-volume 服务状态 systemctl status openstack-cinder-volume # 查看 LVM VG 状态 vgdisplay cinder-volumes # 应显示 VG Size 和 Free PE # 查看 Cinder 卷状态 cinder list # 应显示 volume 状态为 available # 在计算节点查看是否识别到卷 ls /dev/mapper/ # 应有 cinder--volumes-volume-xxx 设备 # 手动映射卷到虚拟机模拟 Nova 操作 kpartx -av /dev/mapper/cinder--volumes-volume-xxx # 应输出 add map cinder--volumes-volume-xxxp1原理说明cinder-volume服务将BLOCK_DISKsda3初始化为 LVM PV创建 VGcinder-volumes。cinder create命令在此 VG 中分配 LVnova-compute通过 libvirt 将 LV 作为块设备透传给虚拟机。kpartx命令验证 LV 是否可被内核识别是排除存储层问题的黄金步骤。6.4 Horizon 登录失败的终极排查从 cookie 到 session backendhttp://controller/dashboard打不开常见于httpd服务未启动systemctl status httpdmemcached未启动Horizon session backendsystemctl status memcachedlocal_settings.py中ALLOWED_HOSTS [controller]未包含访问 IP浏览器 cookie 残留导致 CSRF token mismatch。快速修复# 清空 Horizon session rm -rf /var/lib/openstack-dashboard/SESSIONS/* #本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询