从Horizon仪表盘到命令行:OpenStack管理员双视角实战,搞定镜像、实例与安全组
2026/5/5 7:28:29 网站建设 项目流程

从Horizon仪表盘到命令行:OpenStack管理员双视角实战,搞定镜像、实例与安全组

在云平台运维的世界里,效率就是生命线。当凌晨三点被告警电话惊醒时,你是愿意手忙脚乱地点击十几层网页菜单,还是用几行命令快速定位问题?这就是OpenStack管理员必须掌握的"双枪"技能——既能优雅地使用Horizon仪表盘进行可视化操作,又能熟练运用OpenStack Client命令行实现批量处理。本文将带您穿越图形界面与终端之间的次元壁,通过六个核心场景的对照演示,让您获得"左右互搏"的运维真功夫。

1. 环境准备:双武器库配置

在开始实战前,我们需要确保两个管理工具都处于最佳状态。Horizon作为OpenStack的官方仪表盘,通常已随基础环境部署完成,访问地址一般为http://<controller-ip>/dashboard。而命令行工具则需要额外配置:

# 安装OpenStack客户端全集 sudo apt install python3-openstackclient -y # Ubuntu/Debian sudo yum install python3-openstackclient -y # CentOS/RHEL # 加载管理员凭证 source admin-openrc.sh

关键检查点

  • Horizon登录后确认右上角显示admin身份
  • 命令行执行openstack token issue应返回有效的token信息
  • 网络连通性测试:ping <horizon-ip>curl -v <keystone-url>双验证

注意:生产环境中建议为CLI配置单独的配置文件~/.config/openstack/clouds.yaml,避免每次手动source环境变量。

2. 镜像管理:从上传到分发

镜像相当于虚拟机的"模具",其管理效率直接影响实例部署速度。我们以典型的Cirros测试镜像为例,展示两种操作路径:

Horizon操作流

  1. 导航至【管理员】→【计算】→【镜像】
  2. 点击【创建镜像】按钮
  3. 填写表单:
    • 名称:cirros-0.6.2
    • 描述:Lightweight test image
    • 镜像源:文件
    • 文件:选择本地的cirros-0.6.2-x86_64-disk.img
    • 格式:QCOW2
    • 架构:x86_64
    • 可见性:公开
  4. 点击【创建镜像】完成

等效CLI命令

openstack image create \ --file ./cirros-0.6.2-x86_64-disk.img \ --disk-format qcow2 \ --container-format bare \ --public \ --tag lightweight \ cirros-0.6.2

对比分析

特性Horizon优势CLI优势
进度可视化上传进度条直观可见无实时进度显示
批量操作需逐个点击可通过脚本批量处理
元数据管理表单填写方便支持标签等高级属性
自动化集成难以对接CI/CD完美融入自动化流程

实际运维中推荐组合使用:日常检查用Horizon快速浏览,批量更新则用CLI脚本处理。例如要批量添加镜像标签:

for img in $(openstack image list -f value -c ID); do openstack image set --tag production-ready $img done

3. 安全组配置:防火墙的艺术

安全组是实例的虚拟防火墙,不当配置可能导致服务不可用或安全漏洞。下面演示如何添加允许SSH和ICMP的规则:

Horizon配置步骤

  1. 进入【项目】→【网络】→【安全组】
  2. 点击default组的【管理规则】
  3. 添加规则:
    • 方向:入方向
    • 协议:TCP
    • 端口:22
    • 远程:CIDR
    • CIDR:0.0.0.0/0
  4. 重复添加ICMP规则(协议选ICMP

CLI实现方案

# 创建专用安全组 openstack security group create web-sg --description "Web Server Security Group" # 添加规则 openstack security group rule create \ --protocol tcp \ --dst-port 22:22 \ --remote-ip 0.0.0.0/0 \ web-sg openstack security group rule create \ --protocol icmp \ web-sg

高级技巧

  • 使用--project参数可以跨项目管理安全组
  • --ingress/--egress参数替代旧版的--direction
  • 组合规则示例(允许特定IP段访问HTTP/HTTPS):
    openstack security group rule create \ --protocol tcp \ --dst-port 80:80 \ --remote-ip 192.168.1.0/24 \ web-sg openstack security group rule create \ --protocol tcp \ --dst-port 443:443 \ --remote-ip 10.0.0.0/8 \ web-sg

4. 实例生命周期:从创建到回收

虚拟机实例是云平台的核心资源,其全生命周期管理考验管理员功力。以下是创建实例的两种方式:

Horizon创建流程

  1. 【项目】→【计算】→【实例】
  2. 点击【启动实例】
  3. 分步配置:
    • 详情:名称web-01,可用域nova
    • 源:选择之前上传的cirros-0.6.2镜像
    • 实例类型:m1.small(1vCPU/2GB内存)
    • 网络:选择private网络
    • 安全组:勾选web-sg
    • 密钥对:选择已有或新建
  4. 点击【启动实例】

CLI一键部署

openstack server create \ --image cirros-0.6.2 \ --flavor m1.small \ --network private \ --security-group web-sg \ --key-name my-keypair \ --wait \ web-01

状态管理命令对照

操作Horizon路径CLI命令
启动实例操作菜单→启动openstack server start <ID>
停止实例操作菜单→关机openstack server stop <ID>
重启实例操作菜单→软重启/硬重启openstack server reboot <ID>
删除实例操作菜单→删除实例openstack server delete <ID>
控制台访问实例详情→控制台openstack console url show <ID>

对于批量操作,CLI展现出绝对优势。例如同时创建多个实例:

for i in {1..5}; do openstack server create \ --image cirros-0.6.2 \ --flavor m1.small \ --network private \ --security-group web-sg \ --key-name my-keypair \ web-node-$i & done wait

5. 网络联通性:浮动IP与路由

让实例接入外部网络是基础需求,浮动IP管理是关键环节:

Horizon分配流程

  1. 【项目】→【网络】→【浮动IP】
  2. 点击【分配IP给项目】
  3. 选择浮动IP池(如public
  4. 点击【分配IP】
  5. 在实例操作菜单中选择【关联浮动IP】

CLI自动化方案

# 申请浮动IP FIP_ID=$(openstack floating ip create public -f value -c id) # 关联到实例 openstack server add floating ip web-01 $FIP_ID # 验证联通性 ping -c 4 $(openstack floating ip show $FIP_ID -f value -c floating_ip_address)

网络诊断技巧

  • 查看端口绑定:openstack port list --server <server-id>
  • 检查路由路径:openstack network show <network-id>
  • 测试网络连通性:openstack server ssh --login cirros <server-id> ping <target-ip>

复杂场景示例:创建带路由的多层网络

# 创建专用网络 openstack network create app-net openstack subnet create \ --network app-net \ --subnet-range 192.168.100.0/24 \ app-subnet # 设置路由 openstack router create app-router openstack router add subnet app-router app-subnet openstack router set \ --external-gateway public \ app-router

6. 运维实战:问题排查与优化

真实运维中常需要结合两种工具进行深度诊断。以下是典型问题处理流程:

场景:实例无法通过SSH连接

排查步骤

  1. CLI快速检查实例状态:
    openstack server show web-01 -c status -c addresses
  2. Horizon查看安全组规则
  3. CLI测试网络连通性:
    openstack network test create \ --source-instance web-01 \ --protocol tcp \ --port 22
  4. Horizon检查浮动IP关联
  5. CLI查看虚拟接口:
    openstack port list --server web-01

性能优化案例: 通过CLI收集指标并生成优化建议:

# 获取高负载实例TOP5 openstack server list \ --sort-column status \ --limit 5 # 检查资源利用率 openstack metric measures show \ --resource-id $(openstack server show web-01 -f value -c id) \ cpu_util # 生成扩容建议 openstack aggregate show compute-large-hosts

7. 自动化进阶:从命令到脚本

将重复操作脚本化是专业管理员的标志。以下是几个实用脚本示例:

实例批量快照

#!/bin/bash for vm in $(openstack server list --status ACTIVE -f value -c ID); do vm_name=$(openstack server show $vm -f value -c name) openstack server image create \ --name "snap_${vm_name}_$(date +%Y%m%d)" \ $vm done

安全组规则审计

#!/usr/bin/env python3 from openstack import connection conn = connection.Connection(auth_url=os.environ['OS_AUTH_URL'], project_name=os.environ['OS_PROJECT_NAME'], username=os.environ['OS_USERNAME'], password=os.environ['OS_PASSWORD']) for sg in conn.network.security_groups(): print(f"Security Group: {sg.name}") for rule in sg.security_group_rules: print(f" - {rule.direction}: {rule.protocol} {rule.port_range_min}-{rule.port_range_max} from {rule.remote_ip_prefix}")

资源使用报表

#!/bin/bash echo "=== OpenStack资源报告 $(date) ===" echo "实例总数: $(openstack server list --all-projects -c ID -f value | wc -l)" echo "CPU使用率: $(openstack hypervisor stats show -f value -c vcpu_utilization)%" echo "内存剩余: $(openstack hypervisor stats show -f value -c free_ram_mb) MB" # 生成各项目配额使用情况CSV echo "project_name,instances_used,instances_max" > quota_report.csv openstack project list -f value -c Name | while read proj; do openstack quota show $proj -f csv | tail -1 >> quota_report.csv done

在控制台与终端间自如切换的能力,就像同时掌握图形化IDE和命令行调试器一样,能让OpenStack管理员的工作效率产生质的飞跃。当您下次面对紧急故障时,不妨尝试先用CLI快速定位问题区域,再用Horizon进行可视化确认——这种"双轨并行"的工作模式,往往能带来意想不到的排查效果。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询