一、OpenStack 简介

OpenStack 作为开源云计算平台的标杆,其 Dashboard 图形化管理界面极大简化了运维复杂度。本文通过完整案例,带你掌握 OpenStack 核心管理技能,包括网络路由配置、云主机创建、浮动 IP 管理、安全组规则、密钥对认证、卷存储管理、快照与镜像操作等。

案例环境准备

  • 硬件:4 核 CPU、8GB 内存、30GB 磁盘
  • 系统:CentOS 7.3
  • OpenStack 版本:Train
  • IP 地址:192.168.9.236

案例需求

  1. 创建可访问外网的云主机
  2. 实现外部网络 SSH 免密访问
  3. 完成卷挂载、快照与镜像创建

二、OpenStack 基础环境

OpenStack 部署可通过 Packstack 一键安装(详细步骤参考官方文档),部署完成后需确保:

  • 禁用 Firewalld 与 SELinux:systemctl stop firewalld && systemctl disable firewalld
  • 关闭 SELinux:setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

三、网络与路由重构

1. 删除默认网络组件
# 进入管理员视角删除默认路由器
# 原理:默认路由器连接了外部网络,需先删除路由器才能移除网络
openstack router delete router1  # 删除默认路由器
openstack network delete public   # 删除外部网络
openstack network delete private  # 删除内部网络
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

OpenStack 云平台管理_云主机

2. 新建外部网络
# 创建外部网络(public)
openstack network create --project admin --provider-network-type flat --provider-physical-network extnet --external public
# 参数说明:
# --project admin 指定管理项目
# --provider-network-type flat 使用扁平网络类型
# --external 标记为外部网络

# 创建外部子网
openstack subnet create --network public --subnet-range 172.16.1.0/24 --gateway 172.16.1.1 --no-dhcp public_subnet
# 参数说明:
# --no-dhcp 禁用DHCP,因外部网络不直接为实例分配IP
# --gateway 指定网关IP
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

OpenStack 云平台管理_OpenStack_02

3. 新建内部网络
# 创建内部网络(private)
openstack network create --project demo private
# 创建内部子网(启用DHCP)
openstack subnet create --network private --subnet-range 192.168.1.0/24 --gateway 192.168.1.1 --dhcp private_subnet
# 配置DHCP地址池与DNS
openstack subnet set --allocation-pool start=192.168.1.100,end=192.168.1.200 --dns-nameservers 114.114.114.114 private_subnet
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

OpenStack 云平台管理_OpenStack_03

4. 配置路由转发
# 创建路由器并关联外部网络
openstack router create route
openstack router set --external-gateway public route
# 原理:启用SNAT实现内部网络访问外网

# 关联内部子网到路由器
openstack router add subnet route private_subnet
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

OpenStack 云平台管理_密钥对_04

四、云主机创建与网络连通性配置

1. 创建云主机实例
# 创建实例(以cirros镜像为例)
openstack server create --image cirros --flavor m1.tiny --network private test
# 参数说明:
# --image cirros 指定基础镜像
# --flavor m1.tiny 指定资源规格
# --network private 指定连接网络

# 查看实例IP
openstack server list
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

OpenStack 云平台管理_云主机_05

2. 配置外网访问能力
# 开启宿主机IP转发
echo "1" > /proc/sys/net/ipv4/ip_forward
# 配置NAT规则(确保云主机可访问外网)
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o ens33 -j MASQUERADE
# 保存规则防止重启丢失
service iptables save
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

五、浮动 IP 绑定与安全组配置

1. 分配与绑定浮动 IP
# 从外部网络分配浮动IP
openstack floating ip create public
# 绑定浮动IP到实例
openstack server add floating ip test <浮动IP地址>
# 原理:通过NAT映射实现外部网络访问内部实例
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

OpenStack 云平台管理_OpenStack_06

2. 安全组规则配置
# 添加ICMP规则(允许ping测试)
openstack security group rule create --proto icmp --ingress default
# 添加SSH规则(允许22端口访问)
openstack security group rule create --proto tcp --dst-port 22:22 --ingress default
# 参数说明:
# --ingress 定义入口规则
# --dst-port 指定目标端口范围
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

OpenStack 云平台管理_密钥对_07

六、密钥对认证与免密登录

1. 生成与关联密钥对
# 创建密钥对
openstack keypair create my-auth > my-auth.pem
# 关联密钥对到实例(创建实例时指定)
openstack server create --image cirros --flavor m1.tiny --network private --key-name my-auth test-key
# 配置私钥权限
chmod 600 my-auth.pem
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

OpenStack 云平台管理_云主机_08

2. 免密登录验证
# 通过私钥登录实例
ssh -i my-auth.pem cirros@<浮动IP>
# 原理:SSH密钥对认证通过非对称加密实现免密登录,安全性高于密码认证
  • 1.
  • 2.
  • 3.

七、卷存储管理

1. 创建与挂载卷
# 创建2GB卷
openstack volume create --size 2 test-lv
# 关联卷到实例
openstack server add volume test test-lv
# 登录实例格式化卷
fdisk /dev/vdb  # 分区
mkfs.ext4 /dev/vdb1  # 格式化为ext4文件系统
mount /dev/vdb1 /mnt  # 挂载到/mnt目录
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

OpenStack 云平台管理_云主机_09

2. 卷扩容操作
# 先分离卷
openstack server remove volume test test-lv
# 扩展卷到3GB
openstack volume set --size 3 test-lv
# 重新关联卷
openstack server add volume test test-lv
# 实例内扩展分区(需重启)
growpart /dev/vdb 1
resize2fs /dev/vdb1
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

八、快照与镜像

1. 实例快照创建
# 为实例创建快照
openstack server image create --name test-snap test
# 原理:OpenStack实例快照会生成新镜像存储在Glance
# 通过快照创建新实例
openstack server create --image test-snap --flavor m1.tiny --network private test01
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

OpenStack 云平台管理_OpenStack_10

2. 卷快照与镜像创建
# 创建卷快照
openstack volume snapshot create --name test01-lv-snap test-lv
# 从卷快照创建新卷
openstack volume create --size 2 --snapshot test01-lv-snap test02-lv
# 导入CentOS镜像
openstack image create --file CentOS-7.qcow2 --disk-format qcow2 --public centos7
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

九、总结:生产环境建议

  1. 网络优化
  • 外部网络建议使用 VLAN 隔离
  • 生产环境启用 SDN 插件(如 Neutron+OVS)
  1. 安全强化
  • 安全组规则按最小权限原则配置
  • 定期轮换密钥对,禁用密码登录
  1. 存储策略
  • 系统盘与数据盘分离挂载
  • 重要数据卷启用自动快照策略
  1. 高可用设计
  • 控制节点与计算节点分离部署
  • 数据库与消息队列配置集群

从网络架构设计到云主机全生命周期管理,每个环节都体现了 OpenStack 的灵活性与可扩展性。在实际生产环境中,还需结合企业需求进行架构优化与性能调优,充分发挥 OpenStack 在资源池化、弹性扩展方面的优势