传统方式部署OpenStack具体教程

传统部署简介

传统部署就是把 OpenStack 各个服务(Keystone、Glance、Nova、Neutron、Cinder、Horizon 等)直接安装到宿主操作系统并作为系统服务(systemd / apache 等)运行,而不是运行在容器里。优点是理解直观、调试方便;缺点是依赖冲突、升级/回滚更复杂。


前期准备与变量(请先读并替换变量)

  • 操作系统:Ubuntu 22.04 LTS(root 或具 sudo 权限的用户)
  • 控制器主机名:controller(示例)
  • 管理网地址(本机 IP):192.168.100.107(示例,请改为你的)
  • 外部物理网网段:192.168.100.0/24(示例)
  • 替换标记:
    • DB_ROOT_PASS -> MariaDB 根密码(强口令)
    • OPENSTACK_DBPASS -> OpenStack DB 用户密码
    • RABBIT_PASS -> RabbitMQ 用户密码
    • ADMIN_PASS -> Keystone admin 密码
    • SERVICE_PASS -> 通用服务用户密码(glance/nova/neutron/cinder 等,可分别设)

高层步骤概览

  1. 系统更新与基础包
  2. hosts 与时钟同步(chrony)
  3. 数据库(MariaDB)安装与优化
  4. 消息队列(RabbitMQ)安装与用户创建
  5. 缓存(Memcached)安装
  6. 安装并配置 Keystone(身份服务)
  7. 安装并配置 Glance(镜像服务)
  8. 安装并配置 Nova(计算服务)+ Placement
  9. 安装并配置 Neutron(网络服务,使用 linuxbridge 示例)
  10. 安装并配置 Cinder(块存储)
  11. 安装并配置 Horizon(仪表盘)
  12. 上传镜像并启动实例
  13. 如何平滑扩展到多节点

下面逐步展开,每个命令都做注释说明。


1. 系统更新与基础工具

bash 复制代码
sudo apt-get update -y
# 注释:刷新 apt 包索引,获取最新可用包列表。

sudo apt-get upgrade -y
# 注释:把已安装包升级到最新版本,避免因为系统包版本过旧导致后续安装失败。

sudo apt-get install -y software-properties-common curl wget vim git lsb-release
# 注释:安装常见的系统工具(add-apt-repository 所需的 software-properties-common、curl、wget、vim、git、lsb-release)

说明:建议在干净系统上开始,避免残留冲突依赖。


2. 配置 hosts、主机名与时间同步

bash 复制代码
sudo hostnamectl set-hostname controller
# 注释:设置系统主机名为 controller,便于服务间引用与证书/配置一致。

# 把主机名、IP 写入 /etc/hosts(如果单机,写本机即可;多节点时在每台都填写全表)
sudo bash -c 'cat >> /etc/hosts <<EOF
192.168.100.107 controller
127.0.0.1 localhost
EOF'
# 注释:保证本机能解析 controller;多节点部署时要把所有节点都写到每台 /etc/hosts 中。

sudo apt-get install -y chrony
# 注释:安装 chrony 以保证时间同步,OpenStack 对时间一致性敏感(数据库、认证、token 依赖)。
sudo systemctl enable --now chrony
# 注释:启动并设置开机自启。

3. 安装并配置 MariaDB(MySQL)

bash 复制代码
# 安装 MariaDB 服务
sudo apt-get install -y mariadb-server python3-pymysql
# 注释:安装 MariaDB(作为 OpenStack 的关系型数据库)与 python3-pymysql(用于 DB 连接的 Python 驱动)

# 为 OpenStack 创建 MariaDB 优化配置文件,设置 InnoDB 参数等(性能与兼容性)
sudo tee /etc/mysql/mariadb.conf.d/99-openstack.cnf > /dev/null <<'EOF'
[mysqld]
bind-address = 0.0.0.0
default-storage-engine = innodb
innodb_file_per_table = 1
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
# 可按需增加 innodb_buffer_pool_size 等
EOF
# 注释:把数据库绑定到 0.0.0.0 使得其他节点能访问(单机也可),并设置 InnoDB 和字符集;生产时请根据内存调整 innodb_buffer_pool_size。

sudo systemctl restart mariadb
# 注释:重启 MariaDB,应用新配置。

# 设置 MariaDB 的 root 密码与安全(交互方式也可用 mysql_secure_installation)
sudo mysql -u root <<SQL
ALTER USER 'root'@'localhost' IDENTIFIED BY 'DB_ROOT_PASS';
FLUSH PRIVILEGES;
SQL
# 注释:为 MariaDB root 设置密码(将 DB_ROOT_PASS 替换成实际密码)。 
#        若你的系统使用 unix_socket 验证(sudo mysql 无需密码),这一步将改为密码认证。

在 MariaDB 中为 OpenStack 创建数据库与用户

bash 复制代码
sudo mysql -u root -pDB_ROOT_PASS <<SQL
CREATE DATABASE keystone;
CREATE DATABASE glance;
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
CREATE DATABASE placement;
CREATE DATABASE neutron;
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'OPENSTACK_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'OPENSTACK_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'OPENSTACK_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'OPENSTACK_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'OPENSTACK_DBPASS';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'OPENSTACK_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'OPENSTACK_DBPASS';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'OPENSTACK_DBPASS';
FLUSH PRIVILEGES;
SQL
# 注释:
# 1) 建立各个服务所需的数据库(keystone、glance、nova 等)。
# 2) 把数据库访问权限授予对应的数据库用户(示例统一用 OPENSTACK_DBPASS,可为每个服务设不同密码)。
# 3) '%' 表示允许任意主机访问;多节点时各节点通过网络访问 DB。若单机且你想更安全可改成 'controller'。

4. 安装与配置 RabbitMQ(消息队列)

bash 复制代码
sudo apt-get install -y rabbitmq-server
# 注释:安装 RabbitMQ,它作为 OpenStack 组件间的异步消息总线(RPC / 通知)。

# 为 OpenStack 创建用户并赋权
sudo rabbitmqctl add_user openstack RABBIT_PASS
# 注释:创建名为 openstack 的 RabbitMQ 用户,密码为 RABBIT_PASS(替换为你的密码)。

sudo rabbitmqctl set_permissions openstack ".*" ".*" ".*"
# 注释:给 openstack 用户赋予对虚拟主机 / 的全部配置、写、读权限。生产可细化。

# 可选:启用管理插件便于查看(web 管理 UI)
sudo rabbitmq-plugins enable rabbitmq_management
sudo systemctl restart rabbitmq-server
# 注释:启用管理插件后可以通过 15672 端口访问管理界面(默认 guest:guest 限 localhost)。

5. 安装 Memcached(缓存)与 Keystone 依赖

bash 复制代码
sudo apt-get install -y memcached python3-memcache
# 注释:安装 memcached 作为 session/token 缓存(Keystone 等服务会使用)。

# 修改 memcached 监听地址(若多节点希望 controller 对外提供 memcached)
sudo sed -i "s/-l 127.0.0.1/-l 0.0.0.0/" /etc/memcached.conf
sudo systemctl restart memcached
# 注释:把 memcached 绑定到 0.0.0.0 以允许远程节点访问。单机可以保留默认 localhost。

6. 安装 Keystone(身份认证服务)

6.1 安装包与配置

bash 复制代码
sudo apt-get install -y keystone apache2 libapache2-mod-wsgi-py3
# 注释:安装 Keystone 及依赖的 Apache WSGI 模块(Keystone 提供 HTTP API,通常通过 Apache 承载)。

编辑 /etc/keystone/keystone.conf(展示关键片段并解释):

plain 复制代码
[database]
connection = mysql+pymysql://keystone:OPENSTACK_DBPASS@controller/keystone
# 注释:Keystone 使用的数据库连接;格式为 mysql+pymysql://<user>:<pass>@<host>/<dbname>

[token]
provider = fernet
# 注释:token 存取方式,推荐使用 fernet(轻量且安全),需要后续初始化。

6.2 初始化 DB、token、bootstrap

bash 复制代码
sudo su -s /bin/sh -c "keystone-manage db_sync" keystone
# 注释:把 Keystone 的数据库 schema 初始化到 keystone 数据库。

sudo keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# 注释:初始化 fernet key,用于 token 的对称加/解密。

sudo keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
# 注释:初始化服务凭证存储(用于某些服务的加密存储)。

sudo keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://controller:5000/v3 \
  --bootstrap-internal-url http://controller:5000/v3 \
  --bootstrap-public-url http://controller:5000/v3 \
  --bootstrap-region-id RegionOne
# 注释:创建 admin 项目、admin 用户、默认角色并注册基本 endpoint(将 ADMIN_PASS 替换成你的 admin 密码)。

6.3 配置 Apache WSGI(使 Keyston API 可用)

bash 复制代码
# 通常 keystone 的 install 脚本会在 /etc/apache2/sites-available/ 下生成配置,启用并重载:
sudo a2enmod wsgi
sudo systemctl restart apache2
# 注释:确保 Apache 已启用 WSGI 模块并启动,使 Keystone 的 HTTP API 可访问。

6.4 创建 demo 项目与用户(示例)

bash 复制代码
# 使用临时环境变量访问 openstack cli(bootstrap 后生成的 admin-openrc)
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
# 注释:设置环境变量以便使用 openstack client 调用 Keystone(在单机测试中临时设置)。

# 创建 demo 项目、demo 用户、赋予 admin role(示例)
openstack project create --domain default --description "Demo Project" demo
openstack user create --domain default --password-prompt demo
# 注释:若创建 demo 用户后会提示输入密码;也可使用 --password PASSWORD
openstack role add --project demo --user demo member

说明:Keystone 配置完成后,后续服务(glance、nova、neutron 等)都要在 Keystone 中注册各自 service 和 endpoint,示例会在每个服务安装段说明。


7. 安装 Glance(镜像服务)

bash 复制代码
sudo apt-get install -y glance
# 注释:安装 glance server(包括 API 与 registry)。

编辑 /etc/glance/glance-api.conf/etc/glance/glance-registry.conf,关键配置示例:

plain 复制代码
[database]
connection = mysql+pymysql://glance:OPENSTACK_DBPASS@controller/glance
# 注释:glance 使用的数据库连接

[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = SERVICE_PASS
# 注释:keystone 认证段,glance 用 service/glance 账号在 keystone 中认证

初始化数据库并重启服务:

bash 复制代码
sudo su -s /bin/sh -c "glance-manage db_sync" glance
# 注释:创建 glance 数据库表结构。

sudo systemctl restart glance-api glance-registry
# 注释:重启 Glance 服务使配置生效。

在 Keystone 中注册 glance 服务与 endpoint(若你习惯用 CLI):

bash 复制代码
openstack user create --domain default --password SERVICE_PASS glance
openstack role add --project service --user glance admin
openstack service create --name glance --description "OpenStack Image" image
openstack endpoint create --region RegionOne image public http://controller:9292
openstack endpoint create --region RegionOne image internal http://controller:9292
openstack endpoint create --region RegionOne image admin http://controller:9292
# 注释:注册 glance 的 service 和三类 endpoint(public/internal/admin)。

上传一个测试镜像(Cirros 示例):

bash 复制代码
# 下载 cirros 镜像(可替换为本地 qcow2)
wget -O /tmp/cirros-0.6.2-x86_64-disk.img \
  https://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img
# 注释:获取用于测试的极小镜像 cirros

openstack image create "cirros" --file /tmp/cirros-0.6.2-x86_64-disk.img \
  --disk-format qcow2 --container-format bare --public
# 注释:把镜像上传到 Glance,并设为 public(所有租户可用)。

说明:若你在内网无法直接下载 cirros,请在能上网的机器上下载后 SCP 到 controller。


8. 安装 Placement(资源调度)与 Nova(计算)

8.1 安装 Placement API

bash 复制代码
sudo apt-get install -y placement-api
# 注释:Placement 服务负责资源登记/调度(供 Nova 查询物理资源)。

编辑 /etc/placement/placement.conf,关键片段:

plain 复制代码
[database]
connection = mysql+pymysql://placement:OPENSTACK_DBPASS@controller/placement

[api]
auth_strategy = keystone

[keystone_authtoken]
auth_url = http://controller:5000
www_authenticate_uri = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = placement
password = SERVICE_PASS

然后初始化 DB 并重启:

bash 复制代码
sudo su -s /bin/sh -c "placement-manage db sync" placement
sudo systemctl restart apache2
# 注释:placement 通过 apache WSGI 提供 API;重启 apache 以使 placement 生效。

在 Keystone 注册 placement service & endpoints:

bash 复制代码
openstack user create --domain default --password SERVICE_PASS placement
openstack role add --project service --user placement admin
openstack service create --name placement --description "Placement API" placement
openstack endpoint create --region RegionOne placement public http://controller:8778
openstack endpoint create --region RegionOne placement internal http://controller:8778
openstack endpoint create --region RegionOne placement admin http://controller:8778

8.2 安装 Nova(控制节点部分:API/Conductor/Scheduler 等)

bash 复制代码
sudo apt-get install -y nova-api nova-conductor nova-consoleauth nova-novncproxy nova-scheduler
# 注释:安装 Nova 的控制面服务(API、调度、conductor、vnc proxy 等)。

编辑 /etc/nova/nova.conf(关键节选并解释):

plain 复制代码
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller/
# 注释:rabbitmq 的连接字符串,消息队列地址

auth_strategy = keystone
my_ip = 192.168.100.107
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[api_database]
connection = mysql+pymysql://nova:OPENSTACK_DBPASS@controller/nova_api

[database]
connection = mysql+pymysql://nova:OPENSTACK_DBPASS@controller/nova

[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
username = placement
password = SERVICE_PASS
auth_url = http://controller:5000
# 注释:placement 与 nova 的认证/DB/rabbit/本机 IP 配置

初始化 nova DB(api & main)并同步:

bash 复制代码
sudo su -s /bin/sh -c "nova-manage api_db sync" nova
sudo su -s /bin/sh -c "nova-manage cell_v2 map_cell0 --database_connection mysql+pymysql://nova:OPENSTACK_DBPASS@controller/nova_cell0" nova || true
sudo su -s /bin/sh -c "nova-manage db sync" nova
# 注释:
# - first sync api DB;
# - 创建 cell0 映射(cell v2 架构所需);
# - 主 DB 同步。
# 注意:若命令报错请确保数据库已创建且连接字符串正确。

sudo systemctl restart nova-api nova-conductor nova-consoleauth nova-novncproxy nova-scheduler
# 注释:重启 Nova 控制面服务。

说明:单机情况下,compute 进程也可以安装在同一台机器(下一节示例)。cell 映射在多节点非常关键,单机也要创建 cell0。


9. 安装 Nova-compute(在单机就是在同一台机上启 compute)

bash 复制代码
sudo apt-get install -y nova-compute
# 注释:安装 nova-compute,用于在宿主机上管理虚拟机(KVM)。

# 编辑 /etc/nova/nova.conf 中:
# [DEFAULT] my_ip = 192.168.100.107
# [vnc] enabled = True; vncserver_listen = 0.0.0.0; vncserver_proxyclient_address = $my_ip
# [libvirt] virt_type = kvm
# [placement] (如上)等项

# 启用并重启 libvirt 与 nova-compute
sudo systemctl enable --now libvirtd
sudo systemctl enable --now nova-compute
# 注释:libvirt 提供 KVM 管理,nova-compute 连接 libvirt 启动虚拟机。

注意:宿主机需支持 VT-x/AMD-V,且启用 KVM。若是虚拟化环境(nested virtualization),请先保障 hypervisor 支持嵌套虚拟化。


10. 安装 Neutron(linuxbridge 方案示例)

bash 复制代码
sudo apt-get install -y neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
# 注释:安装 neutron server 与 linuxbridge(及 dhcp、metadata)相关 agent。

# 编辑 /etc/neutron/neutron.conf,关键片段:
[database]
connection = mysql+pymysql://neutron:OPENSTACK_DBPASS@controller/neutron

DEFAULT.transport_url = rabbit://openstack:RABBIT_PASS@controller/
# [keystone_authtoken] 填写 keystone 认证信息(类似之前 glance/nova)
# 注释:neutron 的 DB、rabbit、keystone 认证配置必须正确

# 编辑 /etc/neutron/plugins/ml2/ml2_conf.ini:
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge

[ml2_type_flat]
flat_networks = external

[linux_bridge]
physical_interface_mappings = external:ens34
# 注释:把外部物理网络 ens34 映射为物理网络 external

[securitygroup]
enable_ipset = True
firewall_driver = <some ps> # linuxbridge 常用 Noop firewall 或 linuxbridge 的自带

配置 metadata agent 与 nova 之间的共享 secret:

bash 复制代码
# 在 /etc/neutron/metadata_agent.ini 中设置 nova_metadata_host = controller
# 并确保在 /etc/nova/nova.conf 中配置 metadata proxy shared secret:
# [neutron] metadata_proxy_shared_secret = SHARED_SECRET

sudo systemctl restart neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
# 注释:重启 neutron 服务使配置生效。

说明:linuxbridge 方案避免 OVS/OVN 的复杂,但仍需确保桥接与宿主网卡映射正确。physical_interface_mappings 一定要写对物理网卡名(用 ip a 验证)。


11. 安装 Cinder(块存储)

bash 复制代码
sudo apt-get install -y cinder-api cinder-scheduler
# 注释:安装 Cinder 控制面组件;块存储后端(LVM、NFS 等)可在单机测试时使用本地 LVM。

# 以 LVM 为例:创建后端卷组
sudo apt-get install -y lvm2
sudo pvcreate /dev/sdb
sudo vgcreate cinder-volumes /dev/sdb
# 注释:/dev/sdb 为用于做块存储的磁盘,替换为真实设备;此步骤会擦除该盘数据。

# 编辑 /etc/cinder/cinder.conf,配置数据库、rabbit、keystone、以及 backend driver(lvm);然后初始化 db:
sudo su -s /bin/sh -c "cinder-manage db sync" cinder
sudo systemctl restart cinder-scheduler cinder-api

说明:Cinder 后端有很多选择(LVM,Ceph,NFS 等),生产常用 Ceph。单机演示用 LVM 更简单,但生产上请慎重。


12. 安装 Horizon(Dashboard 仪表盘)

bash 复制代码
sudo apt-get install -y openstack-dashboard
# 注释:安装 Horizon(通常由 Apache 托管,并在 80 端口提供 Web UI)。

# 编辑 /etc/openstack-dashboard/local_settings.py 配置 Keystone 认证 URL、ALLOWED_HOSTS 等,或保持默认并重启 apache:
sudo systemctl restart apache2
# 注释:重启 apache,使 Horizon 可访问。

访问地址(浏览器):

plain 复制代码
http://controller/
# 注释:Horizon 默认在 80 端口;登录用 admin/ADMIN_PASS(与 Keystone admin 密码一致)

13. 验证:创建网络、实例等(与 Kolla 部分类似)

bash 复制代码
# 设置 admin 环境变量(或 source admin-openrc)
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_PROJECT_NAME=admin
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3

# 创建 flavor、网络、subnet、router、上传镜像、创建实例:
openstack flavor create --ram 512 --disk 10 --vcpus 1 small
openstack network create int-net
openstack subnet create --network int-net --subnet-range 10.0.0.0/24 int-subnet
openstack router create demo-router
openstack router add subnet demo-router int-subnet
openstack image create cirros --file /tmp/cirros.img --disk-format qcow2 --container-format bare --public
openstack server create --flavor small --image cirros --network int-net vm1

说明:若 VM 无法 DHCP 或无法访问外网,请检查 neutron/dhcp agent、linuxbridge 配置与外部网卡映射。


14. 日志与排错(常用命令)

bash 复制代码
# 查看某服务日志(systemd)
sudo journalctl -u nova-compute -n 200 --no-pager
# 注释:查看 nova-compute 最近 200 行日志,便于排错。

# 查看 neutron 服务日志(通常在 /var/log/neutron)
sudo tail -n 200 /var/log/neutron/neutron-server.log
# 注释:直接查看文件日志(如果不走 systemd)。

# 验证数据库连接(示例)
mysql -u nova -pOPENSTACK_DBPASS -h controller -e "SHOW TABLES;" nova
# 注释:从命令行验证某服务用户是否能连接对应的数据库。

15. 如何从单机平滑扩展到多节点(要点,总结)

  1. 中心化 DB / MQ / Memcached / Keystone :在多节点环境中,通常把数据库(MariaDB)、RabbitMQ、Memcached、Keystone 保持在控制节点(或 HA),其它节点通过网络访问这些服务。
    • 单机部署时我们已经把 DB & MQ 等配置成可以 0.0.0.0%,这会让其他节点能直接访问,便于扩展。
  2. 把 compute 独立到新机器 :在新机器上安装 nova-computelibvirtqemu-kvmneutron-linuxbridge-agent(或 OVS/OVN agent),并在其 nova.confneutron.conf 中把 transport_url、数据库连接指向 controller 的 DB、RabbitMQ。
    • 关键点:my_ip(compute 的管理 IP)设置要正确;vnc 的 proxyclient 地址可能要指向 nova vnc proxy。
  3. 网络 agent 分布 :neutron 的 dhcp agentl3 agent 可以放在控制节点,也可以放到专用网络节点。linuxbridge 的 physical_interface_mappings 在每台网络节点上要正确映射到对应的物理网卡。
  4. 服务注册与 endpoint:多节点不需要重新注册 service/endpoint(已经在 Keystone 中),只需保证各节点的配置文件使用正确的 Keystone URL 与 service 账户密码。
  5. 安全与防火墙:打开控制节点与 compute 节点间所需端口(数据库 3306、rabbitmq 5672、memcached 11211、Nova libvirt 16509/16514(可通过 libvirt socket)、VNC 端口范围等)。
  6. 测试迁移:在新 compute 上启动一个实例,确认 DHCP、floating ip、SSH 等功能都正常,再把生产流量迁移过来。

16. 常见坑与建议(来自国内生产经验)

  • 网络连通 & DNS/hosts :很多问题源于 hosts 写错或管理网卡名称填错(ens33enp0s3等)。先用 ip a 确认网卡名称。
  • 锁定包源与版本:在国内务必使用镜像站(清华、阿里、华为)或提前把包下载好;OpenStack 组件版本混用会导致兼容问题。
  • 测试镜像:如果外网不可达,把 cirros/ubuntu-cloud-image 预先下载并放到本地 Glance。
  • 日志排错:先看服务日志(systemd 日志和 /var/log/*),错误通常能直接定位 DB 连接、MQ 连接或 keystone 认证失败。
  • 生产建议:传统部署适合对每个组件细粒度控制、或有特殊后端(比如 Ceph、专有存储)时使用,但运维复杂,推荐在生产环境考虑自动化/容器化(如 Kolla)或使用上游发行版的 OpenStack 包。
相关推荐
哈里谢顿1 个月前
Ironic 中 Clean/deploy Step 延迟执行的原因分析
openstack
哈里谢顿1 个月前
ironic中为什么 IPMI Hardware Type 必须支持 IPMIManagement
openstack
哈里谢顿2 个月前
Ironic 中各个接口的作用详解
openstack
CZIDC2 个月前
博客摘录「 华为云平台-FusionSphere OpenStack 8.2.1 系统加固」2025年7月15日
linux·服务器·笔记·华为云·openstack
行止62 个月前
OpenStack云平台管理
linux·openstack
曼汐 .2 个月前
私有云平台实战-OpenStack
openstack
哈里谢顿2 个月前
python的Mixin设计模式学习,以ironic-python-agent代码为例
openstack
曼汐 .2 个月前
私有云平台实战-OpenStack入门体验
openstack
果子⌂2 个月前
OpenStack入门体验
openstack