Kolla-Ansible 部署 OpenStack + Ceph 完整方案

简介: kolla-ansible

Kolla-Ansible 部署 OpenStack + Ceph 完整方案

一、方案概述

1.1 部署架构

本方案使用 kolla-ansible 以全容器化方式部署 OpenStack 云平台,同时使用 cephadm 部署 Ceph 分布式存储集群作为 OpenStack 的统一后端存储。

┌─────────────────────────────────────────────────────────┐
│                    OpenStack 集群                        │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐                │
│  │Controller│ │Controller│ │Controller│                │
│  │  Node1   │ │  Node2   │ │  Node3   │                │
│  │ Keystone │ │ Keystone │ │ Keystone │                │
│  │ Glance   │ │ Glance   │ │ Glance   │                │
│  │ Nova-API │ │ Nova-API │ │ Nova-API │                │
│  │ Neutron  │ │ Neutron  │ │ Neutron  │                │
│  │ Cinder   │ │ Cinder   │ │ Cinder   │                │
│  │ Horizon  │ │ Horizon  │ │ Horizon  │                │
│  └────┬─────┘ └────┬─────┘ └────┬─────┘                │
│       │            │            │                        │
│  ┌────┴─────┐ ┌────┴─────┐ ┌────┴─────┐                │
│  │ Compute  │ │ Compute  │ │ Compute  │                │
│  │  Node1   │ │  Node2   │ │  Node3   │                │
│  │Nova-Comp │ │Nova-Comp │ │Nova-Comp │                │
│  │ Libvirt  │ │ Libvirt  │ │ Libvirt  │                │
│  └────┬─────┘ └────┬─────┘ └────┬─────┘                │
└───────┼─────────────┼─────────────┼──────────────────────┘
        │             │             │
┌───────┴─────────────┴─────────────┴──────────────────────┐
│                     Ceph 集群                             │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐                 │
│  │   Mon    │ │   Mon    │ │   Mon    │                 │
│  │   Mgr    │ │   Mgr    │ │   Mgr    │                 │
│  │   OSD    │ │   OSD    │ │   OSD    │                 │
│  └──────────┘ └──────────┘ └──────────┘                 │
│                                                           │
│  Pools: images | volumes | vms | backups                 │
└───────────────────────────────────────────────────────────┘

核心设计

  • OpenStack 所有服务运行在 Docker 容器中,由 kolla-ansible 统一管理
  • Ceph 提供 Glance 镜像存储、Cinder 块存储、Nova 虚拟机磁盘存储
  • 采用 3 节点超融合架构,每个节点同时运行 Control/Compute/Network/Ceph 服务
  • HAProxy + Keepalived 提供 VIP 高可用

1.2 节点规划

主机名 管理网 IP 存储网 IP 角色
node1 10.0.0.11 10.0.1.11 Controller + Compute + Network + Ceph(Mon/Mgr/OSD)
node2 10.0.0.12 10.0.1.12 Controller + Compute + Network + Ceph(Mon/Mgr/OSD)
node3 10.0.0.13 10.0.1.13 Controller + Compute + Network + Ceph(Mon/Mgr/OSD)

VIP: 10.0.0.10(管理网浮动 IP,由 Keepalived 管理)

1.3 网络规划

网络类型 网段 VLAN 用途
管理网络 10.0.0.0/24 - OpenStack 内部 API、Ceph 公共网络
存储网络 10.0.1.0/24 - Ceph OSD 副本同步(推荐独立网卡)
外部网络 192.168.1.0/24 - Floating IP、外部访问
租户隧道 10.0.2.0/24 - VXLAN 隧道网络

1.4 磁盘规划

每个节点:

  • /dev/sda (100GB): 系统盘,安装 Ubuntu 24.04
  • /dev/sdb (500GB+): Ceph OSD 数据盘(裸盘,无分区表)
  • /dev/sdc (可选): Ceph WAL/DB 分区盘(SSD 加速)

二、系统环境初始化

以下操作在 所有节点 执行,除非特别说明。

2.1 系统要求

  • 操作系统: Ubuntu 24.04 LTS
  • 内核: 6.8+
  • 最低配置: 16 vCPU / 64GB RAM / 100GB 系统盘 + 500GB 数据盘
  • 推荐配置: 32 vCPU / 128GB RAM / 100GB 系统盘 + 1TB 数据盘

2.2 设置主机名

# node1 上执行
hostnamectl set-hostname node1

# node2 上执行
hostnamectl set-hostname node2

# node3 上执行
hostnamectl set-hostname node3

2.3 配置主机解析

cat > /etc/hosts <<EOF
127.0.0.1   localhost
::1         localhost

10.0.0.11   node1
10.0.0.12   node2
10.0.0.13   node3
EOF

2.4 时间同步

timedatectl set-timezone Asia/Shanghai
apt install -y chrony
systemctl enable --now chrony
chronyc sources -v

2.5 关闭 Swap

swapoff -a
sed -i '/swap/d' /etc/fstab

2.6 内核参数

cat > /etc/sysctl.d/99-openstack.conf <<EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.neigh.default.gc_thresh1 = 4096
net.ipv4.neigh.default.gc_thresh2 = 8192
net.ipv4.neigh.default.gc_thresh3 = 16384
vm.swappiness = 0
vm.overcommit_memory = 1
EOF

modprobe br_netfilter
modprobe overlay
sysctl --system

2.7 安装基础软件

apt update
apt install -y python3-venv python3-pip git curl wget gcc \
  libffi-dev libssl-dev python3-dev lvm2 thin-provisioning-tools

2.8 安装 Docker

# 添加 Docker 仓库
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" \
  > /etc/apt/sources.list.d/docker.list

apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 配置 Docker
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "storage-driver": "overlay2",
  "live-restore": true,
  "userland-proxy": false,
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  }
}
EOF

systemctl daemon-reload
systemctl enable --now docker

2.9 配置 SSH 免密

部署节点(node1) 上执行:

ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519
for host in node1 node2 node3; do
  ssh-copy-id root@${host}
done

验证:

for host in node1 node2 node3; do
  ssh ${host} hostname
done

三、部署 Ceph 集群

以下操作在 node1 上执行,除非特别说明。

3.1 安装 cephadm

apt install -y cephadm ceph-common podman

3.2 引导 Ceph 集群

cephadm bootstrap \
  --mon-ip 10.0.0.11 \
  --cluster-network 10.0.1.0/24 \
  --ssh-private-key /root/.ssh/id_ed25519 \
  --ssh-public-key /root/.ssh/id_ed25519.pub

输出中会包含:

  • Dashboard URL: https://node1:8443/
  • 管理员密码(首次登录后请修改)

3.3 添加其他节点

ceph orch host add node2 10.0.0.12 --labels _admin
ceph orch host add node3 10.0.0.13 --labels _admin

# 验证
ceph orch host ls

3.4 部署 Mon 和 Mgr(高可用)

ceph orch apply mon --placement="node1,node2,node3"
ceph orch apply mgr --placement="node1,node2,node3"

3.5 添加 OSD

# 查看可用磁盘
ceph orch device ls

# 自动使用所有可用裸盘
ceph orch apply osd --all-available-devices

# 或指定磁盘
# ceph orch daemon add osd node1:/dev/sdb
# ceph orch daemon add osd node2:/dev/sdb
# ceph orch daemon add osd node3:/dev/sdb

3.6 验证 Ceph 集群

ceph -s
# 期望输出:
#   health: HEALTH_OK
#   mon: 3 daemons, quorum node1,node2,node3
#   mgr: node1(active), standbys: node2, node3
#   osd: 3 osds: 3 up, 3 in

3.7 创建 OpenStack 存储池

# 创建池
ceph osd pool create images 64
ceph osd pool create volumes 64
ceph osd pool create vms 64
ceph osd pool create backups 64

# 启用 RBD 应用
ceph osd pool application enable images rbd
ceph osd pool application enable volumes rbd
ceph osd pool application enable vms rbd
ceph osd pool application enable backups rbd

# 初始化
rbd pool init images
rbd pool init volumes
rbd pool init vms
rbd pool init backups

3.8 创建 OpenStack 专用 Ceph 用户

# Glance 用户
ceph auth get-or-create client.glance \
  mon 'allow r' \
  osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'

# Cinder 用户
ceph auth get-or-create client.cinder \
  mon 'allow r' \
  osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'

# Cinder-backup 用户
ceph auth get-or-create client.cinder-backup \
  mon 'allow r' \
  osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups'

# Nova 用户
ceph auth get-or-create client.nova \
  mon 'allow r' \
  osd 'allow class-read object_prefix rbd_children, allow rwx pool=vms, allow rwx pool=volumes, allow rx pool=images'

3.9 导出密钥环

ceph auth get client.glance -o /etc/ceph/ceph.client.glance.keyring
ceph auth get client.cinder -o /etc/ceph/ceph.client.cinder.keyring
ceph auth get client.cinder-backup -o /etc/ceph/ceph.client.cinder-backup.keyring
ceph auth get client.nova -o /etc/ceph/ceph.client.nova.keyring

3.10 分发 Ceph 配置到所有节点

for host in node1 node2 node3; do
  ssh ${host} "mkdir -p /etc/ceph"
  scp /etc/ceph/ceph.conf ${host}:/etc/ceph/
  scp /etc/ceph/ceph.client.glance.keyring ${host}:/etc/ceph/
  scp /etc/ceph/ceph.client.cinder.keyring ${host}:/etc/ceph/
  scp /etc/ceph/ceph.client.cinder-backup.keyring ${host}:/etc/ceph/
  scp /etc/ceph/ceph.client.nova.keyring ${host}:/etc/ceph/
done

四、部署节点安装 kolla-ansible

以下操作在 部署节点(node1) 上执行。

4.1 创建虚拟环境

python3 -m venv /opt/kolla-venv
source /opt/kolla-venv/bin/activate
pip install -U pip

4.2 安装依赖

pip install 'ansible-core>=2.15,<2.17'

4.3 安装 kolla-ansible

pip install kolla-ansible==18.0.0

版本说明

kolla-ansible OpenStack 支持的 Ubuntu
18.0.0 2024.1 Caracal 22.04 / 24.04
19.0.0 2024.2 Dalmatian 22.04 / 24.04

4.4 初始化配置目录

mkdir -p /etc/kolla
chown $(id -u):$(id -g) /etc/kolla

cp -r /opt/kolla-venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/
cp /opt/kolla-venv/share/kolla-ansible/ansible/inventory/* /etc/kolla/

4.5 生成密码

kolla-genpwd

密码文件 /etc/kolla/passwords.yml 务必备份。

4.6 自定义管理员密码(可选)

sed -i 's/^keystone_admin_password:.*/keystone_admin_password: Admin@2026/' /etc/kolla/passwords.yml

五、配置 Inventory

编辑 /etc/kolla/multinode

# ============================================================
# 控制平面
# ============================================================
[control]
node1
node2
node3

[network]
node1
node2
node3

[compute]
node1
node2
node3

[monitoring]
node1

# ============================================================
# 存储(使用外部 Ceph,kolla 不管理 Ceph 服务)
# ============================================================
[storage]

# ============================================================
# 数据库与消息队列
# ============================================================
[mariadb:children]
control

[rabbitmq:children]
control

# ============================================================
# OpenStack 核心服务
# ============================================================
[keystone:children]
control

[glance:children]
control

[nova-api:children]
control

[nova-conductor:children]
control

[nova-super-conductor:children]
control

[nova-scheduler:children]
control

[nova-novncproxy:children]
control

[nova-compute:children]
compute

[neutron:children]
network

[cinder-api:children]
control

[cinder-scheduler:children]
control

[cinder-backup:children]
storage

[cinder-volume:children]
storage

[heat:children]
control

[placement:children]
control

[horizon:children]
control

# ============================================================
# 负载均衡与高可用
# ============================================================
[haproxy:children]
network

# ============================================================
# 监控
# ============================================================
[prometheus:children]
monitoring

[grafana:children]
monitoring

六、配置 globals.yml

编辑 /etc/kolla/globals.yml

---
################################################################
# 基础配置
################################################################

kolla_base_distro: "ubuntu"
kolla_install_type: "source"
openstack_release: "2024.1"
kolla_pull_policy: "missing"

################################################################
# 网络配置
################################################################

# 管理网络接口(根据实际网卡名修改,使用 ip addr 查看)
network_interface: "eth0"

# 外部网络接口(Neutron br-ex 绑定,需独立网卡或 VLAN 子接口)
neutron_external_interface: "eth1"

# 隧道网络接口(VXLAN,可与管理网络共用)
tunnel_interface: "eth0"

# VIP 地址(管理网中未被占用的 IP)
kolla_internal_vip_address: "10.0.0.10"

# Keepalived VRID(同一二层域内不能冲突)
keepalived_virtual_router_id: "60"

################################################################
# 启用的服务
################################################################

# 核心服务
enable_haproxy: "yes"
enable_keystone: "yes"
enable_glance: "yes"
enable_nova: "yes"
enable_neutron: "yes"
enable_cinder: "yes"
enable_heat: "yes"
enable_horizon: "yes"
enable_placement: "yes"

# 监控
enable_prometheus: "yes"
enable_grafana: "yes"

# 禁用 kolla 自带 Ceph(使用外部 cephadm 集群)
enable_ceph: "no"
enable_ceph_external: "yes"

################################################################
# Neutron 配置
################################################################

neutron_plugin_type: "ml2"
neutron_ml2_mechanism_drivers: "openvswitch,l2population"
neutron_ml2_type_drivers: "flat,vlan,vxlan"
neutron_ml2_tenant_network_types: "vxlan"
neutron_ml2_extension_drivers: "port_security"

# 外部网络映射(对应 neutron_external_interface)
neutron_bridge_name: "br-ex"
neutron_physical_bridge_mappings: "physnet1:br-ex"

################################################################
# Nova 配置
################################################################

nova_compute_virt_type: "kvm"
nova_backend_ceph: "yes"

################################################################
# Cinder 配置
################################################################

cinder_enabled_backends:
  - name: "ceph"
    enabled: true

################################################################
# Glance 配置
################################################################

glance_backend_file: "no"
glance_backend_ceph: "yes"

################################################################
# 外部 Ceph 配置
################################################################

# FSID(从 ceph -s 获取)
ceph_cluster_fsid: "替换为你的FSID"

# Monitor 地址
ceph_external_mon_host: "10.0.0.11,10.0.0.12,10.0.0.13"

# 存储池
ceph_cinder_pool_name: "volumes"
ceph_cinder_backup_pool_name: "backups"
ceph_glance_pool_name: "images"
ceph_nova_pool_name: "vms"

# Ceph 用户
ceph_cinder_user: "client.cinder"
ceph_cinder_backup_user: "client.cinder-backup"
ceph_glance_user: "client.glance"
ceph_nova_user: "client.nova"

# Ceph 配置路径
ceph_config_dir: "/etc/ceph"

################################################################
# 通用调优
################################################################

openstack_logging_debug: "INFO"
openstack_service_workers: "2"
mariadb_max_connections: "1000"

七、写入 Ceph 密钥到 passwords.yml

source /opt/kolla-venv/bin/activate

# 获取各用户密钥
CINDER_KEY=$(ceph auth get-key client.cinder)
CINDER_BACKUP_KEY=$(ceph auth get-key client.cinder-backup)
GLANCE_KEY=$(ceph auth get-key client.glance)
NOVA_KEY=$(ceph auth get-key client.nova)

# 写入 passwords.yml
sed -i "s/^ceph_cinder_key:.*/ceph_cinder_key: ${CINDER_KEY}/" /etc/kolla/passwords.yml
sed -i "s/^ceph_cinder_backup_key:.*/ceph_cinder_backup_key: ${CINDER_BACKUP_KEY}/" /etc/kolla/passwords.yml
sed -i "s/^ceph_glance_key:.*/ceph_glance_key: ${GLANCE_KEY}/" /etc/kolla/passwords.yml
sed -i "s/^ceph_nova_key:.*/ceph_nova_key: ${NOVA_KEY}/" /etc/kolla/passwords.yml

八、部署 OpenStack

以下操作在 部署节点(node1) 的 kolla-venv 中执行。

8.1 Bootstrap 服务器

kolla-ansible -i /etc/kolla/multinode bootstrap-servers

首次执行,会自动安装 Docker、配置系统参数、创建用户和目录。耗时约 5-10 分钟。

8.2 预检查

kolla-ansible -i /etc/kolla/multinode prechecks

如有报错,按提示修复后重新执行。常见问题:网卡名不匹配、VIP 冲突、磁盘空间不足。

8.3 拉取镜像

kolla-ansible -i /etc/kolla/multinode pull

首次拉取约 30-60 分钟,取决于网络速度。镜像总量约 10-15GB。

国内镜像加速(如拉取缓慢):

# 方法1: 配置 Docker 镜像加速
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://docker.m.daocloud.io"
  ],
  "storage-driver": "overlay2"
}
EOF
systemctl restart docker

# 方法2: 在 globals.yml 中指定镜像仓库
# docker_registry: "你的私有仓库地址"
# docker_namespace: "kolla"

8.4 部署

kolla-ansible -i /etc/kolla/multinode deploy

部署约 20-40 分钟。

8.5 生成 OpenRC 文件

kolla-ansible -i /etc/kolla/multinode post-deploy

生成 /etc/kolla/admin-openrc.sh

8.6 安装 OpenStack CLI

pip install python-openstackclient python-cinderclient python-glanceclient python-neutronclient python-novaclient

九、部署后验证

9.1 检查服务状态

source /etc/kolla/admin-openrc.sh

openstack service list
openstack endpoint list
openstack compute service list
openstack network agent list
openstack volume service list

期望所有服务状态为 UPenabled

9.2 检查容器状态

# 在各节点执行
docker ps --format "table {
   {.Names}}\t{
   {.Status}}" | sort

9.3 检查 Ceph 对接

# 在 Cinder 容器中测试
docker exec cinder_volume rbd --id cinder -p volumes ls

# 在 Glance 容器中测试
docker exec glance_api rbd --id glance -p images ls

十、OpenStack 基础配置

10.1 创建项目和用户

source /etc/kolla/admin-openrc.sh

# 创建项目
openstack project create --description "Demo Project" demo

# 创建用户
openstack user create --password demo@2026 --email demo@example.com demo

# 分配角色
openstack role add --project demo --user demo member

10.2 创建外部网络

# Flat 外部网络(对接物理网络)
openstack network create \
  --provider-network-type flat \
  --provider-physical-network physnet1 \
  --external \
  --share \
  ext-net

openstack subnet create \
  --network ext-net \
  --subnet-range 192.168.1.0/24 \
  --gateway 192.168.1.1 \
  --allocation-pool start=192.168.1.100,end=192.168.1.200 \
  --dns-nameserver 8.8.8.8 \
  ext-subnet

10.3 创建租户网络

openstack network create --project demo tenant-net

openstack subnet create \
  --network tenant-net \
  --subnet-range 10.10.0.0/24 \
  --gateway 10.10.0.1 \
  --dns-nameserver 8.8.8.8 \
  --project demo \
  tenant-subnet

10.4 创建路由器

openstack router create --project demo router1
openstack router set router1 --external-gateway ext-net
openstack router add subnet router1 tenant-subnet

10.5 上传镜像

# 下载 Cirros 测试镜像
wget http://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img

# 上传(自动存储到 Ceph images 池)
openstack image create cirros \
  --file cirros-0.6.2-x86_64-disk.img \
  --disk-format qcow2 \
  --container-format bare \
  --public

# 验证 Ceph 中存在
rbd ls -p images

10.6 创建 Flavor

openstack flavor create --vcpus 1 --ram 512  --disk 10 --public m1.tiny
openstack flavor create --vcpus 2 --ram 2048 --disk 20 --public m1.small
openstack flavor create --vcpus 4 --ram 4096 --disk 40 --public m1.medium
openstack flavor create --vcpus 8 --ram 8192 --disk 80 --public m1.large

10.7 配置安全组

# 默认安全组放行 SSH 和 ICMP
openstack security group rule create default --protocol tcp --dst-port 22 --remote-ip 0.0.0.0/0
openstack security group rule create default --protocol icmp --remote-ip 0.0.0.0/0

10.8 创建测试虚拟机

openstack server create test-vm \
  --image cirros \
  --flavor m1.tiny \
  --network tenant-net \
  --security-group default

# 分配 Floating IP
FLOATING_IP=$(openstack floating ip create ext-net -f value -c floating_ip_address)
openstack server add floating ip test-vm ${FLOATING_IP}

# 验证连通性
openstack server list
ping -c 3 ${FLOATING_IP}
ssh cirros@${FLOATING_IP}

10.9 测试 Cinder 卷

# 创建卷
openstack volume create --size 10 test-vol

# 验证 Ceph 中存在
rbd ls -p volumes

# 挂载到虚拟机
openstack server add volume test-vm test-vol

十一、日常运维

11.1 常用运维命令

# 查看所有容器状态
kolla-ansible -i /etc/kolla/multinode status

# 重启单个服务
docker restart nova_compute
docker restart cinder_volume

# 查看服务日志
docker logs --tail 200 -f nova_compute
docker logs --tail 200 -f cinder_volume
docker logs --tail 200 -f neutron_openvswitch_agent

# 修改配置后重新部署指定服务
kolla-ansible -i /etc/kolla/multinode reconfigure --tags nova
kolla-ansible -i /etc/kolla/multinode reconfigure --tags cinder

11.2 扩容 Compute 节点

# 1. 新节点完成系统初始化(第二章)
# 2. 在 multinode inventory 的 [compute] 组添加新节点
# 3. 执行
kolla-ansible -i /etc/kolla/multinode bootstrap-servers --limit new-node
kolla-ansible -i /etc/kolla/multinode deploy --limit new-node

11.3 升级 OpenStack 版本

# 1. 修改 globals.yml 中的 openstack_release
# 2. 拉取新镜像
kolla-ansible -i /etc/kolla/multinode pull
# 3. 执行升级
kolla-ansible -i /etc/kolla/multinode upgrade

11.4 备份与恢复

# 备份 MariaDB
kolla-ansible -i /etc/kolla/multinode backup --tags mariadb

# 恢复 MariaDB
kolla-ansible -i /etc/kolla/multinode restore --tags mariadb

# 手动备份配置
tar czf kolla-config-$(date +%Y%m%d).tar.gz /etc/kolla/ /etc/ceph/

11.5 Ceph 运维

# 集群状态
ceph -s
ceph health detail

# 存储池使用情况
ceph df
rbd df -p images
rbd df -p volumes

# OSD 状态
ceph osd tree
ceph osd df

# 扩容 OSD(添加新磁盘)
ceph orch daemon add osd node1:/dev/sdc

# Ceph Dashboard
# 访问 https://node1:8443/

十二、常见问题排查

12.1 部署预检查失败 - 网卡名不匹配

现象prechecksnetwork_interface not found

解决

# 查看实际网卡名
ip addr show

# 修改 globals.yml 中的网卡名
# Ubuntu 24.04 可能使用 ens33、enp0s3 等命名
# 也可使用 systemd 预测命名或 udev 规则统一网卡名

12.2 镜像拉取超时

现象pull 阶段大量 timeout 错误

解决

# 配置 Docker 镜像加速
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://docker.m.daocloud.io"
  ]
}
EOF
systemctl restart docker
kolla-ansible -i /etc/kolla/multinode pull

12.3 Neutron 虚拟机无法获取 IP

排查步骤

# 1. 检查 Neutron 代理
openstack network agent list

# 2. 检查 OVS 网桥
ovs-vsctl show
ovs-vsctl list-ports br-ex
ovs-vsctl list-ports br-int

# 3. 检查 DHCP 命名空间
ip netns list
ip netns exec qdhcp-<id> ping 10.10.0.1

# 4. 查看日志
docker logs neutron_openvswitch_agent --tail 200
docker logs neutron_dhcp_agent --tail 200

12.4 Ceph 对接 Cinder 失败

排查步骤

# 1. 检查 Ceph 集群健康
ceph -s

# 2. 检查 Cinder 容器内 Ceph 配置
docker exec cinder_volume cat /etc/ceph/ceph.conf
docker exec cinder_volume cat /etc/ceph/ceph.client.cinder.keyring

# 3. 手动测试连接
docker exec cinder_volume rbd --id cinder -p volumes ls

# 4. 检查密码是否正确
grep ceph_cinder_key /etc/kolla/passwords.yml
ceph auth get-key client.cinder

12.5 Nova 虚拟机启动失败

排查步骤

# 1. 查看错误详情
openstack server show test-vm -f yaml

# 2. 查看 Nova 日志
docker logs nova_compute --tail 200
docker logs nova_scheduler --tail 200

# 3. 检查 libvirt
docker exec nova_libvirt virsh list --all
docker exec nova_libvirt virsh capabilities

# 4. 虚拟机环境中需使用 qemu 而非 kvm
# 在 globals.yml 中设置:
# nova_compute_virt_type: "qemu"

12.6 VIP 不可达

排查步骤

# 1. 检查 Keepalived
docker logs keepalived --tail 50

# 2. 检查 VIP 是否绑定
ip addr show | grep 10.0.0.10

# 3. 检查 HAProxy
docker logs haproxy --tail 50

# 4. 确认 VRID 不冲突
grep virtual_router_id /etc/kolla/globals.yml

十三、生产环境建议

13.1 架构分离

角色 节点数 建议
Controller 3+ 奇数节点,保证数据库 Quorum
Compute 按需 独立于 Controller
Ceph Mon/Mgr 3 奇数节点
Ceph OSD 3+ 每节点至少 1 块专用 SSD/HDD

13.2 安全加固

  • 启用 TLS:kolla_enable_tls_external: "yes"
  • 使用 Fernet Token:keystone_token_provider: "fernet"
  • 配置防火墙,仅开放必要端口
  • 定期轮转密码和 Ceph 密钥
  • 禁用不必要的服务

13.3 监控告警

  • Prometheus + Grafana(kolla-ansible 内置)
  • Ceph Dashboard(cephadm 已部署)
  • 配置 AlertManager 规则
  • 对接企业通知渠道

13.4 备份策略

  • 每日备份 MariaDB(kolla-ansible backup
  • 备份 /etc/kolla 配置目录
  • 备份 /etc/ceph 配置和密钥
  • Ceph RBD 定期快照
  • 使用 Ceph 镜像功能做异地灾备

附录 A:端口清单

服务 端口 说明
Keystone Public 5000 认证 API
Keystone Admin 5001 管理 API
Glance API 9292 镜像服务
Nova API 8774 计算 API
Nova Metadata 8775 元数据
Cinder API 8776 块存储 API
Neutron API 9696 网络 API
Heat API 8004 编排 API
Placement API 8780 资源追踪
Horizon 80/443 Web 控制台
Nova VNC 6080 VNC 控制台
RabbitMQ 5672 消息队列
MariaDB 3306 数据库
HAProxy Stats 1984 负载均衡状态
Ceph Mon 6789/3300 Ceph 监控
Ceph Dashboard 8443 Ceph 管理
Prometheus 9091 监控
Grafana 3000 可视化

附录 B:globals.yml 完整参考

官方文档:https://docs.openstack.org/kolla-ansible/latest/reference/globals.html

附录 C:Ceph PG 计算公式

PG 数 = (OSD 数 × 100) / 副本数 / 池数量

本方案:3 OSD × 100 / 3 副本 / 4 池 ≈ 25 → 取 32(2 的幂次)

生产环境建议每 OSD 100-200 PG,根据实际容量调整。

相关文章
|
5天前
|
缓存 人工智能 安全
GPT-5.6 Terra与GPT-5.5性能实测:成本减半后的跑分对比与快速迁移指南
GPT-5.6 Terra 的定价为每百万 token 输入 2.50/输出 15。GPT-5.5 则是 5/ 30。Terra 的每一项费率,包括 $0.25/M 的缓存读取,都恰好是 GPT-5.5 的一半,因此在任何工作负载组合下,Terra 都固定 便宜 2.0x。以每天 10 万次请求、3K token 提示词计算,大约是 Terra 每天 2,000,GPT−5.5每天 4,000,即每月约 60,000对 120,000。问题在于:OpenAI 没有发布任何针对 Terra 的编码基准。那个著名的 91.9% Terminal-Bench 数字是 Sol 在 Ul
|
5天前
|
人工智能 缓存 JSON
刚刚 GPT-5.6 发布,吊打 Claude 5 和 Grok 4.5?一手实测来啦!
GPT-5.6 刚发布,跑分号称超越 Fable 5,真的假的?附一手实测,让 3 个最强 AI 编程模型 GPT-5.6 Sol、Claude Fable 5、Grok 4.5 在 Cursor 里同时一把梭开发网页游戏,看看最新模型到底谁更能打。
313 0
|
5天前
|
存储 人工智能 JSON
Qwen 本地部署搭配 ComfyUI 生成 AI 漫剧完整实操指南(小白零基础可落地,零成本无限生成+角色一致性天花板)
2026全网最优本地漫剧流水线:零成本、离线运行、角色统一、低配(8G显卡)可跑。融合Qwen本地大模型+ComfyUI双引擎,实现剧本生成→分镜绘图→动态成片全自动,隐私安全、无审核限流,新手30分钟上手,日更无忧。(239字)
|
28天前
|
Linux 程序员 数据格式
【2026最新】Notepad++下载、安装和使用一篇搞定(附中文版安装包)
Notepad++ 是一款免费开源、轻量高效的 Windows 文本编辑器,支持 C/Python/HTML 等 80+ 语言语法高亮、代码折叠、正则替换、编码转换及插件扩展,专为程序员与文本处理用户打造,完美替代系统记事本。(239字)
|
2天前
|
缓存 UED 开发者
Codex109天重置23次,明天还要再送一次
Codex近109天完成23次额度重置,7月14日将迎来第24次。Tibo高频响应用户反馈:优化GPT-5.6高消耗问题、补发失效福利、调整重置时间——形成“反馈→回应→修复→补偿”正向闭环,彰显以用户为中心的产品哲学。(239字)
424 11