找回密码
 注册
查看: 1837|回复: 2

Neutron控制节点部署

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-10-8 16:10:28 | 显示全部楼层 |阅读模式
, O7 W0 d$ H4 X( H* b
网络节点的实现模型

计算节点的实现模型构建了各种类型的二层网络。属于同一个二层网络的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。

3 X6 ]$ K+ d! u1 V

3 e9 t" W' E) f
' b1 D1 J; _9 H, y3 E( R4 b& F

9 o+ k0 P1 t3 X' U* k, ^
1、软件包安装
1
+ P3 |% Z' |1 B% A
2

' @! p% M( b8 T$ Z) D
yum install -y openstack-neutron openstack-neutron-ml2 \

) i6 s3 N9 y& D1 e
openstack-neutron-linuxbridge ebtables

! _% }9 k( g0 J( o
% X4 c, [9 s: C* J
0 U* q4 l0 n, V
. E# F/ y# A" X  Y
* U7 ?/ p1 T0 n  V  t
2、数据库配置
1

) [- e9 Z/ e- x0 U2 Y* X! H
2

% u: m$ V2 ?9 A! a% C
3
- v9 w  H" B4 K7 k6 _& s
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
$ x  h. ?; C$ _5 E2 Z; |' g
[database]
, y6 a8 A8 N, G. m; g
connection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron
6 t4 e2 ~) F6 ]  p9 q
( q2 r) J( J& K9 h8 k$ j

4 i! l& L  d! g+ ]2 [3 }$ G
  j% h/ o' u& Q- E. G* b0 h
; h( b1 f- ^) R8 s$ e9 {
3、配置keystone
1

: ]$ {& I( U0 ]; }% ^1 a9 a, {% p; V
2
+ z! D, y( \( O; D! a- S
3

* L' ]0 S0 p% `5 a5 z9 A1 O
4

) @' T) {$ O, s9 |( ]! W' F3 ~
5

7 _6 l( z0 f  v# h$ O. R( W) u7 q0 K
6
; Y, u6 Q! _% v3 h
7
, D+ c6 d8 O- X' b
8
& _& w% c! E# e' W
9

5 W* Z7 v* b- S0 }8 X
10
! \! X0 N0 x- D' B7 j" B5 i2 c
11
( z( w$ Z" X/ Z; d. `
12
  X6 P2 r; i# q, @3 U4 L9 i
13

9 E6 J" W! v3 ~2 a. g
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
, f+ e' t2 `6 ^" O; q/ d  F
[keystone_authtoken]
3 b3 e6 [: ]" u) Z; H

: X2 s  }) W% R: J% Y& q7 x5 D" I4 N9 p$ V1 H; D
memcached_servers = 192.168.137.11:11211
- ^$ L5 _7 h; s& w! ~
auth_type = password

: u5 n. m( T; U$ Q7 x6 A0 w  W. i
project_domain_name = default
) y7 i9 y- I- G
user_domain_name = default
) R7 b  a: D% r/ r" k  b
project_name = service
0 ?3 S1 _- Z+ R! Z/ Q# I( k" H6 X
username = neutron
) I3 ~+ `4 ], S! e* v
password = neutron

4 E3 B9 Q; f  Y" i* c# M2 r
[DEFAULT]

8 b& [2 K& A8 F
auth_strategy = keystone
' F  A1 M: ]/ R2 M' ~# K

, I$ `% @! ?: }% x

! o2 T3 {0 ^4 K5 [8 c2 ~; s  J3 v: w& _! x
! m$ l5 [* P* z" w. n# c( N& a
4、rabbitmq(消息队列)配置
1
$ N4 D7 Y1 H" H: _5 V
2

5 T3 o% O) C' f0 B& n/ j
3

. h6 C  x) c4 |& t& a1 G0 v
4

4 |/ b% z/ s2 ?( h, Y' z
5

/ z6 s# O% ?1 v- M: }3 W
6
9 ], ?0 Y# H  ?  u% X. G4 r
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf

+ C: ]( i8 A# ^6 o8 o* u0 \2 [
rpc_backend = rabbit
# F3 [  c+ Z, y
rabbit_host = 192.168.137.11

0 q1 \, l4 R0 z6 b
rabbit_port = 5672
1 g) w2 p9 k& E& R; t( X) n, m# Q9 d
rabbit_userid = openstack

8 u. w$ Z+ C0 s: Q
rabbit_password = openstack

' k" Y( p8 P; N$ Q

; u- A9 q; T$ T  Y+ Y* ?) Q

% k9 M: U8 O3 ?& D1 o2 j
' G' Y; h& `7 C* |+ d! c3 y4 _+ u# k- M/ a$ U! |9 D0 k# u
5、neutron核心配置,启用ML2插件并禁用其他插件
1
5 A9 ^( c0 ?. s2 Y# E. k
2

1 v5 E0 [# `9 u, ~1 b
3

$ c: c7 \( J4 h' ?7 d
4
/ f+ s7 K/ c! h7 k7 j7 y9 @
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
' T8 c# P7 ?  L
[DEFAULT]
$ Q/ Z6 c. V* M! P: ~0 X2 s
core_plugin = m12
+ h; B( s' L2 D9 z1 T
service_plugins =

2 v8 i  m7 Z+ ~7 A  O% F, D( V% N

4 m6 u: G$ }# k, Q/ C5 a# D
0 K4 W4 i8 R1 V+ a+ E7 Q0 J5 `

( i2 Y& y& q6 z) `$ X; r) J4 F* D2 i% M4 ?% Z) F. c1 f
备注:service_plugins等号后面什么都不写就是禁用其他插件
6、配置网络服务来通知计算节点的网络拓扑变化
1

" S& G8 v! d9 U: V
2
- M5 F! G8 j; {
3
) A  k( b8 ^5 P3 [2 G9 Q
4

5 A! p6 e% Z9 i6 @9 z; g  T7 j; E
5
$ n' J3 J: X. K% ?- R; `& M
6

9 D/ H" O: H5 c/ K7 I
7
, c# C, q' b( _. b/ R! j) y) Q' M
8
8 C* R2 y0 m$ u
9

- h4 s( T2 J, ]* @0 x1 Y
10

# Q" Z6 J& i0 U. _7 @8 G! y
11
/ T1 o3 k4 {/ |6 T5 q6 v% ]
12
. U% |+ O3 c6 [* d4 N
13

) U" Y5 v/ R* }$ r3 I
[DEFAULT]
4 R3 ]8 `; P/ j, {- Z2 |
notify_nova_on_port_status_changes = True
4 p8 x2 A) j! i* O4 e9 G1 m+ b
notify_nova_on_port_data_changes = True

4 T) ^: o8 ~0 m# S8 ~
; x3 N$ T  I" v
[nova]

0 {" X+ M. K$ Z! W9 q
! C: J4 W( k$ d, I9 A
auth_type = password

# y/ a% n& i+ u" |9 a% B- `' O
project_domain_name = default
! g% ^- o0 o' o. I( X2 }8 O( k
user_domain_name = default

* J+ ?$ `5 u* J' H3 [' i$ z
region_name = RegionOne
4 k/ G- {6 o2 g! u; h
project_name = service

+ e* [- x" [3 V3 Y7 J% R
username = nova
$ y) P6 G  f& W# g6 r% e) K0 y+ c
password = nova
+ d- L2 S' Z$ j
7 p# q% _0 [8 }9 \( r. G6 A  P* [

  X' t5 F- r& R) \2 F; {8 R  x" x8 N+ g, m% Q. e7 J0 L
( D+ H- a( a: r/ N$ k6 F0 _. ?
7、配置锁路径
1
* @" ^- z8 \5 D/ Y
2

5 ?/ P/ w1 N' }) c. @/ T" ~5 L
[oslo_concurrency]
) K6 q" f! c0 @! z$ B
lock_path = /var/lib/neutron/tmp

' D* D; K6 d, u: c
/ D6 G0 p4 r0 y: f

  x, L5 R& `# h2 P- H! B, f4 t' V1 i. ]* q$ K6 N

4 C+ Q7 s: ~) F4 ]% n4 p0 b
8、配置Modular Layer 2 (ML2)
ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施
编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
  • 驱动的选择
    * V% E, V6 B, c
1

9 V9 c% e+ O1 e# \# F
2
: o( [2 j( y7 k
3
7 o3 u- N* t2 x4 T5 w! }. m$ u# `
[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
( r% _9 q/ q6 g9 @& q/ G+ \
[ml2]
/ F$ v+ F+ L! Y* [! K6 \1 n+ Z
type_drivers = flat,vlan,gre,vxlan,geneve

+ K* k: W; \" U: Q- [* k

9 a# d2 U4 i! G9 S

9 g  K+ a. X* ]9 F: e9 Q$ B+ H% Y
, \- e5 a2 t/ Z) F# P* Z
  • 设置使用什么插件来创建网络! S! |+ z; o1 T0 C' ~
1

$ ~% `2 Q# x8 G7 @
2
% I8 _1 U7 b! E8 P
[ml2]
8 ?+ c! Z5 u4 m. Y8 A( {0 V
mechanism_drivers = linuxbridge,openvswitch
* ]/ s; Q$ h; c! |7 u

' y6 l, ^' S7 s0 m. Q7 D, _
* c4 S: t% W1 Z: V7 `! y! L9 d

+ l& e& L5 X2 S3 [* g/ y$ O- j/ a3 b7 g9 _3 K% `
  • 禁用私有网络(租户的网络类型)" }: x# @( }* L# p# j% R$ `; A
1
" u' J8 R3 n( P5 t5 r% a; k! p
2
/ {( [( B" K9 v
[ml2]

( _  i' L+ Q. K  ]
tenant_network_types =

( J  N0 w7 T, d! `% F
/ g4 Z1 u2 {7 ?4 O! z! k6 Q
+ J4 a+ y, x- g" G. F1 p2 c0 W
7 l! ^( {) [+ }6 r

& X- J1 u1 U1 M) V7 V2 x' E
  • 启动端口安全扩展驱动! `6 l4 I& ]) K3 m8 T) q3 i# Y
1

' ?3 t: Z- b7 C- Z: @$ W( D
2
0 \- q1 I. l7 s( [
[ml2]

0 b9 |2 l- x8 ]$ |6 `
extension_drivers = port_security
! h. S9 T* `( g% D/ D1 \' `

& Z0 p- }+ m* {* p

6 `$ H5 B- k+ q0 f
5 g3 T" ^+ B6 j# B& j% I0 |/ X" ~; g/ s6 z
  • 在[ml2_type_flat]部分,配置公共的网络; g* ]; c6 y! g# C. b# ]
1
( [+ t7 l9 Z2 U( y# J- k) C
2
& x$ I4 J- h. |+ E$ R( ~4 E! u9 D
[ml2_type_flat]
2 E) l# _' a4 |5 G* P6 F/ ^+ u3 g
flat_networks = public
% x0 m, Y& r; j, g/ [
' h# M# n. e6 A% Y6 m8 }( m

4 m$ h' f* ~7 w( w+ R- d9 e& W+ r8 h5 ?" L' D; i& u  _

$ y) L* d  j9 n( e) d4 l3 X
  • 在 [securitygroup]部分,启用 ipset增加安全组规则的高效性+ `3 W& Z1 O: |
1
( T+ e! h0 c: G7 Q3 l
2
& Y' u8 [% {( l) }/ S8 P9 a2 w
[securitygroup]
1 F! `" \" k% B) k
enable_ipset = true
  O; u5 n3 U% L' M; ^, g
( `8 R% E5 ]! ?" V! o
" `/ t, e- [5 T
# Z6 i: @; x- x$ T6 l

* v3 y2 M1 Z5 F/ g/ ]3 e. u9 }
9、配置Linuxbridge代理
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:
  • 在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来: @+ C4 l6 O8 f! q& c: w
1
: r0 t$ Q" h0 ?$ ~, g# Q
2

2 Y& o. Q. d: _
[linux_bridge]

( \7 x: b* B# Z, K9 t  \
physical_interface_mappings = public:eth0

; H8 l1 r: W9 B; p' N5 u) _4 O

( I& T  b: S! ~8 v3 ~
4 r7 Y+ [5 `, I

8 |( [5 \! Y. q0 [' n% O
6 H) L3 s; {" }' H
  • 在[vxlan]部分,禁止VXLAN覆盖网络
    . d" K& X8 P0 @) A
1

+ a  S/ o- u; y  u# _, |+ ?; M
2
7 O2 l0 e1 M6 L5 o: i- y( D# s
[vxlan]
; m! Q& z0 g; {7 T, V/ s1 _; B
enable_vxlan = false
" }5 u2 i& {( E( P, K

! k8 H1 V: N% T4 Z6 v: t
0 G$ I  y& I, N) j% |! O
. ]" k! N: ?" s# |" I0 n
2 Q$ f8 k, f4 R: y2 Z+ O
  • 在[securitygroup]部分,启用安全组并配置防火墙驱动) B4 D1 L# t4 k! B& s
1
: @5 M) F8 K. X4 U1 U
2
: f7 W/ e$ l8 _8 l2 _4 V
3

3 }) H; v' x/ W
[securitygroup]
, {' j" c( T9 Q: ?
enable_security_group = True

1 B9 ~; m+ L) w; J: h1 p
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

9 x9 |6 X6 r/ K

  o) K, `7 R) d( ~9 S
3 q% m. b) M" O4 Q, f
" W0 H+ D) V3 M

. Z1 n$ M8 P! _$ _' i
10、配置DHCP代理
编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:
  • 在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
    3 {, ]: K) U* Y  {# t5 L9 I  B) t
1
7 m3 Y' b4 M0 v2 N
2

5 n1 q, T6 T- g" H" o
3

5 l2 F0 T- V! }
4

3 ^# M9 A0 W6 v) \6 s
[DEFAULT]
  M0 c9 V4 s0 r, D  D+ E
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge

; b: S/ X& K, Z4 _, H
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务

: D1 C5 y1 F$ c& ~  y* m9 {# q
enable_isolated_metadata = true  # 刷新路由使用
3 _/ A7 [- F6 `$ f' a
% D8 x. @8 I8 Y  i5 W
% E( I6 p# m6 J0 K+ J3 @

. C+ J5 ~0 B; [/ Q3 I8 r0 L+ G; p
11、配置元数据代理
<Metadata agent>负责提供配置信息,例如:访问实例的凭证
编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:
  • 在[DEFAULT]部分,配置元数据主机以及共享密码( I9 {: i  E; D! j6 Y: R
1
; b6 q) R$ ?" C9 P
2

" ?# g- n$ {, }% w0 I- T
nova_metadata_ip = 192.168.137.11        # 元数据主机
. A" c! T( |* P8 ^, z
metadata_proxy_shared_secret = shhnwangjian  # 共享密钥

3 d/ ^- A! \4 }' ]- d; b

" d2 q' ~: j/ @' h
4 D2 H5 K! u6 `5 n( i- I

1 I0 W) |5 _; j& a+ N$ z) }" u0 Y
0 U! d- i  c1 _
12、为nova-api配置网络服务
编辑/etc/nova/nova.conf文件并完成以下操作:
  • 在[neutron]部分,配置访问参数
    & T" U" J) n6 ]' e/ Y9 T: V
1

2 H; t/ r3 J7 t# J' U* |0 r  D
2
" _! l# d8 o. i
3

* T6 {% f( M; {8 a) }5 C0 @$ v8 w
4

* d3 k7 m8 v, O" \9 c$ J$ L# ?
5
6 E$ A% y2 A3 e) _2 \7 _
6
1 P; T7 M* ~, H" ]
7
6 ^' N. r) S' R, i
8

" K: [- O7 B) b; S6 w$ v6 N
9

! b4 L. s3 r, b/ s- g
10
' ?! C! O, ~. U3 }& ?9 t
[neutron]

0 e& A  q5 c1 u9 q/ ?6 W
9 w. W. \! p/ |" H$ H/ W9 F# o) B+ o! V5 p  B" s2 Y3 g
auth_type = password

2 h! f+ X6 i/ L( e0 }
project_domain_name = default

) I0 W% r. ?" B5 ^
user_domain_name = default

& C- ?  w: c4 g5 |" O
region_name = RegionOne

, V1 w* [* s3 g5 s# U" `4 W
project_name = service

+ g" m& I! z* N
username = neutron

2 n* ?( Z8 V7 R( a
password = neutron
9 {* g" Z9 n$ J" W( E$ a5 y
  B3 {$ ^, Y4 Y

8 E# x$ Y; _5 H7 D  @4 ~' k
3 n( a+ Y& n7 M9 K( H% h  _" I+ ]1 `' U7 T
  • 在[neutron]部分,启用元数据代理并设置密码; ~7 f- x5 B  S3 P
1
  a  V! t: G$ O7 L9 p: v! S
2
/ c5 l, F2 ~$ b( a) L4 p
3

1 c5 l7 H8 [+ T  C) G7 K6 N! X. J, p/ L
[neutron]
9 T9 ~) E' l2 X
service_metadata_proxy=true
) [7 a! P, k( f5 z# s" `0 X3 e2 L
metadata_proxy_shared_secret = shhnwangjian
8 D7 d0 ^( X! J7 x, l1 j
. {7 W% {: P9 R
. z6 h! [+ U- F7 A

7 a3 }8 n; f( X' X9 C. C8 A7 S9 c9 ]0 A9 `* \" T* `3 l
13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
1
; n0 c. p0 L  H
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

- j. J. o2 |" A' y5 L9 o: ]" x
8 }$ v, H2 V' c0 b! V7 X- a4 ]

! i" W8 ~9 Q8 _: l: @; G2 C6 V; a" |+ F" z1 x

# S0 m7 X5 M( d2 r0 K
14、同步数据库
1

% g1 t" s2 G9 W. c+ N: Y
2

' W# _* ]% |8 z: |6 K" U: r$ X
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
! [$ o) h) J. d* ]
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

# K) E) @5 L4 p9 A" E7 n7 A7 y
. S0 p$ f3 C% U6 s2 P; E/ n2 c
7 F" Q8 ?1 G; j' o
8 L( M$ R7 R- X% e4 E  ?. w

4 N4 A, r' a; t) s
15、重启Nova API 服务
1

& E0 |  p& E6 L- j/ S
systemctl restart openstack-nova-api.service
/ E: r* H! N) @2 o; E0 ?) s

7 f3 q1 |. d$ w# W9 C

6 X3 e- `3 E. ^; @* Q' I, B3 q1 \) R+ C0 M& {! R3 s

$ W' e% f) J& o' S$ `8 m1 N4 p) p
16、启动Neutron服务并配置开机自启动
[
1
, Z4 k) j2 I; b& ^  N1 z. Q
2
( N2 n# q  j0 A7 m
3
; E3 g( _0 L# ^* [+ C6 e9 |
4

# g$ P# l6 Z/ m9 ~( u0 P8 H1 ~5 e
5
3 T- l  F6 a/ F) O* j
6

- {, O% r( j2 ~: N2 U1 U: r4 W4 D
7

7 H$ p' d! p$ c0 T
systemctl enable neutron-server.service \

. L. W8 `6 ^+ k* B$ O  d0 ^
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

- s* ?# N' X" H4 }) U! O9 y
neutron-metadata-agent.service
9 W8 d( O1 a& s) w% k7 J: k4 l

$ q" `. {6 f. Q5 S8 I
systemctl start neutron-server.service \
/ [) I! o, c% ^, I
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

9 B2 T: }( H  n( i' P
neutron-metadata-agent.service
9 k$ m8 q4 }- S% U

; x3 H: I8 A9 K/ K* b1 g

; O9 @5 o7 k$ X$ h0 G- P! ~7 S" o+ k5 @. @# R1 W+ ]0 _8 s

8 M$ O1 v! G( d4 Q
17、keystone上注册Neutron服务
  • 创建neutron服务实体
    ( R- W1 B! P9 W* \6 N
1

0 i% U; A/ Q  q! h0 A
2
. d2 a$ Z( W4 j6 O2 I! X
3

8 |* H% F& m) t' M
source /root/admin-openstack.sh

/ x( r0 S7 X, p/ p# t. m* w
openstack service create --name neutron \

( {7 l2 X" l2 M$ b1 t2 S& r
--description "OpenStack Networking" network

6 P& p! u0 H/ L0 c6 x
1 m$ K$ n% L2 h7 M7 n

/ l" l8 ~/ ^9 d4 b/ _& i4 P. G* I- {$ @
3 X$ J* m, p3 X# v: o
  • 创建neutron网络服务API端点(公有、私有、admin)4 ]" G0 H# G/ K. b  S' V8 Z: u
1

0 }: W% h: ?2 h
2
( i$ q$ _( a- E- k. l
openstack endpoint create --region RegionOne \

9 o' z" z  ?+ g) v" T  ]2 a. e0 c. ^
! \7 N: H1 ]; U( H) N$ ?' q
) z: f- D2 s, u' h

6 [; ]) i# R0 e: R# ]7 ~' x$ B) M( O

$ ]$ o+ j& H8 R& Y. f5 n$ e
1

2 H9 M0 {6 r- T6 d  u% j
2
( r5 z7 B; r/ _5 O4 R/ M
openstack endpoint create --region RegionOne \
, |/ X1 ^; B! U5 q" t+ m4 [2 o

+ F- b: ?; R5 g1 y
$ _) m5 g5 H( V' V1 z* N
  M% f/ f" P* g0 ~4 b9 n% J

5 l4 A& k4 [2 K( z9 F$ E3 Q! `$ s% _
1
9 y: S9 q/ V: K3 Q/ J
2

9 h! ?1 k/ t& }
openstack endpoint create --region RegionOne \
8 O% f8 ]9 G2 Y( k6 c: q

  p% B/ v( ~" L4 O* W
6 i; n5 w2 s$ {" G( W+ k

7 [) s, W8 z* w" s! R
/ L. |+ r3 s6 F6 u7 p
- H& }& B9 g. L  r5 {! c
18、检查neutron是否安装成功
1

0 L& G' ^1 y1 J2 g' Y  O
neutron agent-list
9 B! U. x! O, v& r9 e; o, P

5 `( i3 @$ t. b9 Q* v

/ A: _' J$ D+ `' y. C1 @" H. T, I. a" t
# B0 G0 d$ M7 e) P' O" u/ f  C

$ D# ~" {9 M0 T2 m7 }

# N; y8 |' X3 Q) P& s5 C4 ]; D% V! {; }9 K6 p
分类: openstack
( {$ i8 Y  r' R5 D

' |- L& E+ U& ?: }

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-10-8 16:12:52 | 显示全部楼层
1、软件包安装* w2 z/ u! z5 z# X* m

. M7 m% y% a! _4 G6 Myum install -y openstack-neutron openstack-neutron-ml2 \
1 m$ S$ m2 \- [$ n) Dopenstack-neutron-linuxbridge ebtables9 L7 ?. K% v6 n
2、数据库配置
# I. `/ B' D* w7 |; A, S% `8 `7 D, O% z+ q6 G
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
0 f! W4 [# D$ |8 h& r- R6 W[database]
/ Q, A4 Z- Y9 A# _connection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron8 ]$ A) [# u) \0 O6 W9 i( U
3、配置keystone
1 h: x5 R% c0 ^' C6 D+ n' t1 ^
3 f( g: _; }' M" i/ V/ c, x8 u[root@linux-node1 ~]# vim /etc/neutron/neutron.conf7 h) B) K% N1 r, T9 Q; b4 k1 `' Q. K
[keystone_authtoken]; D, Y  D* E* w2 _% v( y. B
auth_uri = http://192.168.137.11:50000 G5 K4 j! N5 V0 }) a
auth_url = http://192.168.137.11:35357
9 `# z* _( I4 W7 M/ V6 i3 X0 xmemcached_servers = 192.168.137.11:11211
) M4 t' |; ~6 N* }1 [6 Y1 F6 {& |auth_type = password  G! M, W( r" ^$ C- c
project_domain_name = default6 C2 s/ L; j% r6 o6 e, J
user_domain_name = default# f- g' c) R9 \& |% i6 u
project_name = service
8 `! j8 Y' V+ ]username = neutron1 k) k. e5 W, [7 Q# H2 D
password = neutron/ ~" o, [# E/ [  z
[DEFAULT]8 X0 v  x5 R; y3 Z' M' N) t
auth_strategy = keystone4 G+ }0 ^1 Y4 r2 Z3 \, I. j2 M
4、rabbitmq(消息队列)配置
! ~0 d- f' e' w5 S" ]8 v/ w; B- q7 `2 S* g" }+ O7 g# l
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf2 _! D8 T, E$ i
rpc_backend = rabbit6 ?& T) w) t( j1 t2 A4 m8 u
rabbit_host = 192.168.137.11* ?& g  _' T4 h% b- H
rabbit_port = 5672' t5 _7 M* j! o, P
rabbit_userid = openstack
0 h' R) n8 q6 x& o9 w4 hrabbit_password = openstack
6 F0 j6 V3 J. @1 S- z1 N, D5、neutron核心配置,启用ML2插件并禁用其他插件" f1 X' G$ L( \1 p" H
( o- m2 c$ H, l' X* F/ Y  {2 _
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
! U3 m; Q* \; {& o[DEFAULT]6 k7 \3 A3 q" ~  n! P2 n; Y7 b
core_plugin = m12
( f. a5 D- H* Q. n8 n4 j; s1 Eservice_plugins =
: g. v8 m9 [9 a8 q$ _备注:service_plugins等号后面什么都不写就是禁用其他插件& `' I4 q$ `" Q2 O8 m2 a
6、配置网络服务来通知计算节点的网络拓扑变化
3 H. Z8 x8 |3 u2 Y/ @
8 j( X! j0 X, a: h+ [[DEFAULT]8 i5 E4 O$ u+ G7 r: t
notify_nova_on_port_status_changes = True) g8 i' T- I* G* _0 |. w
notify_nova_on_port_data_changes = True
& _% J; x% C0 x8 B % P: i9 r* t5 ]; h" @% M, e2 T
[nova]
3 k- T  S, h2 wauth_url = http://192.168.137.11:35357
8 t* M" p; F# F. \auth_type = password) v: x+ D$ F) g: P
project_domain_name = default
5 v1 k& L# ?( B1 B. T) K, X# muser_domain_name = default7 i6 ^+ y0 {/ P. C3 D* x- R0 U
region_name = RegionOne" j: _' _8 `6 ?, Q
project_name = service
; Y# d- R. |) j8 B) ~username = nova! s( V0 S. r! h- j+ x2 q
password = nova
+ f' I9 H3 X; i3 L: h6 P& C, S7、配置锁路径
& Y1 U% }, e. i- P! A9 L( D$ A! ^
5 Q% v/ R! i1 T* H+ w6 e[oslo_concurrency]
% _( {7 `0 b# `0 m. Y5 qlock_path = /var/lib/neutron/tmp. \  \) u0 K" Z6 P' ~! y
8、配置Modular Layer 2 (ML2)
0 ]0 j8 L0 d& _6 u# \* Y  ^ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施; H+ \8 x( w7 X: p, l. m
编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini. d) x+ i9 N8 U3 P4 L1 y
驱动的选择6 j* O* L; b6 e; m# w! e
( o6 P- [8 b- F3 V' i2 S
[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini& y/ E8 M% F! q4 f' y3 c$ \
[ml2]
& x7 B( h: e) Q5 X& Y3 Vtype_drivers = flat,vlan,gre,vxlan,geneve
$ u6 e5 p+ A1 }$ T) {+ w设置使用什么插件来创建网络* V5 ]# K: v; r* q9 l! j8 e: }
( d8 `$ [# z$ r$ g2 `; P( h
[ml2]
+ y8 k# S9 |5 G: ]' z4 g( Imechanism_drivers = linuxbridge,openvswitch
+ ?6 J9 i/ M& i: D0 {禁用私有网络(租户的网络类型)
3 r3 v2 E! M1 ~# F2 _4 ~8 t5 V
' e5 s5 E  Y% [5 v7 E- s[ml2]
9 j9 \! g: f, ltenant_network_types =
% ?* U) K. F( q' B) ~启动端口安全扩展驱动
- Q3 L7 k0 k% ]. k( |
3 d( t# x4 v4 J# T  o/ L+ ?8 K6 d[ml2]
( Y5 X$ _* N2 t; x9 H6 Mextension_drivers = port_security
- D- Q( ?3 y8 _9 Z! F在[ml2_type_flat]部分,配置公共的网络
( Q! r" i+ u# F. |# V/ |# G
/ F2 B1 J' L: v$ P7 n% K[ml2_type_flat]
4 w: B6 [  h. x7 b  ^( E9 n6 gflat_networks = public( ?, D' {) z: u5 n) X
在 [securitygroup]部分,启用 ipset增加安全组规则的高效性
) m8 F/ m$ ~/ U6 q6 e2 C
" E) o7 s* X9 u& ?& ~; o[securitygroup]
, R6 K* x  V5 F- zenable_ipset = true
9 e! t' X7 c* r5 g2 D: e9、配置Linuxbridge代理
# Z. r  X$ F7 q# W' |Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
" W; g" K; @# v# _" \. y编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:' v% S/ ^( R5 g1 y! W3 f
在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来
" N% R% z! ?: W  H2 T, u$ n! S" \) n* s* ?
[linux_bridge]
+ ?: C7 e, R& E' |/ Iphysical_interface_mappings = public:eth0! V2 s+ E! |. v
在[vxlan]部分,禁止VXLAN覆盖网络) l9 U% I9 C9 c9 c
: v4 X3 ^1 J# k2 b1 _5 \
[vxlan]) s3 x6 V. T8 x: o" I
enable_vxlan = false/ S% A  C2 J6 P& D5 h6 T
在[securitygroup]部分,启用安全组并配置防火墙驱动
5 K! V; F3 J$ M3 I* K7 V* V3 D1 s2 G# H6 ^6 l
[securitygroup]
1 q8 B" }5 v4 O) P! eenable_security_group = True
8 n( M' W8 z9 L, Mfirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
4 ~9 D6 e9 L  d/ c3 E10、配置DHCP代理" P4 Y% [8 b+ z1 L# M
编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:
$ Z7 w- P# L/ x* v6 \- s在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
% I; b& ?# `$ Z$ n: \2 F" d) K
  T% |- m. v5 _3 q/ Q, S8 _4 X' d, J[DEFAULT]: p5 @% n- B3 F0 L' ]
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge
) M2 V, U7 b- J* k2 u3 kdhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务' e0 h+ c) f" F4 v
enable_isolated_metadata = true  # 刷新路由使用, S( _# a& z0 z+ O- t3 s
11、配置元数据代理
& M* l( e+ ?  D+ D3 `' \<Metadata agent>负责提供配置信息,例如:访问实例的凭证
0 i; |+ u' y9 R, m/ L1 t; |编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:
3 ^& Q3 `( G2 F# l' v* m( ^在[DEFAULT]部分,配置元数据主机以及共享密码
" M  f" p/ p/ [3 m2 ^) x) m  B4 I% W) K% e$ f% Y# L" A$ r& ^  H  r
nova_metadata_ip = 192.168.137.11        # 元数据主机
& U& l  t( O  P) g5 }metadata_proxy_shared_secret = shhnwangjian  # 共享密钥
% `  h* w0 E# r5 b12、为nova-api配置网络服务
+ {4 Z' w* _( n6 t- b编辑/etc/nova/nova.conf文件并完成以下操作:2 L# Q, X; |6 v" Q$ a2 B  A
在[neutron]部分,配置访问参数$ ~4 @7 h8 j" T+ `& d, m
% Z0 v  X$ r. H& i: |+ W
[neutron]
+ A5 Y/ D- P; I* zurl = http://192.168.137.11:96966 m( R7 q) x; L7 K3 c
auth_url = http://192.168.137.11:35357: G* {3 @3 K6 g  N! B. D( H* k
auth_type = password
5 V4 [+ Y6 q2 f; O6 A8 |& mproject_domain_name = default
: P$ M: v" |$ \, ~user_domain_name = default
# n5 Y7 x; M6 d0 Jregion_name = RegionOne
; c' E. A. K4 R& w" l1 s% Aproject_name = service
9 T' z: L3 |) v6 R* T5 Rusername = neutron
  P% L# C1 d$ v+ J# r! Xpassword = neutron6 S' s. t1 e8 F' I; F
在[neutron]部分,启用元数据代理并设置密码3 q8 N$ x0 e% S
; Y% X' c' n0 R$ X5 O4 g
[neutron]- r8 t  L# y$ m( I3 X9 y; w, H
service_metadata_proxy=true
! E% T2 D9 [2 q, I9 s. q# s: [metadata_proxy_shared_secret = shhnwangjian/ {- V1 }( P  X/ k8 Y6 S9 _
13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini9 p, V; p. r0 H9 W- Q1 @5 E& Q1 V

0 T: k! d; \* ^: x9 ?+ q* x9 \ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
0 j% u2 @2 C% h; j1 _# U14、同步数据库# h8 b* H) F# t  P- Q6 Q% R0 j
9 g0 f0 e1 ~+ P  T
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \' E0 a, s- c4 ?
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron; i, H% M, K% j5 O+ j* P6 Y! L
15、重启Nova API 服务
* u1 K2 N2 T+ I0 J( b6 {. N4 O
6 l+ O1 {; r: H  j7 |0 t& asystemctl restart openstack-nova-api.service3 W4 o1 p1 p4 @1 M- I# V5 V
16、启动Neutron服务并配置开机自启动1 B0 I* i# h! n

, Z% ?5 ^1 H) |  a0 C+ lsystemctl enable neutron-server.service \
0 ?/ n3 [6 l! Yneutron-linuxbridge-agent.service neutron-dhcp-agent.service \
3 ^' a' |# z$ u: s  s4 B: m$ oneutron-metadata-agent.service
+ `: g' w* k# n: |5 t( v( V2 R / F3 F5 }* H: L. k  p3 C* G
systemctl start neutron-server.service \
0 [8 W4 d+ r0 v! S. B: [7 [neutron-linuxbridge-agent.service neutron-dhcp-agent.service \1 Y2 x: w  U6 n3 g. ]
neutron-metadata-agent.service
' w( Y. _. y0 j, _1 P17、keystone上注册Neutron服务- t1 x+ c1 F% f! B' Z) m; T4 h
创建neutron服务实体
, E& M, l0 ]+ C7 O, ?6 m. c; M; [0 @
source /root/admin-openstack.sh7 @5 |" h- W" Z
openstack service create --name neutron \; ^8 D# U, \8 d7 R% a1 I  Q9 i/ M5 I
--description "OpenStack Networking" network
; m# t7 |/ }9 b. O+ r$ T' a3 J9 l2 y8 ~# I2 ^2 i2 W; @. _
创建neutron网络服务API端点(公有、私有、admin)8 f  r1 V$ D* O1 t

  x: o8 s+ L8 _3 Z5 D; Z% r# eopenstack endpoint create --region RegionOne \
& w$ U' C9 o$ L( Q+ L0 a& x/ `network public http://192.168.13.11:96964 h0 ?7 @. W" v- ~0 K
3 x: l5 |2 S; a: [. c9 K

: m/ w/ j$ A0 K! T! S- sopenstack endpoint create --region RegionOne \$ N0 e3 @; d& F0 S+ I( E2 {
network internal http://192.168.13.11:9696
, L  i% d) }  l# {* y$ }# F" M2 u1 C) a5 p7 a& @9 d

* l9 K" Z' B  D/ C3 kopenstack endpoint create --region RegionOne \7 i0 o, ^7 f' S( q% K, _! J/ `
network admin http://192.168.13.11:9696
4 i- s; d1 f) T- t
, h3 w, D9 S: q7 p18、检查neutron是否安装成功( j' ]. @. [& n6 q* \

. t2 u2 E. G0 ]: i: u- C# cneutron agent-list  R- ~. c1 y; X5 c  \
9 z5 |. Z. @& P; H
分类: openstack3 C1 K: h. F1 G2 n! ]5 P( a

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-10-8 16:43:27 | 显示全部楼层
配置网络服务来通知计算节点的网络拓扑变化9 }  T' e, l) H8 q3 Z- ~- O
% u7 L( E3 t- T3 [' Z! i- w
[DEFAULT]
4 Z0 n1 U7 \8 u0 x7 {' anotify_nova_on_port_status_changes = True7 K2 E3 G) D  J3 r; g& m  L
notify_nova_on_port_data_changes = True
; |+ y0 _6 r  ]' m8 A* H, H1 X* }7 M# U0 J% W: v1 @% j
[nova]
. Q- F8 l! S$ U/ o/ uauth_url = http://192.168.137.11:35357! D$ }- v( l& h' K6 D* ?' Y' I6 |2 |
auth_type = password
" b3 d! _0 |5 v! ~4 x# jproject_domain_name = default
2 y' b8 `; ^. M, Nuser_domain_name = default* j5 s2 N0 U1 f$ n+ j
region_name = RegionOne
: Z8 r6 A5 q! t7 vproject_name = service( N% K. P: L8 ^; b6 y, [! C
username = nova
8 D8 y: {: [; X# y% Wpassword = nova
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 02:24 , Processed in 0.020621 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表