OpenStack 核心组件管理
OpenStack 核心组件管理
一、认证管理 - Keystone
核心概念
Domain :全局唯一的资源容器,可对应机构或数据中心。
User/Group :用户是访问主体,用户组用于批量管理用户权限。
Project :资源集合,域内唯一,与 Tenant/Account 通用。
Role :权限集合,支持域级、项目级分配及继承。
Service/Endpoint :OpenStack 服务及其实体访问地址。
Token/Credential :访问凭证,Token 域内唯一,有效期默认24小时。
常用操作(bash)
Bash
复制代码
# 查看域
source keystonerc_admin
openstack domain list
# 创建域
openstack domain create domain-test
# 禁用并删除域
openstack domain set --disable domain-test
openstack domain delete domain-test
# 开启多域登录
cd /etc/openstack-dashboard/
vim local_settings # 修改第83行:OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
systemctl restart httpd
# 创建用户
openstack user create --password HUAWEI user1
# 创建组并添加用户
openstack group create group1
openstack group add user group1 user1
# 分配角色
openstack role add --project admin --group group1 admin
# 创建项目并分配用户
openstack project create ProjectA
openstack user set --project ProjectA user1
openstack role add --user user1 --project ProjectA admin
# 修改项目配额(实例3、vcpu5、内存5000MB)
openstack quota set --instance 3 --cores 5 --ram 5000 ProjectA
二、镜像管理 - Glance
核心概念
镜像类型 :公共镜像、私有镜像、共享镜像、市场镜像。
磁盘格式 :支持 qcow2、raw、iso、vmdk 等格式。
状态机 :镜像状态包括 queued、saving、active、deleted 等;任务状态包括 pending、processing、success、failure。
架构 :Glance-API 接收请求,Store 模块对接后端存储(Swift/Ceph/本地文件)。
常用操作(bash)
Bash
复制代码
# 查看镜像
openstack image list
# 上传镜像(QCOW2格式)
openstack image create --file cirros-0.5.2-x86_64-disk.img --disk-format qcow2 --container-format bare cirros-0.5.2
# 上传ISO镜像
openstack image create --file TinyCore-12.0.iso --disk-format raw --container-format bare TinyCore-12.0
# 命令行上传大文件(带进度条)
glance image-create --name image_centos --file CentOS-7-x86_64-Minimal-1810.iso --disk-format raw --container bare --progress
# 查看镜像详情
openstack image show cirros-0.5.2
# 配置Swift作为后端存储(修改glance-api.conf)
vim /etc/glance/glance-api.conf
# 关键配置:
# default_store=swift
# swift_store_region=RegionOne
# swift_store_container=gqdglance
# swift_store_auth_address=http://192.168.108.10:5000/v3
# swift_store_user=swift
# swift_store_key=你的Swift密码(从answers.txt获取)
# 重启Glance服务
systemctl restart openstack-glance*
三、计算管理 - Nova
核心概念
功能范围 :虚拟机生命周期管理,不负责物理主机管理和全面监控。
架构组件 :API(接收请求)、Scheduler(调度节点)、Compute(执行虚拟机操作)、Conductor(数据库代理)、Placement(资源跟踪)。
调度机制 :通过 Filter(过滤节点)和 Weight(计算权重)选择最优计算节点。
实例操作 :支持启动、关闭、重启、暂停、挂起、重建、锁定等。
常用操作(bash)
Bash
复制代码
# 查看Nova服务状态
openstack compute service list
# 配置调度器(修改nova.conf)
vim /etc/nova/nova.conf
# 启用过滤器:
# scheduler_default_filters=AvailabilityZoneFilter,ComputeFilter,CapacityFilter
# 调整资源超分比:
# cpu_allocation_ratio=16.0
# ram_allocation_ratio=1.5
# 重启Nova服务
systemctl restart openstack-nova*
# 创建实例类型(flavor)
openstack flavor create --vcpus 1 --ram 128 --disk 1 Flavor_web
# 创建实例
openstack server create --name instance_gpu --image cirros-0.5.2 --flavor Flavor_web --nic net-id=neiwang --availability-zone gpu_az
# 实例操作
openstack server stop instance_gpu # 关闭
openstack server start instance_gpu # 启动
openstack server reboot instance_gpu # 软重启
openstack server reboot --hard instance_gpu # 硬重启
openstack server pause instance_gpu # 暂停
openstack server suspend instance_gpu # 挂起
openstack server lock instance_gpu # 锁定
openstack server rebuild --image cirros-0.5.2 instance_gpu # 重建
四、块存储管理 - Cinder
核心概念
存储类型 :持久存储,独立于虚拟机生命周期。
架构组件 :Cinder-API(接收请求)、Scheduler(调度存储节点)、Volume(管理卷操作)、Backup(备份功能)。
后端存储 :默认使用 LVM,支持 SAN、Ceph、Swift 等。
常用操作(bash)
Bash
复制代码
# 查看卷
openstack volume list
# 创建卷(1GB,az1可用域)
openstack volume create --size 1 --availability-zone az1 volume1
# 挂载卷到实例
openstack server add volume instance_gpu volume1
# 卸载卷
openstack server remove volume instance_gpu volume1
# 创建卷快照
openstack volume snapshot create --volume volume1 snapshot1
# 从快照创建卷
openstack volume create --snapshot snapshot1 volume2
# 删除卷
openstack volume delete volume1
# 查看Cinder服务状态
systemctl status openstack-cinder-api openstack-cinder-scheduler openstack-cinder-volume
五、对象存储管理 - Swift
核心概念
存储结构 :Account(账户)→ Container(容器)→ Object(对象)。
Ring机制 :Account Ring、Container Ring、Object Ring 维护存储映射关系。
特性 :高可用、无中心架构,支持数据冗余备份。
常用操作(bash)
Bash
复制代码
# 查看容器
openstack container list
# 创建容器
openstack container create test
# 上传文件到容器
openstack object create test cirros-0.5.2-x86_64-disk.img
# 查看容器内对象
openstack object list test
# 下载对象
openstack object save test cirros-0.5.2-x86_64-disk.img
# 删除对象
openstack object delete test cirros-0.5.2-x86_64-disk.img
# 查看Swift状态
swift stat
六、编排管理 - Heat
核心概念
功能 :通过模板编排复合云应用,自动调用OpenStack API创建资源。
模板格式 :支持 HOT(YAML)和 CFN(JSON)格式。
组件 :Heat-api(REST接口)、Heat-api-cfn(兼容AWS接口)、Heat-engine(核心编排逻辑)。
常用操作(bash)
Bash
复制代码
# 查看堆栈
openstack stack list
# 通过模板创建堆栈(heat.txt为模板文件)
openstack stack create --template heat.txt --stack-name stack1
# 查看堆栈详情
openstack stack show stack1
# 查看堆栈输出(如私钥)
openstack stack output show stack1 private_key
# 删除堆栈
openstack stack delete stack1
七、网络管理 - Neutron
核心概念
网络类型 :支持 local、flat、VLAN、VXLAN、GRE 类型。
核心资源 :Network(二层广播域)、Subnet(IP地址段)、Port(虚拟端口)、Router(虚拟路由器)。
虚拟化技术 :Linux Bridge(小规模场景)、Open vSwitch(大规模场景)。
常用操作(bash)
Bash
复制代码
# 查看网络
openstack network list
# 创建外部网络(flat类型)
openstack network create --provider-network-type flat --provider-physical-network extnet --external waiwang
openstack subnet create --network waiwang --subnet-range 192.168.108.0/24 --gateway 192.168.108.2 --allocation-pool start=192.168.108.100,end=192.168.108.200 waiwang-subnet
# 创建内部网络
openstack network create neiwang-1
openstack subnet create --network neiwang-1 --subnet-range 192.168.11.0/24 --gateway 192.168.11.1 --dns-nameserver 8.8.8.8 neiwang-1-subnet
# 创建路由器并连接内外网
openstack router create router1
openstack router set --external-gateway waiwang router1
openstack router add subnet router1 neiwang-1-subnet
# 创建浮动IP并绑定实例
openstack floating ip create waiwang
openstack server add floating ip instance_gpu 192.168.108.100
# 查看端口状态
openstack port list
# 查看路由器详情
openstack router show router1
八、故障排查
日志查看
Bash
复制代码
# Keystone日志
tail -f /var/log/keystone/keystone.log
# Glance日志
tail -f /var/log/glance/api.log
# Nova日志
tail -f /var/log/nova/nova-scheduler.log
tail -f /var/log/nova/nova-compute.log
# Neutron日志
tail -f /var/log/neutron/server.log
# 开启Debug模式(以Nova为例)
vim /etc/nova/nova.conf
# debug=True
systemctl restart openstack-nova*
RabbitMQ管理
Bash
复制代码
# 查看RabbitMQ状态
systemctl status rabbitmq-server.service
# 启用管理插件
rabbitmq-plugins enable rabbitmq_management
# 创建管理员用户
rabbitmqctl add_user user_admin passwd_admin
rabbitmqctl set_user_tags user_admin administrator
rabbitmqctl set_permissions -p / user_admin ".*" ".*" ".*"
# 访问管理界面(http://192.168.108.10:15672,用户名user_admin,密码passwd_admin)