前言
很多人学习OpenStack时,最困惑的问题就是:控制节点和计算节点到底是什么?有什么区别?
今天我用最通俗的话,让你彻底搞懂这两个概念。
一、用餐厅比喻理解控制节点和计算节点
1.1 想象一下餐厅是怎么工作的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
┌─────────────────────────────────────────────────────────────────┐
│ │
│ 餐 厅 │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 控 制 节 点 │ │
│ │ (后厨) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 👨🍳 厨师长 ← 接收订单,决定谁来炒菜 │ │
│ │ 📋 订单系统 ← 记录所有客人点了什么菜 │ │
│ │ 📦 食材仓库 ← 管理所有食材库存 │ │
│ │ 🚚 配菜员 ← 把做好的菜传给服务员 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 计 算 节 点 │ │
│ │ (灶台) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 🔥 灶台1 ← 实际炒菜的地方 │ │
│ │ 🔥 灶台2 ← 实际炒菜的地方 │ │
│ │ 🔥 灶台3 ← 实际炒菜的地方 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
关键点:
- 控制节点(后厨):不动手炒菜,只负责指挥、记录、调度
- 计算节点(灶台):不动脑子,只负责执行、干活、出力
1.2 OpenStack就是一间云餐厅
| 餐厅角色 |
OpenStack角色 |
干什么 |
| 厨师长 |
控制节点 |
接收请求,决定任务分配 |
| 订单系统 |
Nova-API |
接收创建虚拟机的请求 |
| 食材仓库 |
Glance |
存放虚拟机镜像 |
| 配菜员 |
Neutron |
把网络连接好传给虚拟机 |
| 灶台 |
计算节点 |
真正运行虚拟机的地方 |
二、控制节点详解
2.1 控制节点是什么?
控制节点就是OpenStack的"大脑"和"管理者"。
它不运行虚拟机,它只负责:
- 接收你的请求(创建虚拟机、创建网络等)
- 保存所有数据(数据库)
- 调度任务(决定在哪个计算节点运行)
- 管理整个系统
2.2 控制节点的核心组件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
┌─────────────────────────────────────────────────────────────────┐
│ 控制节点 │
│ (不动手,只动嘴) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 🧠 大脑(管理所有组件) │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Keystone │ │ Nova │ │ Neutron │ │ │
│ │ │ 门卫 │ │ 调度员 │ │ 交通警 │ │ │
│ │ │ 验证身份 │ │ 分配任务 │ │ 管理网络 │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Glance │ │ Placement │ │ │
│ │ │ 仓库管理员│ │ 资源统计员 │ │ │
│ │ │ 管理镜像 │ │ 盘点资源 │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 📦 数据库(记忆) │ │
│ │ MySQL - 记住所有虚拟机、网络、用户的信息 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 📬 消息队列(传话) │ │
│ │ RabbitMQ - 控制节点和计算节点之间传递消息 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
2.3 控制节点各组件职责
| 组件 |
通俗比喻 |
职责 |
| Keystone |
前台/门卫 |
验证用户身份,发放"工作证" |
| Nova-API |
接线员 |
接收创建虚拟机的请求 |
| Nova-Scheduler |
调度员 |
决定虚拟机放在哪个计算节点 |
| Nova-Conductor |
助理 |
安全地访问数据库 |
| Glance |
仓库管理员 |
管理虚拟机镜像(模板) |
| Neutron-Server |
交通局长 |
管理网络规则 |
| Placement |
会计 |
统计资源使用情况 |
| Horizon |
客服 |
Web界面,让用户操作 |
2.4 控制节点不能做什么?
控制节点不运行虚拟机!
就像厨师长不会亲自颠勺一样,控制节点:
- ❌ 不运行KVM
- ❌ 不创建虚拟机实例
- ❌ 不占用大量计算资源
控制节点很"闲"吗?
不!它很忙:
- 处理海量API请求
- 调度任务
- 管理数据库
- 监控所有计算节点
三、计算节点详解
3.1 计算节点是什么?
计算节点就是OpenStack的"苦力"。
它只负责一件事:
3.2 计算节点的核心组件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
┌─────────────────────────────────────────────────────────────────┐
│ 计算节点 │
│ (只动手,不用脑) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 🔥 灶台(运行虚拟机的机器) │ │
│ │ │ │
│ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │
│ │ │虚拟机1 │ │虚拟机2 │ │虚拟机3 │ ← 真正干活的 │ │
│ │ │ Ubuntu │ │ CentOS │ │ Windows│ │ │
│ │ └────────┘ └────────┘ └────────┘ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ ┌────────────────────────────────────────┐ │ │
│ │ │ KVM/QEMU 虚拟化引擎 │ │ │
│ │ │ (灶台的火,让虚拟机跑起来) │ │ │
│ │ └────────────────────────────────────────┘ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ ┌────────────────────────────────────────┐ │ │
│ │ │ 物理服务器硬件 │ │ │
│ │ │ CPU: 32核心 内存: 128GB 硬盘: 2TB │ │ │
│ │ └────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 📡 网络代理(连接虚拟机的网线) │ │
│ │ neutron-linuxbridge-agent 或 neutron-openvswitch-agent │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
3.3 计算节点的组件
| 组件 |
通俗比喻 |
职责 |
| nova-compute |
灶台工 |
接收指令,创建/管理虚拟机 |
| neutron-agent |
网线工 |
把虚拟机接入网络 |
| libvirtd |
灶台开关 |
KVM的管理服务 |
3.4 计算节点需要什么?
计算节点的核心是:KVM
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
┌─────────────────────────────────────────────────────────────────┐
│ 计算节点灵魂 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1️⃣ 硬件虚拟化支持(CPU必须支持VT-x或AMD-V) │
│ └── 让CPU可以"一分多用" │
│ │
│ 2️⃣ KVM(Kernel-based Virtual Machine) │
│ └── Linux内核的虚拟化模块 │
│ │
│ 3️⃣ QEMU │
│ └── 模拟硬件,让虚拟机以为自己有独立硬件 │
│ │
│ 4️⃣ libvirt │
│ └── 管理KVM的工具,提供API │
│ │
└─────────────────────────────────────────────────────────────────┘
|
3.5 计算节点不需要什么?
计算节点很"单纯":
- ❌ 不需要MySQL数据库
- ❌ 不需要RabbitMQ
- ❌ 不需要Keystone
- ❌ 不需要Glance镜像服务
- ❌ 不需要API服务
计算节点只需要:nova-compute + neutron-agent + KVM
四、控制节点 vs 计算节点对比
4.1 一张图看懂区别
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
┌─────────────────────────────────────────────────────────────────┐
│ 控制节点 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 📊 数据库(MySQL) ← 有 │
│ 📬 消息队列(RabbitMQ) ← 有 │
│ 🔐 身份认证(Keystone) ← 有 │
│ 📋 API服务 ← 有 │
│ 🔧 调度器 ← 有 │
│ 🖥️ 运行虚拟机(KVM) ← 没有! │
│ │
│ CPU需求:中等(4-8核) │
│ 内存需求:中等(8-16GB) │
│ 磁盘需求:中等(100GB) │
│ │
└─────────────────────────────────────────────────────────────────┘
⬆️ 指挥 ⬆️
┌─────────────────────────────────────────────────────────────────┐
│ 计算节点 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 📊 数据库(MySQL) ← 没有 │
│ 📬 消息队列(RabbitMQ) ← 没有 │
│ 🔐 身份认证(Keystone) ← 没有 │
│ 📋 API服务 ← 没有 │
│ 🔧 调度器 ← 没有 │
│ 🖥️ 运行虚拟机(KVM) ← 有!必须! │
│ │
│ CPU需求:高(8-32核) │
│ 内存需求:高(16-128GB) │
│ 磁盘需求:高(500GB+,看虚拟机数量) │
│ │
└─────────────────────────────────────────────────────────────────┘
|
4.2 核心对比表
| 对比项 |
控制节点 |
计算节点 |
| 定位 |
管理者/大脑 |
执行者/肌肉 |
| 运行KVM |
❌ 不运行 |
✅ 必须运行 |
| 数据库 |
✅ 必须有 |
❌ 不需要 |
| API |
✅ 必须有 |
❌ 不需要 |
| 内存需求 |
8-16GB |
16-128GB |
| CPU需求 |
中等 |
高 |
| 磁盘需求 |
中等(100GB) |
高(存储虚拟机) |
| 网络需求 |
较低 |
较高 |
| 数量 |
1-3台 |
可多台 |
| 可扩展性 |
有限 |
灵活扩展 |
五、物理服务器部署实战
5.1 两台物理服务器的架构
现在我们来实际部署:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
┌─────────────────────────────────────────────────────────────────┐
│ 物理服务器1:控制节点 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 硬件配置: │
│ ├── CPU:8核心 │
│ ├── 内存:16GB │
│ ├── 磁盘:256GB SSD(系统盘) │
│ └── 网卡:2块(1块管理,1块VM网络) │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 安装的服务: │ │
│ │ │ │
│ │ ✅ MySQL(数据库) │ │
│ │ ✅ RabbitMQ(消息队列) │ │
│ │ ✅ Keystone(身份认证) │ │
│ │ ✅ Nova-API(API服务) │ │
│ │ ✅ Nova-Scheduler(调度器) │ │
│ │ ✅ Nova-Conductor(数据库中介) │ │
│ │ ✅ Placement(资源统计) │ │
│ │ ✅ Glance(镜像服务) │ │
│ │ ✅ Neutron-Server(网络服务) │ │
│ │ ✅ Neutron-Agent(网络代理) │ │
│ │ ✅ Horizon(Web界面) │ │
│ │ ✅ Apache/Nginx(Web服务器) │ │
│ │ │ │
│ │ ❌ nova-compute(不运行KVM!) │ │
│ │ ❌ 虚拟机(不在这里运行!) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
⬆️
网络通信/调度
⬇️
┌─────────────────────────────────────────────────────────────────┐
│ 物理服务器2:计算节点 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 硬件配置: │
│ ├── CPU:16核心(支持VT-x) │
│ ├── 内存:64GB │
│ ├── 磁盘:256GB SSD(系统盘)+ 2TB HDD(数据盘) │
│ └── 网卡:2块(1块管理,1块VM网络) │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 安装的服务: │ │
│ │ │ │
│ │ ✅ KVM/QEMU(虚拟化引擎) │ │
│ │ ✅ Libvirt(虚拟化管理) │ │
│ │ ✅ nova-compute(计算服务) │ │
│ │ ✅ neutron-linuxbridge-agent(网络代理) │ │
│ │ │ │
│ │ ❌ MySQL(不需要) │ │
│ │ ❌ RabbitMQ(不需要) │ │
│ │ ❌ Keystone(不需要) │ │
│ │ ❌ 所有API服务(不需要) │ │
│ │ ❌ Horizon(不需要) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 运行的虚拟机: │ │
│ │ │ │
│ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │
│ │ │虚拟机1 │ │虚拟机2 │ │虚拟机3 │ ... │ │
│ │ │ 2vCPU │ │ 4vCPU │ │ 2vCPU │ │ │
│ │ │ 4GB RAM│ │ 8GB RAM│ │ 4GB RAM│ │ │
│ │ └────────┘ └────────┘ └────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
5.2 完整的通信流程
当你创建一台虚拟机时,发生了什么?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
┌─────────────────────────────────────────────────────────────────┐
│ 创建虚拟机的流程 │
└─────────────────────────────────────────────────────────────────┘
1️⃣ 用户请求
│
▼
┌─────────────────────────────────────┐
│ 物理服务器1(控制节点) │
│ │
│ ┌───────────────────────────────┐ │
│ │ ① Horizon/Web界面接收请求 │ │
│ └───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────┐ │
│ │ ② Nova-API 接收创建指令 │ │
│ └───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────┐ │
│ │ ③ Glance 选择镜像模板 │ │
│ └───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────┐ │
│ │ ④ Placement 检查资源情况 │ │
│ └───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────┐ │
│ │ ⑤ Nova-Scheduler 决定: │ │
│ │ "去服务器2创建虚拟机" │ │
│ └───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────┐ │
│ │ ⑥ Neutron 准备网络 │ │
│ └───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────┐ │
│ │ ⑦ 发送指令到计算节点 │ │
│ │ (通过RabbitMQ) │ │
│ └───────────────────────────────┘ │
│ │
└─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 物理服务器2(计算节点) │
│ │
│ ┌───────────────────────────────┐ │
│ │ ⑧ nova-compute 收到指令 │ │
│ └───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────┐ │
│ │ ⑨ KVM 创建虚拟机 │ │
│ │ - 分配CPU │ │
│ │ - 分配内存 │ │
│ │ - 挂载镜像 │ │
│ └───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────┐ │
│ │ ⑩ neutron-agent 配置网络 │ │
│ └───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────┐ │
│ │ ✅ 虚拟机启动成功! │ │
│ │ VM运行中... │ │
│ └───────────────────────────────┘ │
│ │
└─────────────────────────────────────┘
|
5.3 服务器1的具体配置(控制节点)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# ==============================
# 控制节点安装清单
# 服务器1:8核CPU / 16GB内存 / 256GB SSD
# ==============================
# 1. 安装基础软件
apt update && apt upgrade -y
apt install -y chrony # 时间同步
apt install -y python3-openstackclient # OpenStack客户端
# 2. 安装数据库
apt install -y mariadb-server python3-pymysql
systemctl enable mariadb
systemctl start mariadb
# 3. 安装消息队列
apt install -y rabbitmq-server
systemctl enable rabbitmq-server
systemctl start rabbitmq-server
# 4. 安装Memcached(Token缓存)
apt install -y memcached python3-memcache
systemctl enable memcached
systemctl start memcached
# 5. 安装OpenStack组件
apt install -y keystone
apt install -y glance
apt install -y nova-api nova-scheduler nova-conductor nova-novncproxy
apt install -y placement-api
apt install -y neutron-server neutron-dhcp-agent neutron-l3-agent neutron-linuxbridge-agent
apt install -y horizon
apt install -y apache2
# 6. 关键:不要安装nova-compute!
# ❌ apt install nova-compute ← 不要执行这条命令!
# 7. 检查服务状态
systemctl status nova-api
systemctl status neutron-server
systemctl status keystone
|
5.4 服务器2的具体配置(计算节点)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# ==============================
# 计算节点安装清单
# 服务器2:16核CPU / 64GB内存 / 256GB SSD + 2TB HDD
# ==============================
# 1. 安装基础软件
apt update && apt upgrade -y
apt install -y chrony # 时间同步
# 2. 安装KVM虚拟化
apt install -y qemu-kvm libvirt-daemon-system libvirt-clients
apt install -y cpu-checker
# 3. 验证KVM是否正常工作
kvm-ok
# 输出应该显示:KVM acceleration can be used
# 4. 安装OpenStack计算组件
apt install -y nova-compute
apt install -y neutron-linuxbridge-agent
# 5. 关键:不要安装API服务!
# ❌ apt install nova-api ← 不要执行!
# ❌ apt install keystone ← 不要执行!
# ❌ apt install mysql ← 不要执行!
# 6. 配置网络
cat > /etc/neutron/plugins/ml2/linuxbridge_agent.ini << 'EOF'
[linux_bridge]
physical_interface_mappings = provider:ens3
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
EOF
# 7. 重启服务
systemctl enable nova-compute
systemctl enable neutron-linuxbridge-agent
systemctl start nova-compute
systemctl start neutron-linuxbridge-agent
# 8. 检查服务状态
systemctl status nova-compute
systemctl status neutron-linuxbridge-agent
# 9. 查看运行中的虚拟机
virsh list
# 应该显示空(还没有创建虚拟机)
|
六、干货技术:常用命令
6.1 控制节点常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# 查看OpenStack服务状态
openstack compute service list
# 查看Nova调度日志
tail -f /var/log/nova/nova-scheduler.log
# 查看Neutron服务状态
openstack network agent list
# 查看计算节点注册情况
openstack compute service list | grep nova
# 查看镜像列表
openstack image list
# 查看网络列表
openstack network list
# 查看配额使用情况
openstack quota show --project admin
# 查看资源使用
openstack usage list
|
6.2 计算节点常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# 查看KVM状态
virsh list
# 查看KVM虚拟机详细信息
virsh list --all
virsh dominfo vm_name
# 查看nova-compute日志
tail -f /var/log/nova/nova-compute.log
# 查看neutron-agent日志
tail -f /var/log/neutron/linuxbridge-agent.log
# 查看CPU虚拟化支持
cat /proc/cpuinfo | grep vmx
# 查看KVM模块是否加载
lsmod | grep kvm
# 查看内存使用
free -h
# 查看磁盘使用
df -h
|
6.3 排错常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# 控制节点:检查服务是否运行
systemctl status mariadb
systemctl status rabbitmq-server
systemctl status keystone
# 控制节点:检查API是否响应
curl http://localhost:8774/v2.1/
curl http://localhost:9696/
curl http://localhost:5000/v3/
# 计算节点:检查能否连接控制节点
ping controller
telnet controller 5672 # RabbitMQ端口
# 计算节点:检查nova-compute日志中的错误
grep -i error /var/log/nova/nova-compute.log
# 计算节点:验证KVM嵌套(虚拟机内运行KVM)
cat /sys/module/kvm_intel/parameters/nested
|
七、扩展:添加更多计算节点
7.1 架构扩展
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
┌─────────────────────────────────────────┐
│ 控制节点(服务器1) │
│ MySQL / RabbitMQ / Keystone / Nova │
└─────────────────────────────────────────┘
│
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 计算节点1 │ │ 计算节点2 │ │ 计算节点3 │
│ (服务器2) │ │ (服务器3) │ │ (服务器4) │
│ │ │ │ │ │
│ 10台VM │ │ 10台VM │ │ 10台VM │
│ │ │ │ │ │
└─────────────┘ └─────────────┘ └─────────────┘
│
总共可以运行 30台虚拟机
|
7.2 添加新计算节点的步骤
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# 在新服务器(服务器3)上执行:
# 1. 安装KVM
apt install -y qemu-kvm libvirt-daemon-system
# 2. 安装计算组件
apt install -y nova-compute
apt install -y neutron-linuxbridge-agent
# 3. 配置连接到控制节点
# 编辑 /etc/nova/nova.conf
[DEFAULT]
auth_url = http://服务器1的IP:5000/v3
mysql = mysql+pymysql://nova:密码@服务器1的IP/nova
rabbit_host = 服务器1的IP
# 编辑 /etc/neutron/neutron.conf
[DEFAULT]
auth_url = http://服务器1的IP:5000/v3
rabbit_host = 服务器1的IP
# 4. 重启服务
systemctl enable nova-compute neutron-linuxbridge-agent
systemctl start nova-compute neutron-linuxbridge-agent
# 5. 在控制节点验证
openstack compute service list
# 应该看到新的计算节点注册上来了
|
八、常见问题
8.1 Q: 控制节点可以运行虚拟机吗?
A:技术上可以,但不推荐。
All-in-One模式下,控制节点也会运行nova-compute,可以创建虚拟机。
但生产环境建议分开:
- 控制节点:稳定、安全、不暴露
- 计算节点:资源密集、可以宕机维护
8.2 Q: 可以只有1个控制节点吗?
A:可以,但不安全。
- 学习/测试:1个控制节点足够
- 生产环境:建议3个控制节点做高可用
8.3 Q: 计算节点需要多少内存?
A:取决于你要跑多少虚拟机。
经验公式:
1
2
3
4
5
6
|
计算节点总内存 = 虚拟机数量 × 平均每VM内存 + 16GB(系统预留)
例如:
- 要跑10台4GB内存的虚拟机
- 计算节点需要:10 × 4GB + 16GB = 56GB
- 建议配64GB内存
|
8.4 Q: 控制节点和计算节点必须用同样的操作系统?
A:不是必须的,但建议一致。
- 控制节点:Ubuntu/CentOS都可以
- 计算节点:Ubuntu/CentOS都可以
- 建议都用Ubuntu 22.04 LTS,统一管理
8.5 Q: 可以把服务分开装吗?比如把Keystone单独装一台服务器?
A:可以,但不推荐。
OpenStack支持非常灵活的分布式部署,但:
建议:
- 学习/测试:All-in-One或简单两节点
- 生产环境:控制节点集群 + 多计算节点
九、总结
9.1 一句话总结
1
2
|
控制节点 = 管理者(不动手,只动嘴)
计算节点 = 苦力(只动手,不用脑)
|
9.2 最终对比
| 特性 |
控制节点 |
计算节点 |
| 定位 |
大脑/管理者 |
肌肉/执行者 |
| 运行虚拟机 |
❌ 不运行 |
✅ 必须运行 |
| 数据库 |
✅ 必须有 |
❌ 不要 |
| API服务 |
✅ 必须有 |
❌ 不要 |
| KVM |
❌ 不要装 |
✅ 必须装 |
| 内存需求 |
8-16GB |
16-128GB |
| CPU需求 |
中等 |
高 |
| 扩展性 |
有限 |
灵活 |
| 数量 |
1-3台 |
可多台 |
9.3 记住这个比喻
1
2
3
4
5
6
7
|
想象你在经营一家餐厅:
控制节点 = 厨师长 + 前台 + 仓库管理员
不亲自炒菜,但指挥一切
计算节点 = 灶台 + 帮厨
真正炒菜的地方
|
希望这篇文章能帮助你理解控制节点和计算节点的区别!