OpenStack云平台核心功能:虚拟机、存储与网络管理实战

OpenStack云平台核心功能:虚拟机、存储与网络管理实战

前言

成功部署OpenStack云平台后,掌握其核心功能的使用和管理技巧是充分发挥云平台价值的关键。OpenStack提供了丰富的功能,包括虚拟机实例管理、存储资源管理、网络配置等。本文将详细介绍OpenStack的核心功能使用方法,包括通过命令行和Web界面管理虚拟机、存储和网络资源,并提供实用的管理技巧和最佳实践,帮助管理员高效地运营和维护OpenStack云平台。

一、OpenStack命令行工具使用

1.1 OpenStack客户端安装与配置

安装OpenStack客户端

1
2
3
4
5
# 使用pip安装OpenStack客户端
pip install python-openstackclient

# 安装特定服务的客户端(可选)
pip install python-novaclient python-glanceclient python-neutronclient python-cinderclient

配置客户端环境变量

创建一个环境变量脚本(例如openrc.sh):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash
# OpenStack客户端环境配置
export OS_USERNAME=admin
export OS_PASSWORD=your_password
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

使用时加载环境变量:

1
source openrc.sh

1.2 常用命令速查

服务状态查询

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 列出所有服务
openstack service list

# 列出所有终端节点
openstack endpoint list

# 检查服务组件状态
openstack compute service list
openstack volume service list
openstack network agent list

项目和用户管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 列出项目
openstack project list

# 创建项目
openstack project create --description "Test Project" test_project

# 列出用户
openstack user list

# 创建用户
openstack user create --password user_password --email user@example.com --project test_project test_user

# 分配角色给用户
openstack role add --project test_project --user test_user user

帮助命令

1
2
3
4
5
6
# 获取命令帮助
openstack help

# 获取特定命令的详细帮助
openstack server help
openstack volume help

二、虚拟机实例管理

2.1 镜像管理

镜像操作基础

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 列出所有镜像
openstack image list

# 查看镜像详情
openstack image show cirros

# 上传镜像
openstack image create --disk-format qcow2 --container-format bare --public --file ubuntu-20.04-server-cloudimg-amd64.img ubuntu-20.04

# 删除镜像
openstack image delete ubuntu-20.04

# 更新镜像属性
openstack image set --property description="Ubuntu 20.04 LTS Server" ubuntu-20.04

镜像高级操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 创建快照镜像
openstack image create --source test-vm --name test-vm-snapshot test-snapshot

# 下载镜像
openstack image save --file downloaded-image.qcow2 ubuntu-20.04

# 配置镜像元数据
openstack image set --property hw_scsi_model=virtio-scsi --property hw_disk_bus=scsi ubuntu-20.04

# 创建可写的镜像副本
openstack image create --copy-from http://example.com/images/image.img --disk-format qcow2 --container-format bare copy-image

镜像管理最佳实践

  1. 镜像命名规范:使用明确的命名规则,包含操作系统版本和用途
  2. 镜像大小优化:清理不需要的包和文件,减小镜像大小
  3. 定期更新:及时更新镜像以包含最新的安全补丁
  4. 镜像备份:定期备份重要镜像
  5. 使用Golden Image:创建标准化的基础镜像,包含常用配置

2.2 规格管理

规格定义与操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 列出所有规格
openstack flavor list

# 查看规格详情
openstack flavor show m1.small

# 创建自定义规格
openstack flavor create --id 100 --vcpus 2 --ram 4096 --disk 40 --ephemeral 20 custom.medium

# 删除规格
openstack flavor delete custom.medium

# 更新规格属性
openstack flavor set --property aggregate_instance_extra_specs:cpu_policy=dedicated custom.medium

规格管理技巧

  1. 根据工作负载类型创建规格:为不同类型的应用创建专门的规格
  2. 合理分配资源:根据实际需求分配CPU、内存和磁盘
  3. 使用规格属性:利用规格属性实现资源限制和优化
  4. 规格访问控制:限制某些规格只对特定项目可见
1
2
3
# 设置规格访问限制
openstack flavor set --private custom.highcpu
openstack flavor access add --project test_project custom.highcpu

2.3 虚拟机生命周期管理

虚拟机创建

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 基本创建
openstack server create --flavor m1.small --image ubuntu-20.04 --key-name mykey --network private-net test-vm

# 创建时指定安全组
openstack server create --flavor m1.small --image ubuntu-20.04 --key-name mykey --network private-net --security-group default --security-group web-server test-vm

# 创建时附加卷
openstack server create --flavor m1.small --image ubuntu-20.04 --key-name mykey --network private-net --volume data-vol test-vm

# 创建时指定用户数据(初始化脚本)
openstack server create --flavor m1.small --image ubuntu-20.04 --key-name mykey --network private-net --user-data init-script.sh test-vm

虚拟机管理操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 列出所有虚拟机
openstack server list --all-projects

# 查看虚拟机详情
openstack server show test-vm

# 启动虚拟机
openstack server start test-vm

# 停止虚拟机
openstack server stop test-vm

# 重启虚拟机
openstack server reboot test-vm

# 强制关闭虚拟机
openstack server stop --force test-vm

# 删除虚拟机
openstack server delete test-vm

虚拟机高级操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 创建虚拟机快照
openstack server image create --name test-vm-snapshot test-vm

# 调整虚拟机规格
openstack server resize --flavor m1.medium test-vm
# 确认调整
openstack server resize confirm test-vm
# 或者回滚
openstack server resize revert test-vm

# 迁移虚拟机
openstack server migrate test-vm
# 确认迁移
openstack server migration confirm test-vm

# 重置虚拟机状态
openstack server set --state error test-vm
openstack server set --state active test-vm

# 添加浮动IP
openstack server add floating ip test-vm 192.168.20.100
# 移除浮动IP
openstack server remove floating ip test-vm 192.168.20.100

2.4 虚拟机监控与日志

虚拟机状态监控

1
2
3
4
5
6
7
8
# 查看虚拟机控制台日志
openstack console log show test-vm

# 查看虚拟机诊断信息
openstack server diagnostics test-vm

# 查看虚拟机使用的资源
openstack server show --fit-width test-vm | grep -E 'OS-EXT-STS:vm_state|OS-EXT-STS:power_state|OS-EXT-AZ:availability_zone'

虚拟机管理最佳实践

  1. 虚拟机命名规范:使用有意义的名称,包含用途、环境等信息
  2. 资源标签:使用标签标记虚拟机的用途、所有者等信息
  3. 定期备份:通过快照或卷备份定期备份虚拟机
  4. 自动扩缩容:配置自动扩缩容规则,根据负载调整资源
  5. 性能监控:部署监控工具,实时监控虚拟机性能

三、存储资源管理

3.1 块存储卷管理

卷操作基础

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 列出所有卷
openstack volume list

# 查看卷详情
openstack volume show data-volume

# 创建空白卷
openstack volume create --size 20 data-volume

# 从快照创建卷
openstack volume create --snapshot data-snapshot --size 20 new-volume

# 从镜像创建卷
openstack volume create --image ubuntu-20.04 --size 20 boot-volume

# 删除卷
openstack volume delete data-volume

卷与虚拟机交互

1
2
3
4
5
6
7
8
# 将卷附加到虚拟机
openstack server add volume test-vm data-volume

# 从虚拟机分离卷
openstack server remove volume test-vm data-volume

# 列出附加到虚拟机的卷
openstack server volume list test-vm

卷快照管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 创建卷快照
openstack volume snapshot create --volume data-volume data-snapshot

# 列出所有快照
openstack volume snapshot list

# 查看快照详情
openstack volume snapshot show data-snapshot

# 删除快照
openstack volume snapshot delete data-snapshot

卷备份管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 创建卷备份
openstack volume backup create --volume data-volume data-backup

# 列出所有备份
openstack volume backup list

# 查看备份详情
openstack volume backup show data-backup

# 从备份恢复卷
openstack volume create --backup data-backup restored-volume

# 删除备份
openstack volume backup delete data-backup

3.2 对象存储管理

容器操作

1
2
3
4
5
6
7
8
# 列出所有容器
openstack container list

# 创建容器
openstack container create my-container

# 删除容器
openstack container delete my-container

对象操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 上传对象到容器
openstack object create my-container local-file.txt

# 列出容器中的对象
openstack object list my-container

# 下载对象
openstack object save my-container remote-file.txt local-copy.txt

# 删除对象
openstack object delete my-container unwanted-file.txt

# 查看对象详情
openstack object show my-container important-file.txt

对象存储高级功能

1
2
3
4
5
6
7
8
# 设置容器访问权限
openstack container set --public-read my-container

# 创建静态网站容器
openstack container create --public-read --property "Web-Index: index.html" --property "Web-Error: error.html" my-website

# 设置对象元数据
openstack object set --property "Content-Type:text/plain" my-container my-file.txt

3.3 文件存储管理

共享创建与管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 创建共享类型
openstack share type create default_share_type --is-public True

# 创建文件共享
openstack share create --share-type default_share_type --name my-share nfs 10

# 列出所有共享
openstack share list

# 查看共享详情
openstack share show my-share

# 删除共享
openstack share delete my-share

共享访问规则管理

1
2
3
4
5
6
7
8
# 添加访问规则
openstack share access create --access-type ip --access-to 192.168.10.0/24 my-share

# 列出访问规则
openstack share access list my-share

# 删除访问规则
openstack share access delete [access_id] my-share

3.4 存储管理最佳实践

  1. 存储类型规划:根据数据类型和访问模式选择合适的存储类型
  2. 卷命名规范:使用明确的命名规则,包含用途和项目信息
  3. 定期快照和备份:制定快照和备份策略,确保数据安全
  4. 存储监控:监控存储使用率和性能,及时扩容
  5. 存储分层:实现热数据和冷数据的分层存储,优化成本
  6. 数据生命周期管理:配置数据生命周期策略,自动归档或删除过期数据

四、网络资源管理

4.1 网络和子网管理

网络操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 列出所有网络
openstack network list

# 查看网络详情
openstack network show private-net

# 创建网络
openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider-net

# 创建内部网络
openstack network create --share --internal private-net

# 删除网络
openstack network delete old-network

子网操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 创建子网
openstack subnet create --network private-net --subnet-range 10.0.0.0/24 --gateway 10.0.0.1 --dns-nameserver 8.8.8.8 private-subnet

# 列出所有子网
openstack subnet list

# 查看子网详情
openstack subnet show private-subnet

# 删除子网
openstack subnet delete old-subnet

# 更新子网
openstack subnet set --name new-subnet-name private-subnet

4.2 路由器管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 创建路由器
openstack router create main-router

# 将路由器连接到外部网络
openstack router set --external-gateway provider-net main-router

# 将路由器连接到内部子网
openstack router add subnet main-router private-subnet

# 从路由器移除子网
openstack router remove subnet main-router unused-subnet

# 列出所有路由器
openstack router list

# 查看路由器详情
openstack router show main-router

# 删除路由器
openstack router delete old-router

4.3 安全组和规则管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 创建安全组
openstack security group create web-server

# 添加安全组规则 - 允许SSH访问
openstack security group rule create --proto tcp --dst-port 22 --remote-ip 0.0.0.0/0 default

# 添加安全组规则 - 允许HTTP访问
openstack security group rule create --proto tcp --dst-port 80 --remote-ip 0.0.0.0/0 web-server

# 添加安全组规则 - 允许HTTPS访问
openstack security group rule create --proto tcp --dst-port 443 --remote-ip 0.0.0.0/0 web-server

# 添加安全组规则 - 允许ICMP访问
openstack security group rule create --proto icmp default

# 列出所有安全组
openstack security group list

# 查看安全组详情和规则
openstack security group show web-server

# 删除安全组
openstack security group delete old-security-group

4.4 浮动IP管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 创建浮动IP池
openstack floating ip pool create external-floating-ips

# 分配浮动IP
openstack floating ip create provider-net

# 列出浮动IP
openstack floating ip list

# 将浮动IP关联到虚拟机
openstack server add floating ip test-vm 192.168.20.100

# 从虚拟机移除浮动IP
openstack server remove floating ip test-vm 192.168.20.100

# 释放浮动IP
openstack floating ip delete 192.168.20.100

4.5 网络管理最佳实践

  1. 网络规划:提前规划网络架构,包括子网划分、路由策略等
  2. 安全组规则:遵循最小权限原则,只开放必要的端口和协议
  3. 网络隔离:使用VLAN、VxLAN等技术实现网络隔离,确保租户间安全
  4. 浮动IP管理:合理分配和回收浮动IP,避免IP地址浪费
  5. 网络监控:监控网络流量和性能,及时发现和解决网络问题
  6. 冗余设计:关键网络组件实现冗余,确保网络服务高可用

五、OpenStack高级功能使用

5.1 自动扩缩容配置

创建自动扩缩容策略

1
2
3
4
5
6
7
# 创建扩缩容组
openstack autoscaling group create --min-size 2 --max-size 5 --desired-capacity 3 --health-period 60 --health-threshold 5 --cooldown 300 --launch-configuration basic-config web-servers

# 创建扩缩容策略
openstack autoscaling policy create --auto-scaling-group web-servers --type cpu_util --scaling-adjustment 1 --cooldown 300 --threshold 70 --comparison-operator gt scale-out-policy

openstack autoscaling policy create --auto-scaling-group web-servers --type cpu_util --scaling-adjustment -1 --cooldown 300 --threshold 30 --comparison-operator lt scale-in-policy

5.2 负载均衡器配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 创建负载均衡器
openstack loadbalancer create --name lb1 --vip-subnet-id private-subnet

# 创建监听器
openstack loadbalancer listener create --name listener1 --protocol HTTP --protocol-port 80 lb1

# 创建池
openstack loadbalancer pool create --name pool1 --lb-algorithm ROUND_ROBIN --listener listener1 --protocol HTTP

# 创建健康检查
openstack loadbalancer healthmonitor create --delay 5 --max-retries 3 --timeout 2 --type HTTP pool1

# 将成员添加到池
openstack loadbalancer member create --subnet-id private-subnet --address 10.0.0.10 --protocol-port 80 pool1
openstack loadbalancer member create --subnet-id private-subnet --address 10.0.0.11 --protocol-port 80 pool1

5.3 网络功能虚拟化(VNF)

创建防火墙

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 创建防火墙策略
openstack firewall policy create --name fw-policy

# 创建防火墙规则
openstack firewall rule create --protocol tcp --dst-port 22 --action allow --name allow-ssh
openstack firewall rule create --protocol tcp --dst-port 80 --action allow --name allow-http

# 将规则添加到策略
openstack firewall policy insert-rule fw-policy allow-ssh
openstack firewall policy insert-rule fw-policy allow-http

# 创建防火墙
openstack firewall create --name main-firewall --firewall-policy fw-policy

六、OpenStack监控与维护

6.1 系统监控

使用OpenStack内置监控

1
2
3
4
5
6
7
8
# 查看资源使用情况
openstack usage list --start 2025-10-01 --end 2025-10-31

# 查看项目资源配额
openstack quota show test_project

# 修改项目资源配额
openstack quota set --cores 100 --ram 204800 test_project

部署外部监控工具

推荐使用Prometheus和Grafana进行OpenStack监控:

  1. Prometheus:收集和存储监控数据
  2. Grafana:可视化监控数据,创建仪表盘
  3. Alertmanager:管理告警规则和通知

6.2 日志管理

日志文件位置

  • Nova: /var/log/nova/
  • Neutron: /var/log/neutron/
  • Cinder: /var/log/cinder/
  • Glance: /var/log/glance/
  • Keystone: /var/log/apache2//var/log/httpd/

日志分析工具

推荐使用ELK Stack进行日志管理:

  1. Elasticsearch:存储和索引日志数据
  2. Logstash:收集和处理日志数据
  3. Kibana:可视化和分析日志数据

6.3 备份与恢复

数据库备份

1
2
3
4
5
# 备份所有OpenStack数据库
mysqldump --all-databases -u root -p > openstack_db_backup.sql

# 恢复数据库
mysql -u root -p < openstack_db_backup.sql

配置文件备份

1
2
# 备份关键配置文件
tar -czvf openstack_config_backup.tar.gz /etc/nova /etc/neutron /etc/cinder /etc/glance /etc/keystone

灾难恢复策略

  1. 定期备份:制定数据库和配置文件的定期备份计划
  2. 备份验证:定期验证备份的可用性和完整性
  3. 恢复演练:定期进行灾难恢复演练,确保流程有效
  4. 多区域部署:在不同地理区域部署OpenStack,实现跨区域灾备

结语

OpenStack的核心功能使用和管理是云计算运维人员必备的技能。本文详细介绍了虚拟机实例管理、存储资源管理、网络配置等核心功能的使用方法,以及自动扩缩容、负载均衡等高级功能的配置。通过掌握这些技能,管理员可以高效地运营和维护OpenStack云平台,充分发挥云计算的优势。在实际工作中,建议根据具体的业务需求和技术环境,灵活运用这些功能,制定适合自己环境的管理策略和最佳实践。

参考资源

  1. OpenStack管理员指南:https://docs.openstack.org/ocata/admin-guide/
  2. OpenStack命令行工具文档:https://docs.openstack.org/python-openstackclient/latest/
  3. OpenStack网络指南:https://docs.openstack.org/neutron/latest/admin/
  4. OpenStack存储指南:https://docs.openstack.org/cinder/latest/admin/

免责声明:本文中的命令和配置示例仅供参考,实际使用时请根据OpenStack版本和具体环境进行调整。在生产环境中执行操作前,建议先在测试环境中验证。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计