传统方式部署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 天前
OpenStack 中的 nova-conductor 与 ironic-conductor 及其分布式锁机制详解
openstack
哈里谢顿5 天前
OpenStack oslo-config 详解
openstack
感哥11 天前
OpenStack Cinder 创建卷
openstack
感哥11 天前
OpenStack Cinder 架构
openstack
感哥11 天前
OpenStack Nova Scheduler 计算节点选择机制
openstack
感哥14 天前
OpenStack Nova 创建虚拟机
openstack
感哥14 天前
OpenStack Glance(镜像)
openstack
感哥14 天前
OpenStack Keystone详解
openstack
哈里谢顿2 个月前
Ironic 中 Clean/deploy Step 延迟执行的原因分析
openstack