OpenStack核心组件管理:Heat编排与Neutron网络管理重点总结
OpenStack核心组件管理Heat编排与Neutron网络管理重点总结一、Heat 编排管理1. Heat 核心作用编排复合云应用程序通过声明性模板描述云应用程序的基础架构。与 OpenStack 核心项目紧密集成调用 Nova、Neutron、Cinder 等 API按正确顺序创建资源。模板可版本控制模板为文本文件YAML 格式支持版本管理。Heat 位于 Nova、Neutron 等组件之上用户只需编写模板Heat 自动调用各服务接口完成资源配置。2. Heat 架构组件组件功能Heat-API提供 REST API接收请求并转发给 heat-engineHeat-API-CFN提供兼容 AWS CloudFormation 的 APIHeat-EngineHeat 核心负责任务调度和资源生命周期管理不直接创建资源编排后交由其他组件处理Message Queue组件间通信Database存储堆栈、资源、事件等信息# 查看 heat 进程ps-e|grepheat# 查看 heat 服务状态systemctl status openstack-heat-*3. Heat 模板Template模板定义OpenStack 资源的集合虚拟机、网络、存储、告警、浮动 IP、安全组、伸缩组、嵌套堆栈等。编写语言YAMLYAML Ain’t Markup Language使用缩进空格排版序列项用短划线-表示Map 中的 key-value 对用冒号:表示模板基本结构heat_template_version:2018-08-31description:模板描述信息parameters:# 输入参数如镜像ID、网络ID等image_name_1:type:stringlabel:Image IDdefault:image_idresources:# 定义各种资源如密钥对、安全组、网络、子网、路由器、端口、浮动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浮动 IPOS::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 addbrbridge_name# 添加网桥brctl addifbridgedevice# 添加接口到网桥# Open vSwitch 常用命令ovs-vsctl add-brbridge# 添加网桥ovs-vsctl add-portbridgeportovs-vsctl showbridgeovs-vsctl dump-flowsbridge3. Neutron 核心概念Network网络隔离的二层广播域。网络类型类型特点local仅本地节点同一节点内实例通信用于单机测试flat无 VLAN tagging同一网络内实例可跨节点通信vlan802.1q tagging二层隔离通过 router 实现跨 VLAN 通信vxlan基于隧道技术的 overlay 网络使用 VNI 隔离克服 VLAN 限制最多 4096gre类似 vxlan但使用 IP 封装而非 UDPnetwork 必须属于某个 Project一个 Project 可有多个 network。Subnet子网IPv4 或 IPv6 地址段实例 IP 从 subnet 中分配。定义地址范围、掩码、网关、DNS 等。一个 network 可以有多个 subnetCIDR 不能重叠不同 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接收请求并调用 PluginPlugin处理逻辑网络状态维护调用 AgentAgent在 network provider 上真正实现网络功能如 L3 Agent、DHCP Agent、OVS Agent 等Queue消息队列组件间通信Database存储网络状态network、subnet、port、router 等# 查看 Neutron 代理状态openstack network agent list# 进入数据库查看网络表mysqluse 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. OVNOpen Virtual Network简介OVN 是 OVS 的扩展支持虚拟网络编排。Neutron 可配置使用 OVN 作为 mechanism driver。OVN 提供分布式虚拟路由、安全组、L2/L3 服务。# 查看 OVN Controller 代理openstack network agent list|grepOVN# 配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini[ml2]type_driversgeneve,flat tenant_network_typesgeneve mechanism_driversovn7. 常用 Neutron 命令# 列出网络openstack network list# 创建网络openstack network createnet_name# 创建子网openstack subnet create--networknet_name--subnet-rangeCIDRsubnet_name# 列出子网openstack subnet list# 列出端口openstack port list# 创建路由器openstack router createrouter_name# 设置路由器网关外网openstack routerset--external-gatewayexternal_netrouter_name# 添加路由器接口内网子网openstack routeraddsubnetrouter_namesubnet_name# 创建浮动 IPopenstack floatingipcreateexternal_net# 关联浮动 IP 到实例openstack serveraddfloatingipinstancefloating_ip8. 安全组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 网络的核心概念、架构及操作。