目录
一、OpenStack 简介
OpenStack 作为开源云计算平台的标杆,其 Dashboard 图形化管理界面极大简化了运维复杂度。本文通过完整案例,带你掌握 OpenStack 核心管理技能,包括网络路由配置、云主机创建、浮动 IP 管理、安全组规则、密钥对认证、卷存储管理、快照与镜像操作等。
案例环境准备:
- 硬件:4 核 CPU、8GB 内存、30GB 磁盘
- 系统:CentOS 7.3
- OpenStack 版本:Train
- IP 地址:192.168.9.236
案例需求:
- 创建可访问外网的云主机
- 实现外部网络 SSH 免密访问
- 完成卷挂载、快照与镜像创建
二、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 # 删除内部网络
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
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
4. 配置路由转发
# 创建路由器并关联外部网络
openstack router create route
openstack router set --external-gateway public route
# 原理:启用SNAT实现内部网络访问外网
# 关联内部子网到路由器
openstack router add subnet route private_subnet
四、云主机创建与网络连通性配置
1. 创建云主机实例
# 创建实例(以cirros镜像为例)
openstack server create --image cirros --flavor m1.tiny --network private test
# 参数说明:
# --image cirros 指定基础镜像
# --flavor m1.tiny 指定资源规格
# --network private 指定连接网络
# 查看实例IP
openstack server list
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
五、浮动 IP 绑定与安全组配置
1. 分配与绑定浮动 IP
# 从外部网络分配浮动IP
openstack floating ip create public
# 绑定浮动IP到实例
openstack server add floating ip test <浮动IP地址>
# 原理:通过NAT映射实现外部网络访问内部实例
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. 生成与关联密钥对
# 创建密钥对
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
2. 免密登录验证
# 通过私钥登录实例
ssh -i my-auth.pem cirros@<浮动IP>
# 原理:SSH密钥对认证通过非对称加密实现免密登录,安全性高于密码认证
七、卷存储管理
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目录
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. 实例快照创建
# 为实例创建快照
openstack server image create --name test-snap test
# 原理:OpenStack实例快照会生成新镜像存储在Glance
# 通过快照创建新实例
openstack server create --image test-snap --flavor m1.tiny --network private test01
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
九、总结:生产环境建议
- 网络优化:
- 外部网络建议使用 VLAN 隔离
- 生产环境启用 SDN 插件(如 Neutron+OVS)
- 安全强化:
- 安全组规则按最小权限原则配置
- 定期轮换密钥对,禁用密码登录
- 存储策略:
- 系统盘与数据盘分离挂载
- 重要数据卷启用自动快照策略
- 高可用设计:
- 控制节点与计算节点分离部署
- 数据库与消息队列配置集群
从网络架构设计到云主机全生命周期管理,每个环节都体现了 OpenStack 的灵活性与可扩展性。在实际生产环境中,还需结合企业需求进行架构优化与性能调优,充分发挥 OpenStack 在资源池化、弹性扩展方面的优势