Openstack Neutron原理1.Neutron架构Neutron是Openstack的网络组件,整体架构如下:. P% ~2 a: i9 v2 O: n
" ?1 }0 H: h$ U0 b1 I' D4 X0 H7 d1 I ^简单来说就是:
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构建虚拟网络且支持物理外网互通。
" r' r# K; @% L: d3 z
为这个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
1 a2 `6 j% K5 E# j! _
经过这个流程,从虚拟网络到物理网络即逻辑上联通了。
基于Dashboard创建网络根据上面的原理我们基于控制台进行操作。
1.创建外网(1) 使用管理员账号进行登录,左侧菜单进入管理员->网络->网络,点击创建网络+ J4 E2 t' b1 t, k" e
, {/ O) d3 T( |' q- v2 H9 ]. V1 R(2)编辑外网信息
选择Flat类型作为供应商网络类型
/ V3 s& _% V+ k, l其中物理网络的值必须与/etc/neutron/plugins/ml2/ml2_conf.ini里面定义一致
[ml2_type_flat]flat_networks=physnet1(2)编辑外网子网信息
根据物理网络配置编辑外网的子网信息( T/ Q5 r' m: Q @2 G" W
(3) 编辑子网详情
不需要激活DHCP,分配池的地址选择物理网络可分配的范围
9 N* \/ D9 T/ ~7 @! B9 X2.创建内网(1)使用管理员账号进行登录,通过管理员->网络->网络,点击创建网络
(2)编辑内网信息
选择VXLAN作为供应商网络类型 g* N$ J. P) S' c9 [2 H$ p
7 K5 I5 U c, p, f5 G- W' [0 i t
(3)编辑内网子网信息
内网信息自定义即可
* K; K2 J2 Y7 H% ^# d* L+ C5 `6 a! f, q( G, o" ^8 i8 g: j
(4) 编辑子网详情* a6 U$ l8 f% N) y# O# x) k% ]
内网信息自定义即可; ]4 @9 `" Q+ }7 g! y7 @. x$ D
创建完成后,可以看到两个网络信息1 d0 {, f+ p2 a1 \$ K0 w
3.创建路由与接口(1)使用管理员账号进行登录,左侧菜单进入管理员->网络->路由,点击新建路由
外部网络选择我们上面新增的外网
8 }$ M, \6 W4 U" [: a新增成功后,可以看到相关记录:
3 `6 @" U/ F% z$ M3 k) s2 H* m7 o; e K- }$ `1 O# l1 _8 O
(2)点击名称所在列,查看具体信息如下
可以看到网关分配的IP为192.168.1.1.199
% J- H5 U/ L; [8 k8 I选择接口的TAB,可以看到路由目前的接口信息,状态为运行中就是正常的。
, k1 p% W; q' X3 U& X4 b
/ B; k: e. @0 j+ Z5 r% B(3) 在接口列表点击增加接口
选择上面新建的子网
0 j# S8 q( d' \8 U$ z) g: O
. ~ H" N6 z2 g新增成功后,在路由的接口列表可以看到外部网关以及内部接口的运行状态
5 l+ C& w' D2 o" I4 @1 @2 ~
4.分配浮动IP为了让虚拟机能够访问物理网络,需要从外网分配一个IP
使用管理员账号进行登录,左侧菜单进入管理员->网络->浮动IP,点击分配IP给项目,资源池选择上面的外网,浮动IP可以自定义,也可以不填写,按照外网的子网分配地址池分配。
- ?2 E: P4 e$ F5 a9 `' i7 C( j2 N
新增成功后,左侧菜单进入项目->网络->网络拓扑可以看到目前外网与内网的连接情况2 a0 ^# E3 d4 Y) n- _1 Y; i
5.创建安全组上面我们分配了一个浮动IP,需要定义入口安全组,实现物理网络访问虚拟网络,以ssh的22端口为例,配置一个安全组.
左侧菜单进去项目->网络->安全,点击右侧按钮``创建安全组
& E6 ^) r6 T, {
新增安全组完成后,在该安全组所在行,点击管理规则
) v% V% t# v) A$ o5 [: u e$ e, A. Q! b" V4 C# X1 p5 c: Z
编辑规则如下,点击添加即可。& ?6 t2 l( Y$ l- d. x0 M: b t
创建虚拟机实例1.上传镜像(1) 登录后,左侧菜单进去计算->镜像,点击右侧按钮创建镜像
7 M5 q9 A/ z$ ]6 f' s# {7 F
0 {, r6 h3 w" L) t" u$ b& q选择本地镜像文件,编辑基本信息如下,点击创建即可。+ i s% z" N ^4 S6 [$ s0 Y% ]0 n
2.创建实例(1) 登录后,左侧菜单进去计算->实例,点击右侧按钮创建实例, ]7 {1 ^( ]7 R+ v' T
# l( l& S l1 W' _(2)选择镜像) V, Z V1 D$ O) A* L
- |3 w4 b E) D1 F# B
(3)选择实例类型
/ b5 h# ^7 q$ r7 B
. i$ e+ {# Y2 U8 Z: |% k2 N(4)选择网络
选择内网
$ B7 [ ]1 _7 _; |5 O5 {) f/ N
(5)选择安全组
选择创建的22端口规则的安全组# r4 j4 G' _, \4 g/ i
5 A0 |7 Z" O5 O" w, d0 b(6) 点击创建实例等待创建
3.绑定浮动IP创建成功后,在实例所在行的动作列,选择绑定浮动IP,选择上面创建的浮动IP,成功后实例的IP地址有一个内网地址跟外网地址。
, \3 G/ H: j% }' r, |
4.验证网络互通(1) 在物理网络通过ssh登录虚拟机6 d% z2 S; R- f
( L* R. j3 D+ m9 r(2)在虚拟网络ping外部物理网络
* k2 k5 V- Q! ]5 D
查看路由跳转
+ O4 T+ I( M+ S5 Z4 s网络拓扑如下:1 Q+ |0 R8 L/ w2 n; M