Openstack Neutron原理1.Neutron架构Neutron是Openstack的网络组件,整体架构如下:; v* a1 b' e4 \0 ?" `2 e
4 X, E- t2 Q. u, U
简单来说就是:
1、neutron通过plugin和agent提供的网络服务,提供对网络、子网、端口、防火墙等的管理。
2、plugin位于neutron server,包括core plugin和service plugin。
3、agent位于各个节点,负责实现网络服务。
4、core plugin提供L2功能,ML2是推荐的plugin。
5、使用最广泛的L2 agent是linux bridage和openvswitch。
6、service plugin和agent提供扩展功能,包括dhcp, routing, load balance, firewall等。
2.外网访问原理借助一张图说明如何使用Openstack构建虚拟网络且支持物理外网互通。2 Q8 U" N, D, Y2 C _5 w
为这个Tenant创建一个private network,不同的private network是需要通过VLAN tagging进行隔离的,互相之间广播(broadcast)不能到达,这里我们我们用的是GRE模式,也需要一个类似VLANID的东西,称为Segment ID
为private network创建一个subnet,subnet才是真正配置IP网段的地方,对于私网,我们常常用192.168.0.0/24这个网段
为这个Tenant创建一个Router,才能够访问外网
将private network连接到Router上
创建一个External Network
创建一个External Network的Subnet,这个外网逻辑上代表了我们数据中心的物理网络,通过这个物理网络,我们可以访问外网。因而PUBLIC_GATEWAY应该设为数据中心里面的Gateway,PUBLCI_RANGE也应该和数据中心的物理网络的CIDR一致,否则连不通。之所以设置PUBLIC_START和PUBLIC_END,是因为在数据中心中,不可能所有的IP地址都给OpenStack使用,另外的可能搭建了VMware Vcenter,可能有物理机,所以仅仅分配一个区间给OpenStack来用。
将Router连接到External Network
* }( e* k* k1 W) K5 l
经过这个流程,从虚拟网络到物理网络即逻辑上联通了。
基于Dashboard创建网络根据上面的原理我们基于控制台进行操作。
1.创建外网(1) 使用管理员账号进行登录,左侧菜单进入管理员->网络->网络,点击创建网络+ T' O5 v! x& r- L4 I
6 r1 F" \- Q, w( h9 X' v! D8 z6 h
(2)编辑外网信息
选择Flat类型作为供应商网络类型
& Y$ [0 S& K3 Y( X6 k# B" t5 p( y其中物理网络的值必须与/etc/neutron/plugins/ml2/ml2_conf.ini里面定义一致
[ml2_type_flat]flat_networks=physnet1- 1
- 2
/ k3 c6 N4 X' G- R, D7 N- M6 [
(2)编辑外网子网信息
根据物理网络配置编辑外网的子网信息4 O3 q: Z1 }$ m
(3) 编辑子网详情
不需要激活DHCP,分配池的地址选择物理网络可分配的范围
4 U! k3 W8 G: m2.创建内网(1)使用管理员账号进行登录,通过管理员->网络->网络,点击创建网络
(2)编辑内网信息
选择VXLAN作为供应商网络类型1 q- |- r; P0 ]0 T" [8 t) u
- T. b" t$ _. L$ U+ M4 h2 L
(3)编辑内网子网信息
内网信息自定义即可3 C2 m& V& [+ t) q$ `9 I" B5 \
B4 E+ j9 C4 U(4) 编辑子网详情5 k2 Q# a! F; i
内网信息自定义即可
/ o& I, l `- a# T6 p6 {' @
创建完成后,可以看到两个网络信息
4 a: |& k5 z/ e7 _- _' N# b& Z
3.创建路由与接口(1)使用管理员账号进行登录,左侧菜单进入管理员->网络->路由,点击新建路由
外部网络选择我们上面新增的外网
s) r- p$ D1 X; W$ i9 A新增成功后,可以看到相关记录:( l8 u5 Y6 p* Q, u5 x# S# ~% E
" j& U5 x- ^) L6 q6 x& a( z
(2)点击名称所在列,查看具体信息如下
可以看到网关分配的IP为192.168.1.1.199
' Y" j% z& S- b% d0 o
选择接口的TAB,可以看到路由目前的接口信息,状态为运行中就是正常的。
( G4 T9 m6 g* X( w& c
q: [) Q) x! t2 C(3) 在接口列表点击增加接口
选择上面新建的子网
, k5 @# C. e* K( Z Z
2 v! _# \! P" p* D新增成功后,在路由的接口列表可以看到外部网关以及内部接口的运行状态
( O8 W8 d: ?0 n# E0 e
4.分配浮动IP为了让虚拟机能够访问物理网络,需要从外网分配一个IP
使用管理员账号进行登录,左侧菜单进入管理员->网络->浮动IP,点击分配IP给项目,资源池选择上面的外网,浮动IP可以自定义,也可以不填写,按照外网的子网分配地址池分配。
9 w0 Y3 i) B- V1 N4 \: h新增成功后,左侧菜单进入项目->网络->网络拓扑可以看到目前外网与内网的连接情况& O6 A* t+ f9 Q B: N4 _, J8 |
5.创建安全组上面我们分配了一个浮动IP,需要定义入口安全组,实现物理网络访问虚拟网络,以ssh的22端口为例,配置一个安全组.
左侧菜单进去项目->网络->安全,点击右侧按钮``创建安全组
; n1 S" L4 b# L0 c! ~
新增安全组完成后,在该安全组所在行,点击管理规则0 n1 Z2 b+ K7 v1 Q
, `) M- ~, S+ n& ?% h/ j1 _1 w
编辑规则如下,点击添加即可。) ~$ O! E& H$ v3 t9 W- `. a
创建虚拟机实例1.上传镜像(1) 登录后,左侧菜单进去计算->镜像,点击右侧按钮创建镜像4 y2 d" [; y+ G/ l* h
% k/ B8 j% S9 g( O+ k+ q. T选择本地镜像文件,编辑基本信息如下,点击创建即可。/ K+ `, R/ j+ h/ {1 u
2.创建实例(1) 登录后,左侧菜单进去计算->实例,点击右侧按钮创建实例
0 c |3 F8 a! O, k- v* E9 k/ X
: \+ n6 Y% i4 j" [(2)选择镜像4 N" z: k6 O4 q/ l; m4 e
5 S0 J3 v; w7 U
(3)选择实例类型
* |6 D5 t( m7 }+ R1 J0 O. |
' F/ p6 _6 x D, p0 r(4)选择网络
选择内网
# M. C2 @7 }6 t# u
(5)选择安全组
选择创建的22端口规则的安全组
1 i3 x, P' S1 M) m. H/ R) O% Z/ @7 D) I3 z- Y% o
(6) 点击创建实例等待创建
3.绑定浮动IP创建成功后,在实例所在行的动作列,选择绑定浮动IP,选择上面创建的浮动IP,成功后实例的IP地址有一个内网地址跟外网地址。5 h7 w. E. q. Q9 W9 E3 R+ [
4.验证网络互通(1) 在物理网络通过ssh登录虚拟机9 ?0 J/ p3 ^6 q1 }6 V! e
/ t5 |: j: _- X: K# o) \
(2)在虚拟网络ping外部物理网络
# ? B5 X2 U0 o* T) f5 e8 O) Y0 C
查看路由跳转
' @1 ^4 N- u- L2 r网络拓扑如下:
6 Y: C3 \, K4 u; V8 L) p