|
|
6 x! _' ]8 w4 ]/ ]9 I4 j% R
网络节点的实现模型计算节点的实现模型构建了各种类型的二层网络。属于同一个二层网络的VM可以愉快地进行二层通信。可是忽然有一天,一个VM想访问它所在的二层网络之外的世界怎么办呢?如图3-17所示。 图3-17中,一个虚拟机VM1-1期望访问www.onap.org,我们看到,它必须要能到达数据中心(DC)的网关(Gateway,GW)才能访问www.onap.org。那么,VM1-1如何才能到达GW呢?如图3-18所示。 这里面涉及了网络节点,我们暂时不看网络节点里面的内容,先当做一个Host,当做一个黑盒看待,同样,计算节点我们也当做一个黑盒看待。 
图3-17 一个VM访问Internet Neutron是这样假设这个组网模型的。 1)所有计算节点(里面的VM),要访问Internet,必须先经过网络节点,网络节点作为第一层网关。 2)网络节点会连接到DC物理网络中的一个设备(或者是交换机,或者是路由器),通过这个设备再到达DC的网关。我们把这个设备称为第二层网关。当然,网络节点也可以直接对接DC网关,这时候,就没有第二层网关。 3)DC网关再连接到Internet上。 不过呢,上述第2点和第3点,对于Neutron 来说其实是“浮云”。因为对于Neutron来说,图3-18中的GW2、DC External Network和GW3 都不在它的管理范围,那是DC运营商提前规划好的网络。所以,这些对于Neutron而言统统都称为External Network,或者Public Network (Neutron 创建的用户网络称为“私有网络”)。 Neutron所关注的是第1点,它在网络节点中部署了路由器。当然,此路由器是一个虚拟路由器,利用的是Linux内核功能。 图3-18中的GW2, 
Neutron称之为外部网关。Neutron为网络节点中的路由器构建了一个资源模型Router,Router中有一个字段external_gateway_info(外部网关信息),表达的也是外部网关的信息。详见4.6节。 Neutron除了在网络节点部署Router以外,还部署了DHCP Server等服务。Neutron的网络节点的实现模型,如图3-19所示。 
从网络视角看,网络节点分为4层:用户网络层、本地网络层、网络服务层、外部网络层。前两层与计算节点几乎相同,不再啰唆。这里介绍一下后两层。 (1)网络服务层 网络服务层为计算节点的VM提供网络服务,典型服务有DHCP Service和Router Service。 图3-19中画的是DHCP,严格来说,应该称为DHCP Service。关于DHCP的概念,由于文章主题和篇幅的原因,这里只能简述几点。 ①Neutron的DHCP Service,采用的是dnsmasq 进程(轻量级服务进程,可以提供dns、dhcp、tftp等服务)。 ②一个网络一个DHCP Service。 ③由于存在多个DHCP Service(多个dnsmasq进程),Neutron采用的是namespace方法做隔离,即一个DHCP Service运行在一个namespace中。 图3-19中画的Router仅仅是一个示意,它的本质是Linux内核模块。Router做路由转发,还提供SNAT/DNAT功能。为了达到隔离的目的,每一个Router运行在一个namespace中。更准确地说,Neutron创建了namespace,并且在namespace中开启路由转发功能。 ①SNAT:Source Network Address Translation,源地址路由转换;DNAT:Destination Network Address Translation,目的地址路由转换。 ②OpenStack Juno版本引入了DVR特性,DVR部署在计算节点上。计算节点访问Internet,不必经过网络节点,直接从计算节点的DVR就可以访问。 (2)外部服务层 图3-19中,外部服务层只包括br-ex,严格来说,还应该包括Router,毕竟Router才是与外部网络联通的主体,而br-ex不过是将Router对接到网络节点的物理网口而已,如图3-20所示。 
从某种意义上说,br-ex相当于一个Hub。当然,这只是一个比喻而已,br-ex是一个地地道道的Bridge,一般也是选用OVS。 ) \! p1 B& O" U1 M* ?; e
' B, [9 ~% Q( q0 s* s% l, ]2 f
9 m2 y/ x ^0 }1 L0 C" o5 Y% n4 a. x Y; A. |- \: _% M; G7 R) _
1、软件包安装 1 # Z7 W1 i, N p; h5 }% m
2
3 ]/ R2 v% h9 p$ h7 V | yum install -y openstack-neutron openstack-neutron-ml2 \
" F: e. d2 V+ bopenstack-neutron-linuxbridge ebtables
0 H1 W1 `! a+ v2 j3 e . K* E$ i" N+ x& B u0 q1 S( g
|
6 Y% S& F/ k- c. t' l, q
* O) X/ F+ V1 {6 c- t+ J/ K& |7 `% j' J" h% @7 U' N
2、数据库配置 1 i* y% R N" B6 B" O
2 : X! I5 r' _8 Q
3
& ^& F; Z+ A% X g, ~ | [root@linux-node1 ~]# vim /etc/neutron/neutron.conf * s4 V' q9 Q9 s4 z9 Q- U$ |
[database] 5 ]/ P( v9 q! [+ `
connection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron
. u E$ F. L' t
* R3 N4 c- ~7 Q& I" T | , Z; \ Z+ y o. V
& r. r2 f% d# ~& q
* l' C2 ]# ]% I; K4 p" W! [9 A! K2 B3、配置keystone 1 2 l' H( }2 b; N G* ^
2 $ g9 M9 s+ T2 J! X
3
; d* N' |; ^" Q0 ~, T- f4
V1 _. V2 k. k- _% z5 % P2 u6 `7 {' m: x7 I
6
* w$ m S$ r1 B% u) Q7 B7 2 a" {# `/ _" i! o+ h8 s8 `5 g
8
3 \: K0 ` m7 `) w. O( ~! k9 3 ]+ J5 D/ p; ~8 x! t/ H. E9 C* ^) M
10
: Z) i; L' x9 G( w- K- A; M3 \11
) p( z6 |/ c. g2 _/ {3 ]8 ?$ l12 ! G, ? z* i2 i2 ~
13
/ C' y& W4 {6 F* g4 k' L | [root@linux-node1 ~]# vim /etc/neutron/neutron.conf
0 [! c( @9 F* a h+ t[keystone_authtoken] 2 N8 ]1 c+ g: p$ H% A9 u
I: z0 @; U, c4 e, J
9 L0 f1 B6 i, Q7 k( b9 l. H) j
memcached_servers = 192.168.137.11:11211 $ n% s* d8 }8 C$ G- S
auth_type = password " |; P! u7 f o6 ~
project_domain_name = default
& m: a/ b' }, K6 _: C5 f/ [user_domain_name = default
# K* \( y- x. m8 L9 fproject_name = service
$ @/ U# p, @' L+ \0 b, x' Ausername = neutron 4 u' ^- h" a1 j& d5 j
password = neutron
7 i- G' y9 r# W7 L: [[DEFAULT]
. I. {2 K' b( }1 q6 Pauth_strategy = keystone " B! R- ^! Q6 n) ~6 h: K
2 J* p" H% w+ M% h: ~. K- b | + M% o+ f* h6 z3 n
H( D8 ?* T; x% u5 s
x- \+ }5 ~' i5 m r& w6 E
4、rabbitmq(消息队列)配置 1 3 Y `' I$ u/ A' D1 Z+ _' N5 \+ _
2
l6 A9 L" ~0 r' w8 Z3 * _- H" E& h( a, I
4 $ m! b' k# F$ S. `
5
( B) [2 O+ V- c& R6 1 H1 t) a# X1 X( E+ h
| [root@linux-node1 ~]# vim /etc/neutron/neutron.conf j/ G9 q" q( n' W
rpc_backend = rabbit 8 {& c5 M4 s t& O& d F- X
rabbit_host = 192.168.137.11 ' d; C! F& K0 s( W
rabbit_port = 5672
+ l4 a6 j0 a5 a5 H, Rrabbit_userid = openstack
+ H4 j) h' Y" P7 I* X4 urabbit_password = openstack # X m* I1 a0 o! @
- |/ ~- Y* _+ c+ |) ^3 _. t | + z# g2 K% J1 F8 T, d9 J
: n; g# f2 u0 V# t0 e- D# u# O" g9 t( ^5 H% p) r
5、neutron核心配置,启用ML2插件并禁用其他插件 1
9 i$ e. A) f, j& P1 i7 s2
) @2 m6 U. F& Z4 r1 F3 ' D2 ]/ {5 B1 k) E/ M' r
4
) Y: h; x8 f' k, E+ c | [root@linux-node1 ~]# vim /etc/neutron/neutron.conf 6 F) @& B7 k1 J8 y7 q
[DEFAULT] ! H; l* \( i& E: g
core_plugin = m12
( m. a2 W1 F! Hservice_plugins = ' I, h0 }3 q, W: d" ~
* B9 {1 l* a8 _1 g | - z4 h; D, O' k* s
. X# A2 e- }! w% }5 {8 M; t
. `5 s0 U$ C# S d: U
备注:service_plugins等号后面什么都不写就是禁用其他插件 6、配置网络服务来通知计算节点的网络拓扑变化 1 1 _) R( w k+ \ Z/ d7 t: B2 v
2
' b! `9 R/ y0 V0 I+ T5 ~3 - C- r5 t ~5 `; l
4 + b& y3 ^8 O) O7 b
5
. O8 `9 v. A/ ~0 w' X# I6
* e5 F' g& u3 ^( Z7
P; b: c$ x9 F U' s8 ( Q# l0 F/ ?/ ~2 ?( Q# O
9
6 [6 F- u7 ]5 H' V+ c10 W; ^& A, z8 a7 j7 F" M# j, T
11
a9 V6 T. N" }1 o4 W1 Y# [) _12
& }# x8 b# p! N# \ @0 U& }/ V13
9 [+ F$ v6 U- n! [, j | [DEFAULT]
$ z1 A. S/ {% M3 {% J- ?! Cnotify_nova_on_port_status_changes = True
' m% b8 S: B! R: o1 Mnotify_nova_on_port_data_changes = True 0 R8 P# h. q6 `0 r
, v: D. `+ @$ d" d0 h" P
[nova] ; g! y) I# H7 n( V
K( l0 R% v9 m c6 Qauth_type = password
+ E9 p, Y8 \9 O9 Uproject_domain_name = default # f) h) s9 b# J8 w9 c
user_domain_name = default
" F6 p7 o5 h! |) qregion_name = RegionOne ) r7 b0 F+ i0 [! q. [
project_name = service
9 W- X1 ]. h. @1 p2 x; @; F2 M9 Nusername = nova
6 U$ s6 @) K% E1 m6 i; h( v* ^9 Upassword = nova
: s$ v# S& X& D ! I! ^. r& y+ ^1 y
|
0 o0 p9 D7 o7 `- `& |4 L3 P! w- P, z
& i! q! Z( Y% I E q7、配置锁路径 1 8 [3 L: G E. |4 i0 F7 N
2 3 W4 Q/ Y6 H9 M# ?% H s
| [oslo_concurrency]
& Y1 R& ^# Z" ], g* nlock_path = /var/lib/neutron/tmp
( q* ^0 [7 O9 m% u" X& C2 M8 S- M! y 0 O6 o' b' [8 n
|
6 h3 _: E6 E1 y9 n' U3 i [; R
+ F& y$ N# ]. o1 O* G) g
& R* c6 Z. W" {1 U! ?8、配置Modular Layer 2 (ML2) ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施 编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini - 驱动的选择& s0 I2 }1 [, ^! u2 b4 J
1 7 Q I3 T! w, T q
2 0 p. G: B, K- U1 K: x/ J
3 : {( ^: R! n$ T* a
| [root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
! `( S) Q* ^# ~' s! X# Y0 j[ml2] ' s1 W/ ]: {& s* a' T" P
type_drivers = flat,vlan,gre,vxlan,geneve
& K6 l; ~3 @* F 1 h0 G9 R4 V! _" _
|
2 h& h; o% k8 ~! [0 G( e: T0 K. Z( i, h4 Y, ~+ i9 j
6 t. X$ X( F7 s( w- 设置使用什么插件来创建网络
/ B$ }: k3 G8 r' s0 O
1
% E3 |+ H2 R* I- a' O/ u" p( y; {2
# h$ B: J Z1 ?9 P) L7 v | [ml2] ) B: H) ?/ P) R6 G3 a6 X
mechanism_drivers = linuxbridge,openvswitch 0 H/ Q) x4 j& v3 k5 v
" ]% V s. ^# b |
4 U6 ~! N; ~4 i# F' L
$ ^/ R( X- B$ n0 ]3 b# D) n: e
+ P1 A2 c6 N0 @% V9 a) O* Z- 禁用私有网络(租户的网络类型)+ l# \6 q; ]# L+ @6 F, N. T7 [3 }8 M
1
: K" ? d; S- Z( ~, E2 7 n: \& l5 T" L# D* g$ H9 I1 a/ j2 Q
| [ml2]
W: {5 c+ w3 n* {tenant_network_types =
7 {3 z+ P0 d; s f5 m7 u
" Z+ C' U' A* t/ ]1 I7 ? | 2 C. `# Q L4 N8 o: s
: s. t1 d) w3 E# G1 |; N" {* B" k3 f5 p, B- A
- 启动端口安全扩展驱动* H# G. v1 [% ?: T
1 , r& ]" C4 u( a/ G6 \' f
2
& B% \6 k2 a. k# \4 Q2 {( _' H | [ml2]
: i8 A& _* g. m- i* o+ ?2 Textension_drivers = port_security 0 W0 L$ D( \1 u: [4 T
! l" s! w! n- V
|
5 j' n# }* K; E W+ X
+ U2 I- a5 }! M& B
# j& n. J( p, X7 N7 u/ J- 在[ml2_type_flat]部分,配置公共的网络" [. I2 v9 b5 { A4 j% ^
1 * i& n! h- d5 H4 `9 J' o5 \$ W
2 7 L( X R( H& w+ {
| [ml2_type_flat]
; U0 l9 O% E" x" @/ c4 l) sflat_networks = public
' X# l8 Y, G" f+ J 7 {# X2 {5 ]2 G. t
|
6 O% H. x$ \* ~2 I* R; s4 v9 H7 [- p
& ? L c9 i% b+ ? H- 在 [securitygroup]部分,启用 ipset增加安全组规则的高效性+ D! u3 [6 L: V/ ?
1 & U* x, \) v' @$ J4 Q
2 3 N5 v4 {0 V) T6 T# F ^
| [securitygroup] ! U0 [: X- b2 P; K1 k2 ^9 }
enable_ipset = true
; J, ]- b" ]% O# a/ _ a; }6 u' C5 h/ l9 H8 @
| a& K! u1 f4 L6 e$ G
& h0 M4 t4 k( Y s. a$ W6 G
4 S+ k f a$ F/ v7 N n) f
9、配置Linuxbridge代理 Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。 编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作: - 在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来
2 r- w8 E! Z3 u
1
) z+ q) F+ D+ G2
. H# g2 I. q1 l! r0 r | [linux_bridge] ) j9 R; o1 D; G% j& m
physical_interface_mappings = public:eth0
5 o4 r3 O9 y: V* `/ M
$ C3 g0 Y- z$ N9 d, z |
2 l4 `3 W# b5 e @, o$ q2 U. d1 n! t; x" h
: t( R5 Z# C) N5 K- Z7 [7 Q- 在[vxlan]部分,禁止VXLAN覆盖网络" `$ `) E: c5 g
1
6 R# `0 w; D2 H }; N2
6 P' V7 s. m$ f9 L1 X( R( Z' } g | [vxlan] + F4 ?. ^! }/ ?% P% F
enable_vxlan = false
9 u1 M/ Q, H) H# ]$ q 4 Y2 Z' X0 d# e- C; S5 w5 S
| % C8 H2 x9 j1 e) s
" k1 T: E" ~9 T0 X& @: S- ]0 r1 P- j2 a! \* l* d
- 在[securitygroup]部分,启用安全组并配置防火墙驱动
, D( l" O1 k3 \0 u
1 . N, T; H2 J" F0 C+ K' R
2
& [/ }/ C+ ` \' x1 D8 \3
" h! {1 A6 `( O9 P7 R' q | [securitygroup]
& b$ O1 z( n& N# genable_security_group = True / I$ R0 O7 H3 {- V$ {
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
6 @6 r. e0 U) ` 8 O' ^- r1 Y* g% `3 C! H1 _
| ! W" O; @. {' ~2 {7 [
8 E8 m6 F7 @- c2 J
1 F+ X, ]2 c: ]; x3 o2 L9 k10、配置DHCP代理 编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作: - 在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据2 Y" V2 }' g2 m3 q. H. Z% f6 i. x+ ~
1 / L$ |/ z) B# o Z: U1 s
2 . V% X: e- o8 f
3
# e$ p8 G& ]$ G$ K5 B0 [7 K0 S4
5 n* @$ v& P5 G; a- v0 ~$ V- j | [DEFAULT]
' \, I1 Y* @7 y6 _$ F5 a; Cinterface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver # 虚拟接口驱动,使用Linuxbridge
" R5 u7 X0 y( K# i9 s2 pdhcp_driver = neutron.agent.linux.dhcp.Dnsmasq # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务 / U' t6 l% f# H$ k D6 Z
enable_isolated_metadata = true # 刷新路由使用
+ _0 Q1 `4 k8 y& f, q8 }# X& Q / m% W! h" H1 u, h* c
|
: L! R6 j8 I2 V$ r8 W) U( v( f0 L( }
3 `0 C! r; M' a
11、配置元数据代理 <Metadata agent>负责提供配置信息,例如:访问实例的凭证 编辑/etc/neutron/metadata_agent.ini文件并完成以下操作: - 在[DEFAULT]部分,配置元数据主机以及共享密码- m" V# G1 ?0 r" |% _: I
1
$ ^+ B8 m0 {, v% x! } n, |( V/ k4 c2
) W! Q' [- \/ F! v* G/ y | nova_metadata_ip = 192.168.137.11 # 元数据主机 ) a" y8 i8 ?! _: x8 V; I
metadata_proxy_shared_secret = shhnwangjian # 共享密钥
9 m" x; M% y/ d: l; {( J + F, o4 E% p4 i& I
| , y( h' v* {5 i# z# i8 b
3 `: r5 X& t6 D ^9 `
% l9 m* O. F* i" p0 l8 a12、为nova-api配置网络服务 编辑/etc/nova/nova.conf文件并完成以下操作: - 在[neutron]部分,配置访问参数
' c) M9 |/ v' R t; Q/ V" I% v* S
1 - C* q0 E8 Q, Q* H- ?
2
; F1 M. X! x _3
7 E; \! ], {# s, X8 u4
" r6 b3 M$ k, }5
' ^/ t: i1 N: Q) _- n6 & K2 F, L" F# Z+ L# l& c* b% R/ ]+ J
7 5 z$ h5 S K5 t, q# ]# ^
8 ; M* @; c- F. E; V5 d) p
9
) G: e9 a: \$ o' n7 k' \6 f# j10
: G# G8 e9 z4 ?/ ^1 @7 n A' ? | [neutron] 4 t: A( F9 P @7 a
; n; o& h' e; p& b/ [$ @( C7 m8 o, D" ? }$ z/ T! c
auth_type = password
6 H1 O7 z- Q8 G8 |5 iproject_domain_name = default
) y9 r q0 X1 H1 h* E/ _user_domain_name = default
+ J+ i/ _7 Q& l. _region_name = RegionOne
8 @# h& C* Y# ?( G9 I1 pproject_name = service
- }* |& J3 W) n( F& fusername = neutron
( i4 ~' @2 P4 Y* q1 p8 }: zpassword = neutron
6 U* P8 x3 {2 k6 C. y4 e# Z / Y( Z/ E4 Y; I4 c. L6 k7 F5 E
|
) x7 e; Y% p/ b: X; l9 V0 i3 B7 K0 k, \6 Z" d
; q9 c, X$ }' ~1 G* W
- 在[neutron]部分,启用元数据代理并设置密码
- Q; h% r' f2 {! N3 R9 Z" |
1 . {' O5 H, u4 l% U a$ S
2 ( Q8 Y+ n0 H) w3 Q! c: n; Q' O
3 0 f# d6 r) X W. j; u
| [neutron]
$ x2 c1 i2 A) L3 }6 R/ I" G& o: bservice_metadata_proxy=true
0 j' y* q9 R# y+ M9 L* p2 ~- Fmetadata_proxy_shared_secret = shhnwangjian
( u( V9 `2 y4 C6 ^' a 6 V$ @" N1 k7 [" i
| 0 h& }; B$ c% ~5 h
4 _8 B/ ^ ?9 |) t5 c
0 U; e2 c$ A0 X
13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini 1
- c1 Y; k) ~2 r7 @5 o- l | ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini c4 z0 a9 O+ u9 f! N7 s4 ]0 @
) }& W' i$ [6 {' J. ] |
, F2 }0 X- k. _; c H( @' |4 s# F* {
, S/ f1 t# V, M, b+ i3 V/ J14、同步数据库 1
) w/ w0 O2 x/ ^- J' x) ?2 * c0 {, c. H$ r9 B. F; k7 M. `
| su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \ & O. m5 L9 p$ p% o
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
4 C) {- k1 W8 ~ 5 Y% d$ M& D, H
|
& ?# y* `1 Q0 H, Z# b, H u1 a; y7 |$ r, \2 i1 H: L1 G) ^
9 ~: j" U) g1 E7 J7 H. j- q: e15、重启Nova API 服务 | systemctl restart openstack-nova-api.service
2 H0 z. J4 W& B% k S% F
Z9 m4 D# k6 F! }8 O* R. R5 | |
7 _! u3 q1 ]2 L% T6 C. \; ]4 o" U2 ~/ e9 R2 B
9 ~, E1 R/ \7 P, W! c2 y16、启动Neutron服务并配置开机自启动 [ 1
* F$ `' o( \% f2
, P! _7 P5 P0 g5 z% J6 D! u3 ) C: F4 ?! R0 L
4 3 ^( b+ Q; ^7 k* f
5 . `" |: s0 z* |" e* w
6
( y7 P/ f$ [( R, A7
1 T/ n- r9 v4 `9 `3 ]! s | systemctl enable neutron-server.service \ ( N/ q1 W1 [4 f; k3 e
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ 1 p* Z% u, u* E% {2 ^# _2 W
neutron-metadata-agent.service
. T3 W/ E7 v5 t Z3 ]) V$ a- L' g5 C$ D6 o P0 _
systemctl start neutron-server.service \
6 n+ `& x4 p+ j. E7 Xneutron-linuxbridge-agent.service neutron-dhcp-agent.service \
3 s, u+ z0 }; g7 o, S1 y- vneutron-metadata-agent.service 2 j- m2 u/ l( } F6 [" T
" e: ]8 ^% Y, V$ D2 l5 h7 K1 ? |
& X# a ~8 _4 A6 ~7 i8 H- J, `
1 g4 M7 ~! R; o6 M6 `' G1 F
: ]0 Q; O; J2 O2 s/ C17、keystone上注册Neutron服务 - 创建neutron服务实体
3 n3 S: U% S8 T+ S
1 + q6 D9 F9 x Y; J6 \) G
2 ! `0 g1 E- w% Q- ?. i% K
3
; J( ~. D3 N: b: g8 h | source /root/admin-openstack.sh , q; R) d. G( b' I& e& I
openstack service create --name neutron \
1 x3 U ]2 B" H$ P7 G' ^--description "OpenStack Networking" network
3 t- r0 f I/ r( R6 S) E 7 E* E9 p7 J4 H- [8 X
| 7 I/ J$ z( d* a0 E; p# G: c" x
7 X# p) M- N! p
! X# v3 C$ g' _; T! Q0 W; I3 G# T- 创建neutron网络服务API端点(公有、私有、admin)* ?( u5 _# A, g+ p' f+ y x( y
1 & Q* G6 L$ J, I' C9 t% I! h
2 " R# L8 a8 ?$ \6 ]; [4 N4 J: e
| openstack endpoint create --region RegionOne \
N9 c: y1 h& X+ ?, m2 X' Q' m% X; I* o M4 }1 o! V
5 }8 R$ o) X- R7 _ | # q, m( Z/ F+ v7 h1 B% z# v( `
* x, N- d' P/ P( @! M
- k8 l3 w1 O0 F n7 o1
0 N9 v$ [8 M: ?# c: O, M2 # I }6 J5 u- [' ]* w
| openstack endpoint create --region RegionOne \
. K7 `1 v( v" p5 x+ l) ?' W. V; U1 O5 E/ g/ K2 ~ {. f
- x# `+ k! X. }7 e- H; G4 U
|
0 p+ M) U) t8 Z
+ P& _: W0 r* o: G& |5 _) p$ v1 ^) W" h
1 * J) T7 G2 ^; W8 s& B) [
2 * g5 @( H7 ^( Q: Y8 l
| openstack endpoint create --region RegionOne \ " N# U2 ~, `3 q% {- q( A9 u$ j
6 ^. u+ R" _, `! a9 \: C$ V, z
! T+ I9 G; z( Q/ `4 i* Z9 f* n2 I |
# Z& V2 O4 K. Z( {, X$ i. ~
, f" ]( f3 ]; T# }, O$ l/ E2 e# t( s' p) M+ b+ ]* X" X' r3 s
18、检查neutron是否安装成功 1 6 F, C6 G- W3 ~7 l; t7 H
| neutron agent-list
" D) N: C6 A3 Y, F- i& o% ] & d( [ A" ?& O1 j* y! ~8 t( ?
| 6 A; v! A2 J% Y! A% d" r
" k* g1 u2 D, W/ r# D# c$ M8 L
" m2 Q' b, Y& W' ]: ~. I" h4 X1 ?, J( n# k4 j
1 Q G' O$ n7 R; F, H
, l b5 _; {. h4 [& x2 V
& G% P( \% J$ ~, x2 q% N5 W |
|