OpenStack核心组件管理:Heat编排与Neutron网络管理重点总结 一、Heat 编排管理 1. Heat 核心作用 编排复合云应用程序 :通过声明性模板描述云应用程序的基础架构。与 OpenStack 核心项目紧密集成 :调用 Nova、Neutron、Cinder 等 API,按正确顺序创建资源。模板可版本控制 :模板为文本文件(YAML 格式),支持版本管理。Heat 位于 Nova、Neutron 等组件之上,用户只需编写模板,Heat 自动调用各服务接口完成资源配置。
2. Heat 架构组件 组件 功能 Heat-API 提供 REST API,接收请求并转发给 heat-engine Heat-API-CFN 提供兼容 AWS CloudFormation 的 API Heat-Engine Heat 核心,负责任务调度和资源生命周期管理(不直接创建资源,编排后交由其他组件处理) Message Queue 组件间通信 Database 存储堆栈、资源、事件等信息
# 查看 heat 进程 ps -e | grep heat# 查看 heat 服务状态 systemctl status openstack-heat-*3. Heat 模板(Template) 模板定义 :OpenStack 资源的集合(虚拟机、网络、存储、告警、浮动 IP、安全组、伸缩组、嵌套堆栈等)。编写语言 :YAML(YAML Ain’t Markup Language)使用缩进(空格)排版 序列项用短划线-表示 Map 中的 key-value 对用冒号:表示 模板基本结构 heat_template_version : 2018-08-31 description : 模板描述信息parameters : # 输入参数,如镜像ID、网络ID等 image_name_1 : type : stringlabel : Image IDdefault : <image_id> resources : # 定义各种资源,如密钥对、安全组、网络、子网、路由器、端口、浮动IP、实例等 mykey : type : OS: : Nova: : KeyPairweb_secgroup : type : OS: : Neutron: : SecurityGroupprivate_net : type : OS: : Neutron: : Netinstance1 : type : OS: : Nova: : Serveroutputs : # 输出信息,如私钥等 private_key : description : Private keyvalue : { get_attr : [ mykey, private_key] } 4. 常用资源类型 资源类型 说明 OS::Nova::KeyPair密钥对 OS::Nova::Server虚拟机实例 OS::Neutron::Net网络 OS::Neutron::Subnet子网 OS::Neutron::Router路由器 OS::Neutron::RouterInterface路由器接口 OS::Neutron::Port端口 OS::Neutron::FloatingIP浮动 IP OS::Neutron::SecurityGroup安全组
5. 创建堆栈(Web 界面) 进入“项目” → “编排” → “堆栈” → “创建堆栈”。 选择模板源(文件或直接输入)。 填写堆栈名称、参数(如镜像 ID、网络 ID 等)。 点击“创建”,Heat 自动创建模板中定义的所有资源。 二、Neutron 网络管理 1. Neutron 功能概述 为 OpenStack 提供网络支持:二层交换、三层路由、负载均衡(LBaaS)、防火墙(FWaaS)、VPN 。 解决传统手工配置网络无法适应云环境多租户、动态创建/修改/删除网络的难题。 支持SDN(软件定义网络) 理念,灵活且自动化。 2. Linux 网络虚拟化基础技术 技术 说明 TAP 模拟二层网络设备,处理以太网帧 TUN 模拟三层网络设备,处理 IP 包 VETH PAIR 成对的虚拟以太网接口,一端发出的包被另一端接收,用于连接不同网络组件(如 Linux Bridge、OVS、容器) Linux Bridge 二层虚拟交换机,可绑定物理网卡和虚拟网卡,使用brctl命令管理 Open vSwitch (OVS) 产品级虚拟交换机,支持大规模、多主机通信,提供标准管理接口(NetFlow、sFlow、QoS、VLAN、VxLAN 等)
# Linux Bridge 常用命令 brctl addbr< bridge_name> # 添加网桥 brctl addif< bridge> < device> # 添加接口到网桥 # Open vSwitch 常用命令 ovs-vsctl add-br< bridge> # 添加网桥 ovs-vsctl add-port< bridge> < port> ovs-vsctl show< bridge> ovs-vsctl dump-flows< bridge> 3. Neutron 核心概念 Network(网络) 类型 特点 local 仅本地节点,同一节点内实例通信,用于单机测试 flat 无 VLAN tagging,同一网络内实例可跨节点通信 vlan 802.1q tagging,二层隔离,通过 router 实现跨 VLAN 通信 vxlan 基于隧道技术的 overlay 网络,使用 VNI 隔离,克服 VLAN 限制(最多 4096) gre 类似 vxlan,但使用 IP 封装而非 UDP
network 必须属于某个 Project,一个 Project 可有多个 network。 Subnet(子网) IPv4 或 IPv6 地址段,实例 IP 从 subnet 中分配。 定义地址范围、掩码、网关、DNS 等。 一个 network 可以有多个 subnet(CIDR 不能重叠),不同 network 的 subnet CIDR 可以重叠(通过不同 router 或网络命名空间隔离)。 Port(端口) 虚拟交换机上的端口,定义 MAC 和 IP 地址。 实例的虚拟网卡(VIF)绑定到 port,获得 MAC/IP。 一个 port 属于某个 subnet,一个 subnet 可有多个 port。 关系总结 :
Project 1 : M Network Network 1 : M Subnet Subnet 1 : M Port Port 1 : 1 VIF : 1 Instance4. Neutron 架构组件 组件 功能 Neutron Server 对外提供 OpenStack 网络 API,接收请求并调用 Plugin Plugin 处理逻辑网络状态维护,调用 Agent Agent 在 network provider 上真正实现网络功能(如 L3 Agent、DHCP Agent、OVS Agent 等) Queue 消息队列,组件间通信 Database 存储网络状态(network、subnet、port、router 等)
# 查看 Neutron 代理状态 openstack network agent list# 进入数据库查看网络表(mysql) use neutron; show tables; # 包含 networks, subnets, ports, routers 等 5. 三层路由(Router) 虚拟路由器 :实现子网间通信及与外网的通信。基于Linux network namespace 实现隔离,每个 router 有独立路由表。 通过SNAT (源地址转换)使内网实例访问外网。 浮动 IP :通过 DNAT 实现外网访问内网实例。创建路由器并连接网络(Web 界面) 创建路由器,指定外网(如waiwang),启用 SNAT。 添加接口:选择内网子网(如neiwang-1),自动创建路由器接口(IP 为子网网关)。 实例绑定内网 port 后,即可通过路由器访问外网。 # 查看 OVN 中的路由器信息 ovn-nbctl show6. OVN(Open Virtual Network)简介 OVN 是 OVS 的扩展,支持虚拟网络编排。 Neutron 可配置使用 OVN 作为 mechanism driver。 OVN 提供分布式虚拟路由、安全组、L2/L3 服务。 # 查看 OVN Controller 代理 openstack network agent list| grep OVN# 配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini [ ml2] type_drivers= geneve,flat tenant_network_types= geneve mechanism_drivers= ovn7. 常用 Neutron 命令 # 列出网络 openstack network list# 创建网络 openstack network create< net_name> # 创建子网 openstack subnet create--network < net_name> --subnet-range< CIDR> < subnet_name> # 列出子网 openstack subnet list# 列出端口 openstack port list# 创建路由器 openstack router create< router_name> # 设置路由器网关(外网) openstack routerset --external-gateway< external_net> < router_name> # 添加路由器接口(内网子网) openstack routeradd subnet< router_name> < subnet_name> # 创建浮动 IP openstack floatingip create< external_net> # 关联浮动 IP 到实例 openstack serveradd floatingip < instance> < floating_ip> 8. 安全组(Security Group) 通过iptables 限制进出实例的网络包。 定义规则(协议、端口范围、源/目的 IP)。 每个实例至少属于一个安全组。 三、实验示例:创建内网、路由器并部署实例 步骤概览 创建外网 (已有,如waiwang,网络类型 flat,物理网络映射)。创建内网 (如neiwang-1,子网192.168.11.0/24,网关192.168.11.1,启用 DHCP)。创建路由器 (如router1),设置网关为外网(启用 SNAT),添加内网接口。创建实例 ,选择内网,自动获取内网 IP(如192.168.11.4)。验证 :实例可 ping 通外网网关(通过 SNAT),也可通过浮动 IP 从外网访问实例。OVN 查看逻辑交换机 ovn-nbctl show输出示例:
switch <uuid> (neutron-<net_id>) (aka neiwang-1) port <uuid> addresses: ["fa:16:3e:... 192.168.11.4"] port <uuid> type: router router <uuid> (neutron-<router_id>) (aka router1) nat <uuid> external ip: "192.168.108.185" logical ip: "192.168.11.0/24" type: "snat"通过以上内容,可系统掌握 Heat 编排的基本用法和 Neutron 网络的核心概念、架构及操作。