任务一 了解OpenStack网络服务

1.1•Neutron项目

Neutron OpenStack 虚拟机实例、裸机和容器提供网络服务。
Neutron 网络服务与以下 OpenStack 组件集成。
Ø Keystone 身份服务
Ø Nova 计算服务
Ø Horizon 仪表板

1.2 •Neutron架构

1.3 •Neutron网络基本结构

外部网络负责连接 OpenStack 项目之外的网络环境,又称公共网络。
内部网络完全由软件定义,又称私有网络,是虚拟机实例所在的网络。
路由器用于将内部网络与外部网络连接起来。

1.4 •验证网络结构

网络拓扑

网络拓扑的图表形式

1.5 •试用网络服务的API

1)请求一个admin项目作用域的令牌。

2)导出环境变量OS_TOKEN,并将其值设置为上述操作获取的令牌ID

3)通过Networking API v2.0获取当前网络列表。

[root@node-a ~]# curl -s -H "X-Auth-Token: $OS_TOKEN"   http://192.168.199.31:9696/ v2.0/networks

任务二 理解OpenStack网络资源模型

2.1 •Neutron的网络

网络在整个 OpenStack 网络中位于最高层次,是“根”操作对象。
网络是一个隔离的二层网段,相当于物理网络中的 VLAN ,在 OpenStack 中又被称为虚拟网络。

传统单层网络称为 Underlay (承载网络)
叠加其上的逻辑网络称为Overlay(覆盖网络)

2.2 •提供者网络

提供者网络的特点
Ø 提供者网络为虚拟机实例提供二层连接,可选地支持 DHCP 和元数据服务。
Ø 提供者网络连接或映射到数据中心的现有二层物理网络。
Ø 提供者网络只能负责实例的二层连接,缺乏对路由和浮动 IP 地址这样的功能支持。
Ø 提供者网络以灵活性为代价换取简单性、高性能和可靠性。
提供者网络的应用场景
Ø 作为独立的虚拟网络为云提供网络服务。
Ø 支持自服务网络的外部通信。

创建提供者网络的要点

① 提供者网络默认只能由云管理员创建或更改。

提供者网络只需对应实际的物理网络(基础设施)。

③ 需要指定以下专门的提供者网络信息。

Ø 网络类型( Network Type
Ø 物理网络( Physical Network
Ø ID Segmentation ID

2.3 •自服务网络

自服务网络的特点
Ø 自服务网络使用像 VXLAN GRE 这样的 Overlay 协议。
Ø IPv4 自服务网络一般使用 RFC1918 定义的合法私有地址访问, IPv6 自服务网络总是使用公共 IP 地址范围。
Ø 网络服务使用 L3 代理实现路由器功能。
Ø 自服务网络通常对虚拟机实例提供 DHCP 服务和元数据服务。
自服务网络的应用场景。
Ø 针对大规模应用, OpenStack 部署都会选择自服务网络。
Ø 自服务网络让非特权的普通项目自行管理网络,无须云管理员介入。
创建自服务网络的要点。
Ø 自服务网络的底层实现细节需要云管理员来决定。
Ø Neutron 的配置文件声明定义项目网络细节(示例)。

[ml2]

type_drivers=geneve,flat

tenant_network_types=geneve

mechanism_drivers=ovn

path_mtu=0

extension_drivers=port_security,qos

[ml2_type_geneve]

max_header_size=38

vni_ranges=10:100

2.4•Neutron的子网

Neutron 的子网从属于网络,是 Neutron 对三层子网的抽象。
虚拟机实例的 IP 地址从子网中分配。
子网作为一个具体网段的 IP 地址池,同时为接入该子网的虚拟机实例提供 IP 核心网络服务,还负责保证三层网络之间的路由。
Neutron 的网络和子网是一对多的关系。
Neutron 引入了子网池( SubnetPools )资源 模型。

2.5 •Neutron的端口

端口是网络接口(网卡)的抽象。
Neutron 的端口类似于虚拟交换机上的网络端口,定义了 MAC 地址和 IP 地址。
Neutron 的路由器要绑定端口,以连接到虚拟网络。
端口与子网一样从属于网络,端口与子网之间地位平等,是多对多的关系。

2.6 •Neutron的路由器

Neutron 路由器用于模拟物理路由器,为用户提供路由、 NAT 等服务。
Neutron 路由器并非完整的虚拟路由器软件,只是 Neutron Linux 服务器路由功能的抽象。
云用户不必关心 Neutron 路由器的实现细节,只需要关注其端口、网关和路由表。
Neutron 路由器具有两种端口
Ø 连接提供者网络的外部网关
Ø 连接自服务网络的内部接口
Neutron 中所有的路由表项均为静态路由。

2.7 •网络管理的命令行基本用法

添加网络的顺序
删除网络的顺序

2.8•网络管理的命令行基本用法

1)网络创建和管理命令

① 创建网络

openstack network create

    [--project <项目名或ID> [--project-domain <项目所属的域的名称或ID >]]

    [--enable | --disable]

    [--share | --no-share]

    [--description <说明信息>]

    [--mtu <mtu>]

    [--availability-zone-hint <可用域>]

    [--enable-port-security | --disable-port-security]

    [--external [--default | --no-default] | --internal]

    [--provider-network-type <提供者网络类型>]

    [--provider-physical-network <提供者物理网络>]

    [--provider-segment <提供者网段>]

    [--qos-policy <用于此网络的QoS策略名称或ID>]

    [--transparent-vlan | --no-transparent-vlan]

    [--tag <tag> | --no-tag]

    <网络名称>

网络管理的命令行基本用法

1)网络创建和管理命令

② 修改网络设置

openstack network set  [选项列表] <网络名称或ID>

③ 显示网络列表

openstack network list [选项列表]

 ④ 显示网络详细信息

openstack network show  <网络名称或ID>

删除网络

openstack network delete  [网络列表]

网络管理的命令行基本用法

2)子网创建和管理命令

① 创建子网

openstack subnet create

    [--project <项目名或ID> [--project-domain <项目所属的域的名称或ID >]]

    [--subnet-pool <子网池> | --use-default-subnet-pool [--prefix-length <前缀长度>] | --use-prefix-delegation]

    [--subnet-range <子网范围>]

    [--allocation-pool start=<起始IP地址>,end=<结束IP地址>]

    [--dhcp | --no-dhcp]

    [--dns-nameserver <DNS服务器>]

    [--gateway <网关>]

    [--host-route destination=<主机路由目的子网>,gateway=<网关IP>]

    [--network-segment <与此子网关联的网段名称或ID>]

    --network <子网所属的虚拟网络名称或ID>

    <子网名称>

② 子网管理命令与网络管理命令类似。

网络管理的命令行基本用法

3)路由器创建和管理命令

① 创建路由器

openstack router create

    [--project <项目名或ID> [--project-domain <项目所属的域的名称或ID >]]

    [--enable | --disable]

    [--availability-zone-hint <可用域>]

    <路由器名称>

路由器管理命令与网络管理命令类似。

提供者网络实例分析
提供者网络实例(总体结构)

提供者网络实例分析
提供者网络实例(连接)

自服务网络实例分析
自服务网络实例(总体结构)

自服务网络实例分析
自服务网络实例(连接)

任务三  理解OpenStack网络服务的实现机制

3.1 •Neutron服务与组件的层次结构

3.2 •neutron-server

neutron-server 层次结构

3.3•插件与代理架构

3.4 •ML2插件

ML2 插件推出前后的二层网络实现对比

ML2 插件架构

3.5•L2代理

3.6•Open vSwitch代理

OVS 交换机架构

基于 OVS VLAN 网络

3.7 •DHCP代理

DHCP 代理的任务
Ø 定期报告 DHCP 代理的网络状态。
Ø 启动 dnsmasq 进程,检测 qdhcp-xxxx 名称空间中的 ns- xxxx 端口接收到的 DHCP DISCOVER 请求。
DHCP 代理配置选项
Ø interface_driver —— 创建 TAP 设备的接口驱动。
Ø dhcp_driver ——DHCP 驱动。

 

3.8 元数据代理

元数据代理让虚拟机实例通过网络访问 cloud- init 元数据。
OpenStack 中每个虚拟机实例都可以访问 169.254.169.254 来获取元数据。
OpenStack 通过两种方式实现代理功能:
Ø DHCP 代理 —— 适合虚拟机实例没有浮动 IP 的情形。
Ø 路由器 —— 适合虚拟机实例已配置浮动 IP 的情形。

3.9 •了解OpenStack网络服务的物理部署

控制节点、网络节点与计算节点 —— 适合规模较大的 OpenStack 环境
Ø 控制节点:包括 OpenStack 服务的控制平面组件及其依赖组件,需要部署 neutron-server 服务和 ML2 插件。
Ø 网络节点:包括 OpenStack 网络服务的 L3 组件,以及可选的高可用组件,需要部署 L2 代理和 L3 代理及其依赖组件。
Ø 计算节点:包括 OpenStack 计算服务的 Hypervisor 组件、 OpenStack 网络服务的 L2 交换组件、 DHCP 组件、元数据组件和高可用组件,需要部署 L2 代理、 DHCP 代理和元数据代理。
控制节点和计算节点
Ø 将网络节点并到了控制节点上,控制节点和计算节点都需要部署 L2 代理。

任务四 掌握OpenStack网络服务与OVN的集成

4.1 •什么是OVN

OVN OVS 社区发起的 OVS 子项目,是在大规模环境下部署的、产品级别的轻量级 SDN 控制器。
OVN 扩展了 OVS 的现有功能,提升了 OVS 的工作效率和性能。
OVN 专注于实现云计算管理平台场景下的 SDN 控制器,可以和云管理系统集成到一起。
OVN 通过 networking- ovn 项目与 OpenStack 集成。

4.2 •OVN架构和实现机制

OVN 架构

4.3 •OVN架构和实现机制

CMS
OVN/CMS 插件
OVN 北向数据库
ovn-northd 进程
OVN 南向数据库
Ø 物理网络数据
Ø 逻辑网络数据
Ø 绑定表
ovn -controller 服务
ovs-vswitchd 服务和 ovsdb -server 服务
OVN 实现两种角色
Ø OVN 中心 —— CMS 集成的 API 中心节点。
Ø OVN 主机 —— 提供虚拟机实例或虚拟网络的节点。
OVN 中数据的读写都是通过 OVSDB 协议实现的,即直接读写数据库。
Ø OVN 中的配置数据从北向南(自上而下)流动。
Ø OVN 中的状态信息从南向北(自下而上)流动。
OVN 中的报文处理通过 OVS OpenFlow 流表实现。

4.4 •OpenStack NeutronOVN集成

OVN Neutron 带来的改变
Ø 集成 OVN 后, Neutron 组件数量减少。
Ø 集成 OVN 之后, Neutron 可省去代理,变成一个 API 服务器。
Ø OVN 的配置和状态信息基于数据库进行通信,而不用 Neutron 的消息队列或 RPC 机制。
Ø OVN 的安全组基于 OVS ACL 实现,架构比 OVS 的更加简洁,消耗的 CPU 资源大大减少,性能大幅提升。

4.5 •集成OVNNeutron网络服务部署

验证集成 OVN 的网络服务部署
查看 Open vSwitch 服务的当前状态,可以发现该服务处于运行状态。

[root@node-a ~]# systemctl status openvswitch

节点 mode-a 作为数据库节点 , 查看 ovn-northd ovsdb -server 两个服务当前状态。

[root@node-a ~]# systemctl status ovn-northd

[root@node-a ~]# systemctl status ovsdb-server

节点 mode-a 作为控制节点 , 查看 neutron-server 服务的当前状态。

[root@node-a ~]# systemctl status neutron-server

查看 Chassis 列表,发现有两个 Chassis ,相当于计算节点。

[root@node-a ~]# ovn-sbctl show

Chassis "85ccd27c-eabc-4275-ab23-12c5dbf000c0"

Chassis "c2965e26-df78-4425-a0bf-40b664b63048"

验证集成 OVN 的网络服务部署
2 个节点( node-b )仅作为计算节点。
节点 mode-b 需要 OVN 控制器服务和 OVN 元数据代理服务,查看这两个服务的当前状态。

[root@node-b ~]# systemctl status ovn-controller

[root@node-b ~]# systemctl status networking-ovn-metadata-agent.service

节点 mode-b 还需 ovs-vswitchd 服务和 ovsdb -server 服务,查看这两个服务的当前状态。

[root@node-b ~]# systemctl status ovs-vswitchd

[root@node-b ~]# systemctl status ovsdb-server

查看集成 OVN 的网络服务配置
查看网桥信息

查看集成 OVN 的网络服务配置
OVN 作为一个 ML2 驱动实现, / etc /neutron/ neutron.conf 相关配置。

[DEFAULT]

...

# ML2核心插件

core_plugin=neutron.plugins.ml2.plugin.Ml2Plugin

...

# OVN L3服务插件

service_plugins=qos,trunk,ovn-router

查看集成 OVN 的网络服务配置
/ etc /neutron/plugins/ml2/ml2_conf.ini 查看 ML2 插件的配置。

[ml2]

#网络驱动类型

type_drivers=geneve,flat

#自服务网络类型

tenant_network_types=geneve

# OVN机制驱动

mechanism_drivers=ovn

path_mtu=0

#启用端口安全扩展

extension_drivers=port_security,qos

[securitygroup]

#启用安全组

enable_security_group=True

# OVN ML2驱动本身处理安全组,firewall_driver选项会被忽略

firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

查看集成 OVN 的网络服务配置
/ etc /neutron/plugins/ml2/ml2_conf.ini 查看 ML2 插件的配置。

[ml2_type_geneve]

#配置Geneve包头最大值

max_header_size=38

#配置Geneve ID范围,网络服务使用vni_ranges选项分配网段

vni_ranges=10:100

[ml2_type_flat]

flat_networks=*

[ovn]

#OVS数据库连接的IP地址,即运行ovsdb-server服务的控制节点IP

ovn_nb_connection=tcp:192.168.199.31:6641

ovn_sb_connection=tcp:192.168.199.31:6642

# 启用OVN元数据代理

ovn_metadata_enabled=True

 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部