文章总结: 本文解析OpenStack核心原理,涵盖Keystone、Nova等组件架构与操作,介绍DevStack部署、高可用配置、性能监控、备份恢复及安全加固等生产环境最佳实践。 综合评分: 78 文章分类: 云安全,安全建设,安全运营
OpenStack 云计算平台核心原理深度解析
原创
刘军军 刘军军
运维星火燎原
2026年1月22日 00:00 山西
第一部分:OpenStack 基础入门
1.1 OpenStack 概述与核心概念
什么是OpenStack?
OpenStack是一个开源的云计算管理平台项目,用于构建和管理公有云和私有云环境。它提供了一系列组件来管理计算、存储和网络资源。
核心概念
- 项目(Project/Tenant):资源隔离的基本单位
- 用户(User):访问云资源的实体
- 角色(Role):定义用户的权限级别
- 服务(Service):提供特定功能的组件
- 端点(Endpoint):服务的访问地址
- 镜像(Image):虚拟机模板
- 实例(Instance):运行的虚拟机
- 卷(Volume):块存储设备
- 网络(Network):虚拟网络资源
OpenStack架构组成
+-------------------+-------------------+-------------------+
| 计算服务(Nova) | 网络服务(Neutron) | 存储服务(Cinder) |
+-------------------+-------------------+-------------------+
| 镜像服务(Glance) | 认证服务(Keystone) | 界面(Horizon) |
+-------------------+-------------------+-------------------+
| 计量服务(Ceilometer)| 编排服务(Heat) | 消息队列(RabbitMQ)|
+-------------------+-------------------+-------------------+
1.2 环境准备与安装
系统要求
-
操作系统:Ubuntu 20.04/22.04 LTS 或 CentOS 8/9
-
硬件要求:
-
控制节点:8GB RAM,4核CPU,100GB存储
-
计算节点:16GB RAM,8核CPU,200GB存储
-
网络节点:4GB RAM,2核CPU,50GB存储
快速安装部署
# Ubuntu 系统安装
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository cloud-archive:zed
sudo apt update && sudo apt dist-upgrade
# 安装OpenStack客户端
sudo apt install python3-openstackclient
# CentOS 系统安装
sudo yum install centos-release-openstack-zed
sudo yum upgrade
sudo yum install python3-openstackclient
使用DevStack快速部署
# 创建stack用户
sudo useradd -s /bin/bash -d /opt/stack -m stack
echo"stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
sudo su - stack
# 下载DevStack
git clone https://opendev.org/openstack/devstack
cd devstack
# 创建local.conf配置文件
cat > local.conf << EOF
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=\$ADMIN_PASSWORD
RABBIT_PASSWORD=\$ADMIN_PASSWORD
SERVICE_PASSWORD=\$ADMIN_PASSWORD
EOF
# 开始安装
./stack.sh
1.3 基础操作与管理
环境变量配置
# 创建OpenStack RC文件
cat > openrc.sh << EOF
export OS_USERNAME=admin
export OS_PASSWORD=secret
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
export OS_IMAGE_API_VERSION=2
EOF
# 加载环境变量
source openrc.sh
基础资源管理命令
# 查看所有可用服务
openstack catalog list
# 查看项目列表
openstack project list
# 查看用户列表
openstack user list
# 查看角色列表
openstack role list
# 查看镜像列表
openstack image list
# 查看网络列表
openstack network list
# 查看实例列表
openstack server list
第二部分:核心组件深度解析
2.1 Keystone 身份认证服务
Keystone架构
+-------------+ +-------------+ +-------------+
| Identity | | Resource | | Assignment |
| (认证) | | (资源) | | (分配) |
+-------------+ +-------------+ +-------------+
| | |
+-------------+ +-------------+ +-------------+
| Token | | Catalog | | Policy |
| (令牌) | | (目录) | | (策略) |
+-------------+ +-------------+ +-------------+
Keystone操作实践
# 创建新项目
openstack project create --description "Development Project" development
# 创建新用户
openstack user create --password-prompt --project development dev-user
# 为用户分配角色
openstack role add --project development --user dev-user user
# 创建服务端点
openstack service create --name nova --description "OpenStack Compute" compute
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
# 验证令牌
openstack token issue
2.2 Nova 计算服务
Nova组件架构
+-------------------+ +-------------------+
| nova-api |<--->| nova-scheduler |
| (API服务) | | (调度服务) |
+-------------------+ +-------------------+
^ ^
| |
+-------------------+ +-------------------+
| nova-conductor |<--->| nova-compute |
| (数据库代理) | | (计算服务) |
+-------------------+ +-------------------+
Nova操作实践
# 查看计算服务状态
openstack compute service list
# 查看主机聚合
openstack aggregate list
# 查看可用规格
openstack flavor list
# 创建新规格
openstack flavor create --vcpus 2 --ram 4096 --disk 20 m1.medium
# 查看虚拟机控制台
openstack console url show <server-id>
2.3 Neutron 网络服务
Neutron网络模型
+-------------------+ +-------------------+
| Provider Network| | Self-service |
| (提供商网络) | | (自服务网络) |
+-------------------+ +-------------------+
| |
+-------------------+ +-------------------+
| Flat/VLAN | | VXLAN/GRE |
| (扁平/VLAN网络) | | ( overlay网络) |
+-------------------+ +-------------------+
Neutron操作实践
# 创建外部网络
openstack network create --external --provider-physical-network physnet1 \
--provider-network-type flat public
openstack subnet create --network public --gateway 192.168.1.1 \
--allocation-pool start=192.168.1.100,end=192.168.1.200 \
--dns-nameserver 8.8.8.8 --subnet-range 192.168.1.0/24public-subnet
# 创建内部网络
openstack network create private
openstack subnet create --network private --gateway 10.0.0.1 \
--subnet-range 10.0.0.0/24private-subnet
# 创建路由器并连接网络
openstack router create myrouter
openstack router set --external-gateway public myrouter
openstack router add subnet myrouter private-subnet
# 查看网络拓扑
openstack network agent list
2.4 Cinder 块存储服务
Cinder架构
+-------------------+ +-------------------+
| cinder-api |<--->| cinder-scheduler|
| (API服务) | | (调度服务) |
+-------------------+ +-------------------+
^ ^
| |
+-------------------+ +-------------------+
| cinder-volume |<--->| Storage Backend |
| (卷服务) | | (存储后端) |
+-------------------+ +-------------------+
Cinder操作实践
# 查看存储服务状态
openstack volume service list
# 创建存储卷
openstack volume create --size 10 --description "Data Volume" data-volume
# 查看卷列表
openstack volume list
# 将卷挂载到实例
openstack server add volume <server-id> <volume-id>
# 创建卷快照
openstack volume snapshot create --volume <volume-id> snapshot-name
# 从快照创建卷
openstack volume create --snapshot <snapshot-id> --size 10 new-volume
2.5 Glance 镜像服务
Glance操作实践
# 下载Cirros测试镜像
wget http://download.cirros-cloud.net/0.5.2/cirros-0.5.2-x86_64-disk.img
# 上传镜像
openstack image create --file cirros-0.5.2-x86_64-disk.img \
--disk-format qcow2 --container-format bare --public cirros
# 查看镜像详情
openstack image show cirros
# 创建镜像快照
openstack image create --instance <server-id> snapshot-image
# 设置镜像属性
openstack image set --property hw_disk_bus=scsi --property hw_scsi_model=virtio-scsi cirros
第三部分:高级运维与优化
3.1 高可用性部署
控制节点高可用
# 安装Pacemaker和Corosync
sudo apt install pacemaker corosync pacemaker-cli-utils pcs
# 配置集群
sudo pcs cluster auth node1 node2 node3 -u hacluster -p password
sudo pcs cluster setup --name openstack-cluster node1 node2 node3
sudo pcs cluster start --all
# 配置VIP资源
sudo pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s
# 配置服务约束
sudo pcs constraint colocation add galera with vip INFINITY
sudo pcs constraint order vip then galera
数据库高可用(Galera Cluster)
# 安装MariaDB Galera Cluster
sudo apt install mariadb-server galera-4 mariadb-client
# 配置Galera
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://node1,node2,node3"
wsrep_cluster_name='openstack_cluster'
wsrep_node_address='当前节点IP'
wsrep_node_name='当前节点名'
wsrep_sst_method=rsync
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
3.2 性能监控与优化
使用Ceilometer进行监控
# 安装Ceilometer
sudo apt install ceilometer-api ceilometer-collector ceilometer-agent-central \
ceilometer-agent-notification ceilometer-alarm-evaluator ceilometer-alarm-notifier
# 查看监控数据
openstack metric list
openstack alarm list
openstack event list
# 创建监控告警
openstack alarm create \
--name high-cpu-usage \
--type threshold \
--metric cpu_util \
--threshold 80.0 \
--comparison-operator gt \
--evaluation-periods 2 \
--alarm-action log:// \
--query "resource_id=<instance-id>"
性能优化策略
# Nova性能优化配置
[libvirt]
cpu_mode = host-passthrough
virt_type = kvm
disk_cachemodes = "network=writeback"
inject_password = false
inject_key = false
inject_partition = -2
# 内存优化
reserved_host_memory_mb = 4096
reserved_host_disk_mb = 10240
# CPU超配设置
cpu_allocation_ratio = 16.0
ram_allocation_ratio = 1.5
disk_allocation_ratio = 1.0
3.3 备份与恢复
数据库备份
# 创建备份脚本
#!/bin/bash
# backup-openstack-databases.sh
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/openstack/$DATE"
mkdir -p $BACKUP_DIR
# 备份所有OpenStack数据库
databases=("nova""neutron""cinder""glance""keystone""heat""ceilometer")
for db in"${databases[@]}"; do
mysqldump --single-transaction --quick --lock-tables=false$db > $BACKUP_DIR/$db.sql
done
# 备份配置文件
tar -czf $BACKUP_DIR/configs.tar.gz /etc/{nova,neutron,cinder,glance,keystone}/
# 保留30天备份
find /backup/openstack/ -type d -mtime +30 -exec rm -rf {} \;
实例备份策略
# 基于快照的实例备份
openstack server image create --name backup-$(date +%Y%m%d) <server-id>
# 卷备份
openstack volume backup create --name daily-backup <volume-id>
# 自动化备份脚本
#!/bin/bash
# auto-backup-instances.sh
INSTANCES=$(openstack server list -f value -c ID)
for instance in$INSTANCES; do
backup_name="backup-$(date +%Y%m%d)-$instance"
openstack server image create --name $backup_name$instance
done
3.4 故障排查与日志分析
常见故障排查命令
# 查看服务状态
systemctl list-units --type=service | grep openstack
# 查看日志文件
tail -f /var/log/nova/nova-api.log
tail -f /var/log/neutron/server.log
tail -f /var/log/cinder/cinder-api.log
# 检查网络连通性
openstack network agent list
neutron-agent-list
# 检查计算节点状态
openstack compute service list
nova-manage service list
# 检查存储状态
cinder service-list
日志分析技巧
# 实时监控错误日志
tail -f /var/log/nova/nova-*.log | grep -E "(ERROR|CRITICAL|Exception)"
# 统计API调用频率
grep "INFO" /var/log/nova/nova-api.log | awk '{print $6}' | sort | uniq -c | sort -nr
# 查找超时请求
grep "Timeout" /var/log/neutron/*.log
# 分析性能瓶颈
grep "duration" /var/log/nova/nova-api.log | awk '{print $NF}' | sort -n | tail -10
第四部分:生产环境最佳实践
4.1 安全加固
网络安全配置
# 配置安全组规则
openstack security group rule create --protocol tcp --dst-port 22 --ingress default
openstack security group rule create --protocol icmp --ingress default
# 防火墙配置
# 控制节点防火墙
sudo ufw allow 80/tcp # Horizon
sudo ufw allow 443/tcp # Horizon SSL
sudo ufw allow 5000/tcp # Keystone
sudo ufw allow 8774/tcp # Nova API
sudo ufw allow 9696/tcp # Neutron API
# 计算节点防火墙
sudo ufw allow 5900-5999/tcp # VNC
sudo ufw allow 16509/tcp # Libvirt
sudo ufw allow 4789/udp # VXLAN
SSL/TLS配置
# 生成SSL证书
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
# 配置Apache SSL
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
ProxyPass / http://127.0.0.1:80/
ProxyPassReverse / http://127.0.0.1:80/
</VirtualHost>
4.2 资源配额管理
设置项目配额
# 查看当前配额
openstack quota show --project <project-id>
# 设置计算资源配额
openstack quota set --instances 20 --cores 40 --ram 81920 <project-id>
# 设置存储配额
openstack quota set --volumes 20 --gigabytes 1000 <project-id>
# 设置网络配额
openstack quota set --networks 10 --subnets 20 --ports 100 <project-id>
# 设置安全组配额
openstack quota set --secgroups 20 --secgroup-rules 100 <project-id>
4.3 自动化运维
使用Ansible自动化部署
# openstack-deploy.yml
- name: Deploy OpenStack
hosts: openstack_controllers
become: yes
tasks:
- name: Install dependencies
apt:
name: "{{ item }}"
state: present
loop:
- python3-openstackclient
- mysql-client
- python3-pymysql
- name: Configure Keystone
template:
src: templates/keystone.conf.j2
dest: /etc/keystone/keystone.conf
notify: restart keystone
- name: Initialize Keystone database
command: keystone-manage db_sync
监控告警配置
# 配置Prometheus监控
- job_name
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:运维星火燎原 刘军军 刘军军《OpenStack 云计算平台核心原理深度解析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论