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

Neutron控制节点部署

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-10-8 16:10:28 | 显示全部楼层 |阅读模式
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+ b
openstack-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 B
3、配置keystone
1
2 l' H( }2 b; N  G* ^
2
$ g9 M9 s+ T2 J! X
3

; d* N' |; ^" Q0 ~, T- f
4

  V1 _. V2 k. k- _% z
5
% P2 u6 `7 {' m: x7 I
6

* w$ m  S$ r1 B% u) Q7 B
7
2 a" {# `/ _" i! o+ h8 s8 `5 g
8

3 \: K0 `  m7 `) w. O( ~! k
9
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 ?$ l
12
! 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 f
project_name = service

$ @/ U# p, @' L+ \0 b, x' A
username = neutron
4 u' ^- h" a1 j& d5 j
password = neutron

7 i- G' y9 r# W7 L: [
[DEFAULT]

. I. {2 K' b( }1 q6 P
auth_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 Z
3
* _- H" E& h( a, I
4
$ m! b' k# F$ S. `
5

( B) [2 O+ V- c& R
6
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, R
rabbit_userid = openstack

+ H4 j) h' Y" P7 I* X4 u
rabbit_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 s
2

) @2 m6 U. F& Z4 r1 F
3
' 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! H
service_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# I
6

* e5 F' g& u3 ^( Z
7

  P; b: c$ x9 F  U' s
8
( Q# l0 F/ ?/ ~2 ?( Q# O
9

6 [6 F- u7 ]5 H' V+ c
10
  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& }/ V
13

9 [+ F$ v6 U- n! [, j
[DEFAULT]

$ z1 A. S/ {% M3 {% J- ?! C
notify_nova_on_port_status_changes = True

' m% b8 S: B! R: o1 M
notify_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 Q
auth_type = password

+ E9 p, Y8 \9 O9 U
project_domain_name = default
# f) h) s9 b# J8 w9 c
user_domain_name = default

" F6 p7 o5 h! |) q
region_name = RegionOne
) r7 b0 F+ i0 [! q. [
project_name = service

9 W- X1 ]. h. @1 p2 x; @; F2 M9 N
username = nova

6 U$ s6 @) K% E1 m6 i; h( v* ^9 U
password = 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  q
7、配置锁路径
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* n
lock_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( ~, E
2
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 T
extension_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) s
flat_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+ G
2

. 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  }; N
2

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# g
enable_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 k
10、配置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 S
4

5 n* @$ v& P5 G; a- v0 ~$ V- j
[DEFAULT]

' \, I1 Y* @7 y6 _$ F5 a; C
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge

" R5 u7 X0 y( K# i9 s2 p
dhcp_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 c
2

) 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 a
12、为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 u
4

" r6 b3 M$ k, }
5

' ^/ t: i1 N: Q) _- n
6
& 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# j
10

: 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 i
project_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 p
project_name = service

- }* |& J3 W) n( F& f
username = neutron

( i4 ~' @2 P4 Y* q1 p8 }: z
password = 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: b
service_metadata_proxy=true

0 j' y* q9 R# y+ M9 L* p2 ~- F
metadata_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/ J
14、同步数据库
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: e
15、重启Nova API 服务
1
7 p+ m8 p5 ^% Y* ]0 H
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 y
16、启动Neutron服务并配置开机自启动
[
1

* F$ `' o( \% f
2

, P! _7 P5 P0 g5 z% J6 D! u
3
) C: F4 ?! R0 L
4
3 ^( b+ Q; ^7 k* f
5
. `" |: s0 z* |" e* w
6

( y7 P/ f$ [( R, A
7

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 X
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

3 s, u+ z0 }; g7 o, S1 y- v
neutron-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/ C
17、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 o
1

0 N9 v$ [8 M: ?# c: O, M
2
# 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
分类: openstack, ]4 f: g/ ?$ \7 k& y

& G% P( \% J$ ~, x2 q% N5 W

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-10-8 16:12:52 | 显示全部楼层
1、软件包安装
6 B) \1 b+ Y. F. r# S5 n7 P4 q( w3 T
8 E) t! e! x3 V5 B* d6 Q1 qyum install -y openstack-neutron openstack-neutron-ml2 \8 `# p' w! p' z4 l
openstack-neutron-linuxbridge ebtables9 \# j* F7 ~0 d; W$ m1 {, Q7 ~# f
2、数据库配置& X# ^4 [  V4 g3 U: v! G8 ~
( A# n$ x* @  M" s
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
; {" t  s" P5 {* Q: L; P2 b% C) b6 N[database]% f: ^$ o: P2 k$ C, h" J
connection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron! n" a$ z; w( Q7 h% w
3、配置keystone* l2 o" Q# @, L0 q7 O

9 K* P5 a* n; Q7 x: S[root@linux-node1 ~]# vim /etc/neutron/neutron.conf: V/ a" C; F( h7 U+ a
[keystone_authtoken]1 l( m$ L0 |' _& x
auth_uri = http://192.168.137.11:5000) K1 E& K. Z% B( i/ x
auth_url = http://192.168.137.11:35357
+ R9 Q. H$ F4 L( I, |4 z7 Vmemcached_servers = 192.168.137.11:11211& z+ h* R8 t( h" k0 }
auth_type = password
, Z' f5 O3 s) z3 ?: x3 B9 [: o" Wproject_domain_name = default
1 E4 C! X" |2 F1 kuser_domain_name = default
9 i6 X4 a( a, Rproject_name = service- Y8 I5 A8 U& W+ y
username = neutron1 i: W0 `  f0 x& z) {
password = neutron/ @3 E( Q8 O9 ^1 z3 q+ b
[DEFAULT]$ T8 d) D! m! Q* k  G5 F
auth_strategy = keystone  V5 F% `) B# Q5 B5 ?
4、rabbitmq(消息队列)配置* n" i3 {+ K6 \( T

4 \: F1 k# Q/ @) L9 u( _: A5 n+ s[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
3 ]* B/ W2 [# }3 ?2 Nrpc_backend = rabbit7 E! z( N: d6 A) W; U
rabbit_host = 192.168.137.11
9 P; s' v  S0 xrabbit_port = 5672( h* S  {' W0 H: \0 M
rabbit_userid = openstack
; \3 D! W4 y1 y  ~) ]9 i/ }rabbit_password = openstack
3 N' z& s4 q8 F# J; Q5、neutron核心配置,启用ML2插件并禁用其他插件. s" W2 q! m( o4 z, z* O
( U, I) K! f6 u8 m7 s9 {
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf) ]9 \; n* h, z$ A
[DEFAULT]; D: b+ O* R, _. q. t1 Y8 F5 x# O
core_plugin = m12
: ~- F6 C/ n# {0 ]! d( f( Pservice_plugins =
. T& U( o/ ?+ g5 i) |备注:service_plugins等号后面什么都不写就是禁用其他插件
+ O: W2 I. _& F) c' ^. B8 r" y6、配置网络服务来通知计算节点的网络拓扑变化) d+ b9 s  f+ b% N3 y; E- h3 z
% n3 e( d* k' H+ c9 _. l7 f7 q
[DEFAULT]
% ]7 x7 h& O6 ~4 n+ jnotify_nova_on_port_status_changes = True
( F. ?8 C) @7 i9 R- N0 O" hnotify_nova_on_port_data_changes = True
- Z3 A" h6 T* d% W- |7 o! f( w( G* w $ H" ]# H7 F" U. m. I
[nova]! [5 E0 H8 F+ c" k3 R) S& k, ^2 h: y
auth_url = http://192.168.137.11:35357! O" y( f# B! a% B; a3 U
auth_type = password
0 o& @7 @) V1 k0 L8 F# |7 fproject_domain_name = default
! o% t& q3 Q* y! o6 I* q; s- P6 W1 Yuser_domain_name = default1 U* Y: G: e6 `6 c0 b. k
region_name = RegionOne
; @; e5 d) Y0 @) t/ mproject_name = service
$ `7 k. R$ _0 L0 a' xusername = nova, ?* G! T! Y. W9 i6 ?3 N
password = nova5 [' v+ e  V/ H+ r( U, S: T( h
7、配置锁路径1 `( R$ H' h) _% y

. e4 w; B* Z; A+ |[oslo_concurrency]2 ?6 H% a& {7 v% h# t
lock_path = /var/lib/neutron/tmp1 M8 ^0 r3 j' L' {
8、配置Modular Layer 2 (ML2)1 W5 R1 k7 e; \0 C, i  E; a( ^" P& q
ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施  X( K4 g9 D$ d: q7 ^
编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
1 u, ]! ]6 S) C- B驱动的选择9 x) h" T8 z1 }/ I# N  S
) T, ?# Z, w# L$ N! j1 w
[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
7 r% v+ a( g, ?: {[ml2]. p/ `$ Q* P( R" y# Q
type_drivers = flat,vlan,gre,vxlan,geneve* Y3 R% d: Y' J# T. W  v
设置使用什么插件来创建网络
! l& I4 H( \- j0 g2 S  W0 }1 K$ n- l0 u; I* h, o
[ml2]! O" J8 t' C0 ]: A
mechanism_drivers = linuxbridge,openvswitch
1 d* L9 @  u% s6 P. ]2 b禁用私有网络(租户的网络类型)
( m/ a' i8 [. O1 d2 C- ]7 d# p% z' G; E+ S* W2 ]
[ml2]
: f/ s( l+ H* d1 C2 T  gtenant_network_types =9 ^1 P& y: v2 m+ B7 u- A* g
启动端口安全扩展驱动( ^; V( E  |& P/ j  o1 m2 g

: X: w4 o) `4 f% a9 q( w; d[ml2]6 _9 ?3 {' N$ N3 s/ W, n: u
extension_drivers = port_security7 A* Q, m9 l* A+ d: Q8 [
在[ml2_type_flat]部分,配置公共的网络) B1 \2 ^) Y' t- q

4 R. J' X" G1 T  T$ [4 c[ml2_type_flat]% b- ^, D8 }  h: w. h! O! b  I4 |
flat_networks = public# t' y# e% `8 |! F
在 [securitygroup]部分,启用 ipset增加安全组规则的高效性' R& ~1 }, n4 E& ~* f4 b$ l( m

9 h( u" C3 r: S9 N[securitygroup]0 F, l5 r. V( l- J$ a' D) Y
enable_ipset = true2 O7 r6 ^0 F( d& C, n% E
9、配置Linuxbridge代理  s& V/ E) y1 s6 r5 ~, I
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。1 A1 {4 c2 d& t/ Z6 W( U+ [
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:: e6 z1 O* U* z3 `
在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来" \' p+ r6 n0 R* \9 w  S! n
% L: ]+ U" j( o  W7 q
[linux_bridge]
/ w. e& M; `; M7 F. d. n$ q1 Vphysical_interface_mappings = public:eth0# {  ?8 s; z% _1 v2 r
在[vxlan]部分,禁止VXLAN覆盖网络6 C* `! |* W! {

2 U: c' x/ {  v+ q- w[vxlan]  u+ R' ^1 Y' P7 j8 R
enable_vxlan = false
$ c0 ]% {: V+ Z3 f! K+ q/ r在[securitygroup]部分,启用安全组并配置防火墙驱动
; _0 x, h+ x1 p+ w5 I6 q$ i1 c; N9 Z5 X- K5 R$ f& V
[securitygroup]% d& |% }. O( I  F5 H0 Z4 v# V
enable_security_group = True
3 F  y2 \9 A& j7 u: yfirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
. X# o1 [. C2 A; H- j10、配置DHCP代理
8 H: ]4 \3 O- F* l, Q' ~6 w编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:
1 x2 A8 M/ T/ W% U3 L在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
- E. }  H) }/ _+ W# P: c; ?0 P4 Q* E* f$ U
[DEFAULT]. ^( R3 I: A4 A& j' J  K+ k5 M' {
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge0 s4 l- [* C( V4 X
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务
# L/ L6 e9 b3 H9 r: zenable_isolated_metadata = true  # 刷新路由使用
5 J- \+ r- v8 t2 n11、配置元数据代理% o0 c* X# t, S, _/ O
<Metadata agent>负责提供配置信息,例如:访问实例的凭证
, _( u4 h$ f9 O编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:% D: T9 p" B& Q. H
在[DEFAULT]部分,配置元数据主机以及共享密码
- [- Y: ^$ E2 c3 E
. N+ g6 m1 U, i" xnova_metadata_ip = 192.168.137.11        # 元数据主机, n/ {. K$ N* Z' B
metadata_proxy_shared_secret = shhnwangjian  # 共享密钥
4 W8 c; {( y) ?; [/ m12、为nova-api配置网络服务
% y' \4 b+ C5 p% [; e) F编辑/etc/nova/nova.conf文件并完成以下操作:
2 ^2 `% e& L5 v; a; Q! w) R在[neutron]部分,配置访问参数
) W. Z& |1 ]' ^- G1 f; t* H4 p- H
[neutron]
, V5 K- X8 X/ K* P: ^url = http://192.168.137.11:9696* B8 d: c9 l! S
auth_url = http://192.168.137.11:35357" C; g" [! m" l8 R
auth_type = password( m( h! ?' t, s- |% s6 F0 [
project_domain_name = default
  R0 V" r4 D  U. ~user_domain_name = default
3 b. @/ q6 S" A0 h4 Y4 e: w. Vregion_name = RegionOne4 O- E3 O1 N6 f9 |1 y% k" T5 Z6 g* a
project_name = service
& Q( t, f9 t" Ousername = neutron
" |9 S: p1 J: x# c# L) D! rpassword = neutron6 `# Z8 `" t/ w' b, g
在[neutron]部分,启用元数据代理并设置密码' r9 y) Y8 t  D3 V2 {9 H

& F$ u" ~0 n$ u, M[neutron]
$ ~! G, C! Z, Q+ l% Y7 A2 j& Xservice_metadata_proxy=true8 P# j1 [4 T7 [$ r- X
metadata_proxy_shared_secret = shhnwangjian
4 j: p0 f) Y3 C1 l5 }6 ~* k13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini$ f" z  l9 A* N
6 g; X! W' r5 k; r) K6 k) @" T
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini& }/ \2 ?' d1 H/ k6 A
14、同步数据库
3 ]9 j* X/ ]% o/ G1 p
4 Y: K, m3 k/ O% p1 a' C- ?) }su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
8 I- l/ a- ^# f* D) P--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
- V7 L( k/ J4 G15、重启Nova API 服务
' y. H$ ^; \- f9 \9 t8 p* `7 b7 `
- Q5 t& ^+ r4 V0 Vsystemctl restart openstack-nova-api.service
& ]( N" G6 Q% K  O' F; [$ E3 M- J16、启动Neutron服务并配置开机自启动
; H3 U8 q5 R0 o1 g- L+ W4 W+ }5 a9 C- G& C) y3 ~7 S3 A
systemctl enable neutron-server.service \8 \& x& I" M6 ]. z% y5 ~( w
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
" s2 U; ?1 z! B2 {( Pneutron-metadata-agent.service8 J4 E1 J/ J; e6 }
! S( ?: {; [7 D& I% z4 ]( Y
systemctl start neutron-server.service \
9 y' W0 K; @- R4 @. ?5 ~3 Zneutron-linuxbridge-agent.service neutron-dhcp-agent.service \
3 p) @  Z/ Q3 yneutron-metadata-agent.service
  V! [& q0 K. G$ v+ a( g3 C8 ^17、keystone上注册Neutron服务2 B; |: U5 ]8 X7 R0 R/ p6 ]9 ?  \
创建neutron服务实体, Z! V6 ^4 l4 S* [" i
' T: J7 v$ E2 J
source /root/admin-openstack.sh- J9 ^; P4 ]$ c2 w$ B
openstack service create --name neutron \& Q& N9 g, Y2 `% @1 U3 ]; M6 y9 A
--description "OpenStack Networking" network3 \3 ^: }. i& m; {1 K6 C
  ~+ d8 _- b$ f* X5 ~$ |  A4 e
创建neutron网络服务API端点(公有、私有、admin)
5 K" ^" K" P6 k1 H8 z: y' E/ M( M) s1 |. P* k+ q4 F
openstack endpoint create --region RegionOne \4 U% ^! f% h/ L8 y3 b, }% B2 \
network public http://192.168.13.11:9696; b' D, g; e& ~7 @; c+ V7 x
+ A+ w0 S% v! k* t( _" ]
9 a+ G/ g! s! p4 m
openstack endpoint create --region RegionOne \9 N* t7 ]9 ^  U  [1 `8 {
network internal http://192.168.13.11:9696
+ l. H! }: _7 ]3 _
, z* l* X9 N* K: F$ x1 N: c2 L/ {
openstack endpoint create --region RegionOne \
  g1 W) E, Z; m/ t8 Znetwork admin http://192.168.13.11:9696. |) z6 B8 Q, R9 R* U' s, ~

' d, D  g! B. S$ l* Y6 Z18、检查neutron是否安装成功
! u5 \+ i2 H4 I$ d( ^) N! j1 j8 `
7 Q3 s8 d  p. `+ p% zneutron agent-list
1 @, ~8 ~2 w( j
- e) t9 w- C" s5 m5 Q) H分类: openstack' J1 T, ^; y1 s1 }

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-10-8 16:43:27 | 显示全部楼层
配置网络服务来通知计算节点的网络拓扑变化' `# c8 b9 ~. j- a# {
' a. Z& {9 d: S% R0 [' V/ {( S  F
[DEFAULT]) \4 k0 j5 y( |$ }" K; s
notify_nova_on_port_status_changes = True
( l/ m+ y0 Y. ]  v0 T0 g" rnotify_nova_on_port_data_changes = True6 k# G- K/ n0 {4 @- P6 @& H

9 ~( s: Q: a. \5 k1 l[nova]% `1 A! M( m4 `* ~
auth_url = http://192.168.137.11:35357
; H8 A0 P4 m& I! b  cauth_type = password: c9 F2 h1 i9 {( v$ d
project_domain_name = default  z2 f+ K, a/ a+ u+ _0 m) ?
user_domain_name = default
4 [& E, k. C3 J; Dregion_name = RegionOne
) I, G3 S% S/ U1 P( c- E' B. A2 \project_name = service" s1 `. k6 q5 t# Q% r+ L
username = nova! J  e1 F& d3 K" f
password = nova
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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