Neutron概述
Neutron是 OpenStack项目中负责提供网络服务的组件,它基于软件定义网络的思想,实现了网络虚拟化下的资源管理。Neutron 的设计目标是实现“网络即服务(Networking as a Service)”,在设计上遵循了基于 SDN 实现网络虚拟化的原则,在实现上充分利用了 Linux 系统上的各种网络相关的技术。
Neutron功能
二层交换
Neutron支持多种虚拟交换机,一般使用Linux Bridge和Open vSwitch创建传统的VLAN网络,以及基于隧道技术的Overlay网络,如VxLAN和GRE(Linux Bridge 目前只支持 VxLAN)。
三层路由
Neutron从Juno版开始正式加入的DVR(Distributed Virtual Router)服务,它将原本集中在网络节点的部分服务分散到了计算节点上。可以通过namespace中使用ip route或者iptables实现路由或NAT,也可以通过openflow给OpenvSwitch下发流表来实现。
负载均衡
LBaaS 支持多种负载均衡产品和方案,不同的实现以 Plugin 的形式集成到 Neutron,通过HAProxy来实现。
防火墙
Neutron有两种方式来保障instance和网络的安全性,分别是安全组以及防火墙功能,均可以通过iptables来实现,前者是限制进出instance的网络包,后者是进出虚拟路由器的网络包。
部署
创建neutron数据库
1 | # 在任意控制节点创建数据库,后台数据自动同步,以controller01节点为例; |
创建neutron-api
1 | # 在任意控制节点操作,以controller01节点为例; |
创建neutron用户
1 | # service项目已在glance章节创建; |
neutron赋权
1 | # 为neutron用户赋予admin权限 |
创建neutron服务实体
1 | # neutron服务实体类型”network” |
创建neutron-api
1 | # 注意--region与初始化admin用户时生成的region一致; |
1 | # internal api |
1 | # admin api |
安装neutron
1 | # 安装Provider networks |
配置neutron.conf
1 | # 在全部控制节点操作,以controller01节点为例; |
配置ml2_conf.ini
1 | # 在全部控制节点操作,以controller01节点为例; |
配置linuxbridge_agent.ini
1 | # 在全部控制节点操作,以controller01节点为例; |
1 | # bridge:是否允许桥接; |
配置dhcp_agent.ini
1 | # 在全部控制节点操作,以controller01节点为例; |
配置metadata_agent.ini
1 | # 在全部控制节点操作,以controller01节点为例; |
配置nova.conf
1 | # 在全部控制节点操作,以controller01节点为例; |
同步neutron数据库
1 | # 任意控制节点操作; |
启动服务
1 | # 全部控制节点操作; |
验证
1 | [root@controller01 ~]# . admin-openrc |