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

Neutron控制节点部署

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-10-8 16:10:28 | 显示全部楼层 |阅读模式

0 s8 j  v" L0 u: a: i
网络节点的实现模型

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


) ~/ W: Z9 |& J. N" ?2 J$ O5 m# M: `- a6 f2 h8 ~. Z
0 Q. m; |% b: N2 w1 S1 u

9 ~3 \6 G! M( U; I1 Q- U. R, ^
1、软件包安装
1
1 P% o6 M/ I7 ~/ Y3 a( ^
2
; m5 r7 M( t* V8 O. _6 E5 r
yum install -y openstack-neutron openstack-neutron-ml2 \
: R$ j8 I, d' e, K; ^1 I# k
openstack-neutron-linuxbridge ebtables
, e* B" X  d" m# H# d
+ K+ D  h6 Z. G* I
& S; `7 d$ y$ ?( ?

' `% ?5 |! f0 ^' M# g) K( {( h" Q) p. C, k2 c
2、数据库配置
1
  v) B- H4 c  Y9 C9 ]- N
2
2 U+ P2 d$ t* d' {% Q
3
$ r; A9 c0 A. Z* X
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
9 G  a, X' z  p
[database]
7 l: R. D* Y! Q( G4 b2 c. A
connection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron

. i9 P. n* E! i+ U; [- ], l! O3 V. I
: P9 b6 _/ y4 ]$ K. x3 E# j
# l& e" |: z0 e5 y# X% u3 X

. s2 H# x; z$ Y3 F7 Q; x
4 Y8 ~5 c' w- H) z2 ~0 T  e7 S1 G
3、配置keystone
1

% k8 r8 P. m1 |4 H# k
2
2 o8 O/ H+ W8 r/ k* H
3
4 y' a  l4 f  W+ _4 a
4

" f# b) |8 I& C  e9 W; l
5
& X8 ^: d) ]4 U3 a5 ~
6

' y* f8 E/ W& m. l2 j) [! j; u
7

% ~5 ^* l0 A" b' ]
8

/ b: M; g/ f  B4 _& Z
9

; h0 L! s. S1 ~8 f4 I
10

# B) v7 g+ Q  v* I. y* S
11
3 n. E- {- g+ |5 n- W; e9 m
12

$ F2 P( N, O& [' E$ y: Q  ~! ^+ u. j
13

6 ~' ?( u  z/ O7 F4 V8 X0 O7 L
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
5 i. }" N) g5 n, d6 y! f
[keystone_authtoken]

: n6 n' g" Z3 c% y& E
; w) u7 L8 P7 ^
- b3 k6 y8 K0 d6 }
memcached_servers = 192.168.137.11:11211

& U4 [: m- j; `/ b5 O0 `# }3 r
auth_type = password
+ M- l; v( |# q7 r
project_domain_name = default

2 J6 A& P  Q& R6 W2 ?
user_domain_name = default

# D5 O: }4 ?/ C
project_name = service

7 u! T6 y5 |5 y$ D8 U$ b
username = neutron

& _2 X- A. i- L$ Z& `
password = neutron
( Q( `/ K6 |* `6 @% _
[DEFAULT]
* I4 `6 C6 g: k: Z2 b2 }
auth_strategy = keystone

0 C9 h* J! |" U+ T5 B

* p5 S5 Q9 [* h9 K  ?

& t1 B% @8 j& w/ [( @* Z5 X
) k' J  o' u/ }& f" z
9 r3 T$ r2 G# L( O
4、rabbitmq(消息队列)配置
1

! N. o* i6 l  Q) c
2

* {3 o8 }. a3 G  f2 Y1 r
3
% I7 Z0 |8 Q/ T9 i: _/ Q6 n
4
+ }0 I& j6 K; X3 f) r+ i
5

# C3 c$ E0 u7 ]( V
6

9 v& Q9 N2 q* i* z
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf

9 M$ _' M# Z. k7 g4 t0 v
rpc_backend = rabbit
/ ^! K3 ]: g. B! p  T
rabbit_host = 192.168.137.11

6 M7 j% c! _3 K
rabbit_port = 5672

5 P+ r/ M) S* A
rabbit_userid = openstack

# k% v! f  ~( {% R& E9 r
rabbit_password = openstack
& F- o! w# l( ^2 }) s( U: y
4 O3 ?6 Y* H! n4 d
7 ]0 _+ }/ K/ N" r, ~7 w- I

1 E- B" E9 [% E. X5 K, v& y! D& E+ z: Y6 O
5、neutron核心配置,启用ML2插件并禁用其他插件
1
% n) c5 f* B/ H' X+ H3 D: i
2

! B; @8 \3 j7 ~; @. e  [9 v+ O
3
% t6 \/ S2 e( I" b$ I2 F
4

* s$ e" v" A* j) u- k, \
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf

3 H3 R0 x- G5 T2 w% u( t5 m0 i/ Y
[DEFAULT]

4 ]- Q$ e- {1 `4 ?4 B  j' ^% J+ T
core_plugin = m12
3 C1 [- O, {( [2 k! [
service_plugins =

* q& e% C" Z3 q3 r4 F
3 _2 t9 |3 U) V2 d4 `, I0 Z/ i3 e
' H& z, t$ k; Y7 j( W8 j5 p0 c

" z3 i; H) W8 D9 ?9 x0 i2 ^
; I0 `  C7 {1 f0 I8 h5 a8 i
备注:service_plugins等号后面什么都不写就是禁用其他插件
6、配置网络服务来通知计算节点的网络拓扑变化
1
) g  L+ }0 t8 H- s  w5 C: Y
2
7 x4 M/ q( v3 \; w3 s/ U0 G
3

$ Z  K, b0 w/ F/ C1 K) p! i3 z
4
. s) ~* ]8 [9 x8 B
5

% T. J* O5 e: U$ z3 u
6

$ z" y6 _9 Y9 f) I
7

$ E7 a6 ]: s! a  h& M+ H
8

& \" S$ I4 j& a' {- }2 J+ N) ]
9

- {0 w* E8 H0 W1 Q1 f( z
10
1 W8 c! O6 W/ k/ m7 r6 e/ m+ O. F1 T
11
2 ?- s# g: ^5 ~- E% v
12

9 r. e; C# d. w5 g# U6 U
13
: m# Z: G, }2 X6 K7 t% k  G
[DEFAULT]

/ T7 O2 o+ p8 z7 E1 v$ U# Q' j
notify_nova_on_port_status_changes = True
' d- J/ w7 Z+ [  Z- P5 ?
notify_nova_on_port_data_changes = True

7 e* L, c( p" \+ o7 m4 V
7 D: {; ^& n( i
[nova]

& a% A1 y9 \# s3 ?0 H# [4 g- r  \1 q( Y  W
auth_type = password

" l) P2 {; \6 s
project_domain_name = default

) ]9 f( u* f$ r9 H) l8 m
user_domain_name = default
/ s8 c! S' Z' d4 U6 q+ T% S
region_name = RegionOne
7 P% ^. A) @  z# _9 o
project_name = service

! K4 s( |+ ?3 E7 s# {8 v" F
username = nova
) w( `: F% a* O
password = nova

: R: U, s; ^( X3 ~

7 W+ ]0 m$ e& l) t
0 a% M4 @9 b. m# Z8 Y: W- n7 q
  L" Q9 r# j% x% |$ F

$ B# o; D3 C, R
7、配置锁路径
1
! A9 S$ {/ s3 P0 }2 o, j( F
2
) h$ T- ?0 P$ J1 a
[oslo_concurrency]
5 [. n7 H) e0 `/ c4 ~
lock_path = /var/lib/neutron/tmp

, }1 X$ ]/ R6 S9 Y4 V3 U: [* ~! V

) e3 Z* A+ V, J9 U9 U2 ?0 ?

/ j  I- J! @& n. c1 o3 B+ P' e9 L4 J. C0 u& N$ \
/ h. E! i4 q# _8 Z  }+ q
8、配置Modular Layer 2 (ML2)
ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施
编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
  • 驱动的选择! P( m3 i4 B$ X
1

& v$ z4 ]" n4 P/ i' `- j1 |
2
7 l/ i$ S, d# A' x
3
$ U1 n5 B# `( l3 a% k3 h2 p1 X# T
[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
5 y/ Z& j; v( V% z
[ml2]

8 X1 B8 q  W* r; H1 ]* d
type_drivers = flat,vlan,gre,vxlan,geneve

: k! b; n6 o4 h0 i! Q

( ?) {9 d. G4 _1 R2 l& y! G

2 s; I% V2 v; [$ O! w9 A
- m9 u6 d4 a1 Z$ C4 m  C: a( E2 K% Z7 [3 C* c4 ^1 L9 H
  • 设置使用什么插件来创建网络9 u, m5 J% B+ e* P) O# Q% [3 @1 S8 s' n
1
# u) c! X$ m" Q" X9 [
2
) j! L1 }2 \, {, i
[ml2]

3 U- |) T, V6 [+ ?) q) a0 O
mechanism_drivers = linuxbridge,openvswitch

5 L7 e4 b- [& A. I8 Z

" I5 Z" a1 [7 |- t. L8 D0 H
/ F; Y8 m7 ?2 ?
! `2 r: r8 |% W7 @

; S$ a2 b; h4 s6 z' @- a. b
  • 禁用私有网络(租户的网络类型)
    % S% ?% z' \: i( f& X% O
1
6 P# x, W; S: \( ^5 n" b4 ^  i0 g
2
  q% G" s  q; I% k- W& l
[ml2]
. \' c4 G+ E' k, U$ c2 H' P1 }
tenant_network_types =

* S% y; ~, e5 v6 `% W' w
$ w3 ^$ c! b! \/ |6 j& V8 O5 j
4 c  |" [' D; `

" ^+ [; ]& K% \+ ^) i; k6 u. X, Y. ~0 Q
  • 启动端口安全扩展驱动# U+ P* i( J. A5 y, m; J3 k
1
9 r+ X8 o+ V  Z9 r, ~$ B5 f5 V0 y
2
, \6 _7 f/ G8 E. ~) Z; ]$ K7 h
[ml2]
+ j2 x, [/ s# R( H- B( }
extension_drivers = port_security

( T  g1 T. n6 c: r5 o

0 t! S9 _9 [  O- E7 @
8 D6 ~2 ~' ?* e; E' u
' _: @& c9 S$ n1 K
8 n" H/ {) r- f# _; k
  • 在[ml2_type_flat]部分,配置公共的网络6 n$ e% t" j+ l. u
1

, z: R8 H2 m% B
2

" \3 r; V0 n( a0 x+ t
[ml2_type_flat]

9 r3 g% j9 G2 h; B* H+ g
flat_networks = public
. o( k3 ]+ n+ w8 k+ t5 S
3 w; h) @! ?0 ?6 s+ n. W# q) A
( N7 d: z& w$ x7 u
, T: u9 J2 h% K+ N$ B( m* y

$ M+ e" h! N' H5 p' V
  • 在 [securitygroup]部分,启用 ipset增加安全组规则的高效性
    4 Y9 ^' w! H- r
1

7 u. n+ }  m4 C5 |
2
. s/ O, q5 Z" S& r$ Q; d5 j
[securitygroup]
2 K! V4 [7 Q! ^4 G
enable_ipset = true

& d5 x2 v* a1 m, G( y% B2 W. T& [' |; I
1 W/ r8 ?( S6 z6 u0 l" ]% {5 [
" u% F; ]/ `9 E$ w% c% P6 Q

- A) _1 B0 ?& x0 S7 y& E+ |7 D3 Y8 s! `; V9 b
9、配置Linuxbridge代理
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:
  • 在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来% r; F$ b1 ]0 s% L/ T
1

% k$ ~6 o1 b- |' W6 Q* n: B2 f& m
2
1 q& x! C/ }6 V
[linux_bridge]
) z3 ?, h+ T$ R. b2 m/ k% |. A
physical_interface_mappings = public:eth0
) w. C  v. ]( E' O
$ |, e2 `% ?& S

1 s. c. _- U. w0 z0 ^. U- \# Q: a  S4 Z3 |! [' L% y5 K

9 [1 x" L" @  J- v  }4 `
  • 在[vxlan]部分,禁止VXLAN覆盖网络
    ! ]7 N1 R) x; y3 ]* u8 [9 S% z
1
+ @) Z* Q2 B+ T7 Q
2
* D. D/ t0 h2 P) K* ~
[vxlan]
) l4 v+ `. J$ g' C$ f
enable_vxlan = false
% l/ U/ P, m( ]1 j: u5 b5 @. A
! e, z3 q- K% E2 d, R( C
" a- v5 j7 L: S
0 w; [5 {- w, b4 b: D/ f
# c7 w* R: y. w) ?: ?5 v7 ^4 b% ^
  • 在[securitygroup]部分,启用安全组并配置防火墙驱动
    ! S. |' N! r% J& i
1
7 X2 q1 X# B2 T* y/ ^! H$ p1 j
2

6 x$ U2 r2 Z) E* N
3
/ p7 B6 m( l  }
[securitygroup]

. q6 R+ V2 t5 H' D) h0 L
enable_security_group = True
( \* A9 D( h0 r- z3 h* s+ g
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
2 O; J7 n" [# Y

( ^+ e* m7 W. @. x: E! S4 O( ]" `7 G
/ b# S6 n8 t7 H5 j5 I

5 b  I; K' K$ @- M( C7 ~7 ~$ i7 [5 u7 b+ p, S* C/ s* X. Z  I" M
10、配置DHCP代理
编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:
  • 在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据% @6 U& J# s. ?+ T( s
1
$ U, F. l( D( A5 v
2
2 A) x; U# |4 s3 X0 R9 B- P
3

9 ]9 O. H) g" v+ z8 d/ c- }
4

& f* U3 ~- W/ d* g$ N8 f0 i
[DEFAULT]
/ @9 v* C8 O" u8 y, U& V
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge
1 i8 F5 m+ ^& M  F# R( G
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务
- [7 {* |. L) ]3 o" M& l
enable_isolated_metadata = true  # 刷新路由使用

6 Q+ s( O1 M6 x5 j% N  L3 W3 Q
' w. z" l$ ]+ {, a6 b

* O$ C, J" A+ q" A# Z- ]0 e9 g0 c, w* s% t

1 B$ s9 P2 v' F: c# p
11、配置元数据代理
<Metadata agent>负责提供配置信息,例如:访问实例的凭证
编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:
  • 在[DEFAULT]部分,配置元数据主机以及共享密码
    , E& ?' p% a2 ^7 K* ~' C# S" ~
1

! t2 n/ P4 h' m7 T
2
) @3 {+ d+ n8 W, V' v% }2 v
nova_metadata_ip = 192.168.137.11        # 元数据主机

4 i: `9 v* I+ l% P1 ]$ G
metadata_proxy_shared_secret = shhnwangjian  # 共享密钥

7 N8 k; z& x7 H1 D& O0 @0 ?) p
6 D0 H6 a' p( }6 j6 S, A4 r
6 H0 k0 T  F* M/ k% x0 Y
6 p: _* i4 U8 H! z9 l

8 G0 o/ ?# c# g6 {* Z8 B' v% Y0 B
12、为nova-api配置网络服务
编辑/etc/nova/nova.conf文件并完成以下操作:
  • 在[neutron]部分,配置访问参数8 ]3 }# ~: k: x
1

5 s) b4 H% k- _6 M1 d* Z
2
0 r9 Z1 q; w/ }- `6 ]
3
* K  R2 N3 f3 F" D3 C2 R, x3 |6 O" f# O
4

+ C9 P) }/ f% N2 y
5
8 o! w# u. G/ v& l+ p5 |% }
6

: h" B1 O' R# Y. g* u
7
9 `5 a, N) Y) F
8
, V9 ?) ^  M! e% F  P% C& a
9
5 P' R9 S3 N- U2 K" {7 F
10

- _8 B/ x$ M1 v9 ^6 g; P
[neutron]

6 c/ n2 m2 C5 v( T3 ]# E5 T+ b. r9 g: }- G* I3 A

' C! {0 V, H, c9 c$ L
auth_type = password

. I6 ~9 |: h+ K. L8 r
project_domain_name = default

) t. ^: r3 M/ S4 V# a( y3 H1 ?
user_domain_name = default

, ~# _* A+ o( s
region_name = RegionOne

6 [( B* P' |" @# j9 m4 Q( D
project_name = service

/ x$ E0 R- U" J) s* X2 M
username = neutron

8 l" [8 A5 J  }2 G' T4 w- |5 k
password = neutron

7 f5 _* v- S2 m
( x: ?3 ^; c/ M

* x7 q4 H3 j+ r5 V& T
: ~" i3 i6 X( U* N5 }
2 J% v$ k8 R  a; }- Q2 J
  • 在[neutron]部分,启用元数据代理并设置密码* C) {9 V' T3 t% @
1

: v4 z: G5 ~$ `3 O3 X
2
2 Z5 ]5 ^1 ?  y5 {- B
3

# G1 K2 P& G- ]4 r7 h" _
[neutron]

7 H  K$ [7 @7 `, y
service_metadata_proxy=true
8 e4 q5 ~2 B$ x- I% v: f# }
metadata_proxy_shared_secret = shhnwangjian

5 X1 `$ d# X% \) |/ H% t# s0 H: P

* t! y& T4 f9 p& U' ]
1 H* `: a$ R; f
* s2 ?8 b. P" w4 |0 t' G

1 G* S# F6 L# c& V3 U, [
13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
1
. J/ m8 z. j' P
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

5 q" z2 B- {! ^- N" p
2 p5 w. G# h' r5 o# \1 |; u

1 @3 Y& i7 V& k9 d+ F' S: x, ~( @2 }/ y5 B" K) C3 y9 p/ k0 J9 j

# l3 _& E- k6 j4 Z/ ~' N& f
14、同步数据库
1

) c) o1 v' {+ z. Z( ]
2
# i8 T7 m* l$ J4 @6 p) ?4 c) W
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
! P- H6 k0 Z+ H; u% y3 u0 i; }
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

' u7 T% a6 n$ q

2 s4 ~* e: O) F3 J7 E
6 Y: z+ ~5 O4 o- n6 O9 s" T! @! i

7 j2 J  Q! [% C% ^. g: l, f- D( k9 H8 B8 |+ k
15、重启Nova API 服务
1
  Z+ d) V' N  s, H3 V8 |' v) d
systemctl restart openstack-nova-api.service
0 A7 _' H  E( C  h
: U4 x" w2 T4 U

! u* Y& X2 V" Z/ r3 X; I7 c5 I. A; P
- q, z' x7 F- t* F. y; e8 I
/ L! ^) {4 m7 J, h% t; v
16、启动Neutron服务并配置开机自启动
[
1
8 V5 q2 I7 Z6 [5 z
2

& O6 ]+ x* m: j" x% L
3

' c7 w: Z2 K& x, ?  ?9 k0 K
4

* [  z* \: ~( q& N5 Y
5

  \5 ^2 `* q6 s7 [6 x" x2 A
6
+ X7 E3 ?- f* k3 b5 R% }( P
7

; j/ }) N) F$ U: o: p, d
systemctl enable neutron-server.service \
0 N* A7 T* G& [% ^1 Z: I+ n2 q7 T
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
2 G3 U$ q. u% P; k0 e7 @, f7 \
neutron-metadata-agent.service

* t* C0 ?4 U' }" X% v1 d( c1 }  F: n* P2 l( B  u: X
systemctl start neutron-server.service \

9 v  N2 V5 z) h8 N0 p; T6 c
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
; I+ r8 u* t( g1 u8 K& e3 v
neutron-metadata-agent.service
: x6 g7 x; a( f! Z( |

6 R5 s* y! c3 u" `, Z7 o4 ?

# B2 x- Y* K8 n  s# R' |8 @+ o, x0 X- K) B" J% P9 U% c

5 M  D. q& ^% o  o( W3 T
17、keystone上注册Neutron服务
  • 创建neutron服务实体" S( r* C  _, @: Y: ^; y
1

2 }/ F4 x! i8 B* X: c8 q# O3 ^5 a
2
/ `! U' d+ z/ p0 C$ S
3
$ q3 |: @. b8 q# h: e/ |
source /root/admin-openstack.sh
! Y2 L9 a& M8 Q) w7 {/ I3 b
openstack service create --name neutron \
4 a" H$ I$ p' y1 c* c& ?5 P1 H) |
--description "OpenStack Networking" network
3 Y' _3 e1 c# U- A9 l( `$ p

- m0 K% x' S& y9 P( Q! @
7 o+ b& [! F3 g7 q

; o" m! W8 e  v/ D8 h6 E5 t3 A0 y
9 ?9 }+ ?- q' _1 k4 C
  • 创建neutron网络服务API端点(公有、私有、admin)/ e8 G0 ]$ W# c$ a( P/ a
1

5 [5 n) ]2 N* L' D$ I+ D
2

' x& |7 o# f% H
openstack endpoint create --region RegionOne \
! F' @' M) p, V. `9 a1 {* I

- ]# K3 R8 g6 s2 k/ c6 `0 m

% h% x, A* l; ]) P$ V

. y* }0 o! l- K- Z' t2 V5 [) o' S2 f+ W- B- v1 Q' H" k: I9 V- |

8 x; m' C' d) ~' @$ U1 B: V
1
" U# ?. c/ @/ d! C  D, O, h( z
2
3 U0 s! ^1 r! h3 Q% H) s
openstack endpoint create --region RegionOne \
( C* C' L& R2 Z
5 ]5 I8 H1 N' f9 x
: {* f& @0 ^& ~  D

# R% ?9 U: }6 P0 H2 K5 k) g! {6 q8 y2 P1 c% D) J. S

' D0 v% c+ |9 I4 z& `
1
  H8 m  I; [2 H  Y
2
+ T% g# {, y1 N8 c
openstack endpoint create --region RegionOne \
  z1 V2 M. Q9 F2 L7 W8 f' X
2 V* w$ b# D  y/ s. B5 U, u
& h. N# q5 q! u& N

$ X: n3 y5 w. g# U( T% ?
' L" Q" r7 G0 `+ r8 i- w  h) l" H2 Y$ U7 A9 g- `% [$ Y; [
18、检查neutron是否安装成功
1
- _& B# `5 h2 Y
neutron agent-list

) b5 m& x2 B0 F) u* H8 a, d0 P
; ?' n3 w  Z& a2 V' j% l: ]$ `! z
9 s7 ~" B* \# ]" C; `
$ t3 [% A, z# ]. W0 G5 o, \

. `) z5 T$ b3 |0 t. }
) E) `; ]$ K" V; O1 \

5 j# R9 h, N' g/ N! h& h! j1 p/ p6 [+ h. G$ z6 I8 d/ w: L
分类: openstack
& ~% R+ w7 l. L: }/ \

5 _: O2 ^3 J1 {# Q6 i

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-10-8 16:12:52 | 显示全部楼层
1、软件包安装
/ |/ i9 K  \2 e: S' A
. z7 d% J, ~' t# w7 Gyum install -y openstack-neutron openstack-neutron-ml2 \* @; f" `+ z1 l7 j
openstack-neutron-linuxbridge ebtables  k$ Q( |! ^& y$ S) e4 x9 Y* w- l
2、数据库配置
2 v/ f# t7 y" t9 f* M
. i0 {8 }; o$ p[root@linux-node1 ~]# vim /etc/neutron/neutron.conf* G% L6 F; C: F" `; c! r" t, I( s7 i
[database]
8 Q9 v; w( s% e1 m( d3 F" P6 rconnection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron, x: `9 Z& G# C$ w
3、配置keystone0 a; c3 N8 n0 H
7 F! D& B5 ^4 k% K
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
% q, i3 y" w3 `; P: _' [[keystone_authtoken]
$ B( |0 c- [6 Y0 Aauth_uri = http://192.168.137.11:5000
/ T- J" w8 _9 ?0 {0 X/ _auth_url = http://192.168.137.11:35357# s9 o8 X1 a  S* i4 x# @
memcached_servers = 192.168.137.11:11211
5 g  l9 X6 m8 R, ]! |auth_type = password* g- {7 l4 Z8 B7 {; I- V. a  `
project_domain_name = default
' N, Y' U. I$ e# u1 D0 Iuser_domain_name = default
, u, l2 [( \/ }9 E$ L! z$ Hproject_name = service
. K% S  I& G, Eusername = neutron
! P- }6 e' [5 n2 j# N! Z: g+ Epassword = neutron
5 v' ^* @9 {8 K) O+ G[DEFAULT]
3 q& ?. N, j3 |7 R, t& w, e+ |auth_strategy = keystone
0 C3 P5 l% E9 |1 D/ l) m$ Q4、rabbitmq(消息队列)配置- b& i9 o, U: U- I

6 O% I& O) M0 n[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
6 W2 ~, B/ D) t: k1 H1 R# W2 wrpc_backend = rabbit/ i# N  M. D) Z6 z$ g( G
rabbit_host = 192.168.137.11: I: r4 H5 ^8 ]: g2 \3 t) E/ Y
rabbit_port = 5672
! U4 Z% U- L8 n2 mrabbit_userid = openstack
) _8 U- F/ E  d$ v6 c+ \rabbit_password = openstack  A' k+ c( s5 b, x+ l" ?
5、neutron核心配置,启用ML2插件并禁用其他插件
/ _" K. S# C4 w* X6 E
0 N9 h& \" }8 f+ b8 k. K[root@linux-node1 ~]# vim /etc/neutron/neutron.conf8 Z/ K( f  }! W6 [5 e% |, c4 C
[DEFAULT]
, @; m* r7 ~3 L3 N% ~9 U, Mcore_plugin = m12
0 z9 j2 C$ I2 h" b3 N& _service_plugins =
, o' P5 R) `- Y: f, n备注:service_plugins等号后面什么都不写就是禁用其他插件+ E  u) P1 f; c9 s
6、配置网络服务来通知计算节点的网络拓扑变化0 {% C; I5 f) x- `1 \, h5 _# J
$ O+ r0 }" f( y
[DEFAULT]
2 m  S9 [$ \6 S% G$ H+ C0 Dnotify_nova_on_port_status_changes = True- Z* X: s* I& W$ j. ?
notify_nova_on_port_data_changes = True" S' Q: U. X' c4 j$ Y: t& @+ n' A
) I$ ?% G( L  j3 b! C* L
[nova]
# e9 ^2 g$ m, t, k; [auth_url = http://192.168.137.11:35357
- b" u( Q2 G' u4 ]$ T3 uauth_type = password
/ d6 f7 x  Q' j3 z6 ~; x8 |  ]project_domain_name = default$ U( _5 D& p* n
user_domain_name = default: L; f4 C: L2 ?6 A& _. F
region_name = RegionOne
5 T: _9 Y4 @$ t: g; nproject_name = service
; h1 u6 i7 P* k- P( D! Zusername = nova  E) o/ F: e7 e/ `
password = nova
; x8 k% f5 _0 u7、配置锁路径# P' C- W" K6 C9 U$ k3 N7 e
( X; d/ _8 V4 O8 A" D
[oslo_concurrency]* P; H% b: {, v9 `
lock_path = /var/lib/neutron/tmp
. |, Z- Z# R7 j! S6 O" S8、配置Modular Layer 2 (ML2); ?& i: m* P' }6 h0 x# \
ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施$ E, n0 ^" @( [( U6 {! }3 B
编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini9 j7 l" C# y2 s5 {$ a! l* q6 {
驱动的选择
* C! N/ r& M4 L& Y  Y9 u
1 O  ~4 D, p8 P: ?[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini6 k+ `2 h4 |7 i2 l# ]
[ml2]1 d! h& N  F% ?7 {  O
type_drivers = flat,vlan,gre,vxlan,geneve
3 _& V( d/ g; ?, B2 s  n设置使用什么插件来创建网络
5 g7 a3 W+ L) V0 @# d
& P2 _# O7 }, F8 C$ O[ml2]
. X% y) B) ?: o+ [4 a# t% Z. [2 Qmechanism_drivers = linuxbridge,openvswitch' p' A& ~" f% x  J
禁用私有网络(租户的网络类型)( j0 N# [- h! l, f# z6 l1 d
! N* H: d' Y( o3 i, ?6 T' u
[ml2]5 b4 B1 m& Z3 A3 X+ ~* v
tenant_network_types =+ S9 c& l- i5 u( J
启动端口安全扩展驱动1 S/ J9 q8 F, X; f1 Q; y! h) F

5 I. @! Q* T* s[ml2]
- U- p: I6 C% R: M8 Cextension_drivers = port_security" D3 i& r5 d6 D3 V7 {  g7 f
在[ml2_type_flat]部分,配置公共的网络
3 Z; a3 d( `) N# z) g1 i+ g
+ [9 b) }( f8 j- `, ~[ml2_type_flat]
- F# _! W# |) L! e, m5 V* `flat_networks = public. G! ?) K0 z0 B' A2 Z5 N6 G  v
在 [securitygroup]部分,启用 ipset增加安全组规则的高效性
0 J* r3 B  a. V. |2 ]- s. E! t+ ~' A$ Z+ k" [$ O4 ?
[securitygroup], |9 z, \5 e* a, u+ @  z
enable_ipset = true7 f! U5 p: P  c; V* ~
9、配置Linuxbridge代理
) ?$ \0 M. v: g. q: S+ SLinuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
) z3 n# u( A$ l. f, K编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:
2 L1 R$ N$ o2 X* E7 g4 p6 ~- I6 R在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来
/ k1 J7 {# w6 t* ~2 j; Y. j3 M7 q, V8 ~6 s) {
[linux_bridge]
) ]5 C, h: x) A# Q7 rphysical_interface_mappings = public:eth0
1 s2 G# V- f3 T4 M在[vxlan]部分,禁止VXLAN覆盖网络
8 H+ W; `5 W- A3 H+ E, u& p+ l! y1 S- h/ n1 Y' l
[vxlan]
2 f: A7 S) `; D" c+ m1 benable_vxlan = false
! Y! f- n' Q5 [在[securitygroup]部分,启用安全组并配置防火墙驱动$ k; d, t+ N5 U, o5 o, ~

4 I: s7 H5 I( i[securitygroup]
: y) I- g0 i- }! L+ genable_security_group = True
6 y$ M  p- s4 H" l. Ifirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
) _1 ~2 ^! v, K+ A10、配置DHCP代理
" b4 F- n$ r, N4 P编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:/ o5 D; [5 h! H
在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
5 Y! D' a) y2 _/ J+ F6 S
- A3 {( _- h6 h[DEFAULT]
  F3 I# ]3 t/ `6 Sinterface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge# d- c7 q9 a) A
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务
1 c4 U" o; Y! ~8 C# R% f# R$ \enable_isolated_metadata = true  # 刷新路由使用) J  x' n. Z/ H* D- y) p9 y# W
11、配置元数据代理0 O. M. M/ `8 @) G  ?4 S/ S
<Metadata agent>负责提供配置信息,例如:访问实例的凭证3 D# z% l5 `# i! R+ F6 V
编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:9 Y' L) I/ T9 T# E" V
在[DEFAULT]部分,配置元数据主机以及共享密码
. \: u: h+ c4 j3 j  s
; x9 L2 ~2 y& K0 N0 {nova_metadata_ip = 192.168.137.11        # 元数据主机
9 C, U  {% D& d+ r3 q7 nmetadata_proxy_shared_secret = shhnwangjian  # 共享密钥& V5 b- G; G, ?* X; I, i, I
12、为nova-api配置网络服务
4 G1 @1 P  W7 z$ N7 i) [* e编辑/etc/nova/nova.conf文件并完成以下操作:9 @1 Y( X4 Z8 q* n3 A8 c; g' ?
在[neutron]部分,配置访问参数) P# J' O# d2 [  B$ U. H7 E7 `

, e# e: x$ A8 q7 o# T[neutron]1 y$ Y* Y4 q  z  D3 [2 [5 b& S
url = http://192.168.137.11:9696
* a! d, v/ `+ V' k9 Lauth_url = http://192.168.137.11:35357  g. l) P" e6 f$ N/ L
auth_type = password# M( {+ F9 X- ]% ?7 j# {+ E6 R8 N
project_domain_name = default3 r' i) F3 W- U. h" m
user_domain_name = default2 t' g& ^3 l7 u% Y8 S
region_name = RegionOne4 _; P) R! ]' H! b; S# ~) N, U
project_name = service' a9 X# V' K/ X/ g( {
username = neutron/ x4 A& n$ j) |0 `
password = neutron
! Z1 C$ U4 d2 |在[neutron]部分,启用元数据代理并设置密码4 b- s9 o# n  S! N
2 g7 S% V/ _) |( v
[neutron]7 B% E4 S$ Z4 p* j+ ]* ^! `  G
service_metadata_proxy=true! @7 D, h4 h; o* v$ V" B4 x1 n
metadata_proxy_shared_secret = shhnwangjian
; F2 ]: X" b5 l8 M$ {8 [+ m13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
3 g3 ^/ N0 o7 ?' L$ L" w' j/ W  z; M
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini, _6 a5 Y* C9 n( _! C
14、同步数据库
9 @6 o* m- E0 f8 F. C9 `) m* M: [- Z# i: w4 [+ l' a
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
$ }# ^: q8 o' Z# x--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
; z& P! V: l+ @& W# A15、重启Nova API 服务
. v! g" s* c  e7 X- U/ x! r7 `  I1 D, N' e/ V: ?
systemctl restart openstack-nova-api.service
7 U( B% U" Q: E. w9 O8 L; [% E' O16、启动Neutron服务并配置开机自启动
" U6 j2 x5 k8 B* W; Y" k4 {( w' i# i6 c
systemctl enable neutron-server.service \! J8 ?6 R. D' L' h! ^
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \: `& X# f/ k( y% N8 f' [
neutron-metadata-agent.service  g0 Z) ?6 Y, e! Q/ ]
0 A- L5 V9 P  H1 m
systemctl start neutron-server.service \
0 S0 n) l- G2 e8 O2 x$ @, Oneutron-linuxbridge-agent.service neutron-dhcp-agent.service \$ U7 @4 ^( P1 w/ q
neutron-metadata-agent.service+ n+ @4 W  M" y$ M& X
17、keystone上注册Neutron服务  e% W7 K4 ?! S, i, F
创建neutron服务实体
3 U5 U) z) b( f& v7 W2 X8 D  {; y+ ^1 p( l% o: S, a4 h; ^
source /root/admin-openstack.sh
. Y8 b- y$ G8 x0 U- Fopenstack service create --name neutron \
" s2 k) t3 W0 d--description "OpenStack Networking" network
6 N' L4 `5 p3 m5 d; a/ ^& P8 e' u$ d& k
创建neutron网络服务API端点(公有、私有、admin)
; w: }  }! ^" t# u% Q5 P8 V. N, ?
2 j( L) G* D+ R" @# t$ hopenstack endpoint create --region RegionOne \
( ?/ ]6 T- l' I. V: ?& Z. bnetwork public http://192.168.13.11:96967 c' Z2 A  V6 ?* I5 l
; x+ ]0 g3 n/ c6 J2 \, k

9 k' d" @4 _( a9 C  [  Ropenstack endpoint create --region RegionOne \8 C7 l* F3 s# g
network internal http://192.168.13.11:9696+ Y7 R) K: a6 l4 }

( ?: Y: ^( C) R+ r3 Q! m* Y3 a: G4 K" `5 i0 Y/ h8 {
openstack endpoint create --region RegionOne \
- W, R& C, H1 I& \9 c1 T+ h7 unetwork admin http://192.168.13.11:9696
( s+ L9 h2 d! b5 w* i6 o& J' ~# E
) T. y% _  ~7 A$ J- ], ~: G18、检查neutron是否安装成功
# R2 p' P0 E0 D  W9 ?' ~
! r$ |; p1 p' u- F  J: A  \8 d' nneutron agent-list, ]$ d2 i+ Q0 h( Y# \6 W9 A

& R0 P4 U* v3 p4 Z$ G8 B6 ?分类: openstack
' v; R" N& _. E: U

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-10-8 16:43:27 | 显示全部楼层
配置网络服务来通知计算节点的网络拓扑变化: i( _3 h- L' y0 R# h! v- P

1 c7 Z% @1 {" n: t[DEFAULT]6 J2 Z0 I# t' M/ b6 H/ i& o- Y" a
notify_nova_on_port_status_changes = True
7 e) U, W2 ?0 E/ G3 z- E$ C' Knotify_nova_on_port_data_changes = True1 `3 X  z; L  s' {1 Q
. d& O8 K0 `/ ~/ o$ [& b; s
[nova]6 E" h' ~; a& U/ k3 W5 E
auth_url = http://192.168.137.11:35357
* J, k8 N( ^( A, e% u$ aauth_type = password& a6 A; W" P2 w: P* n# C2 w3 S: X
project_domain_name = default
+ P. E7 \2 G: T' v! N: Fuser_domain_name = default
3 I* Z7 ^$ s' v; Y( I3 Zregion_name = RegionOne! t, B. O/ m0 C4 b- L
project_name = service
8 S9 q/ g0 @- S% k$ Qusername = nova
- w$ f1 [% Q: O. |password = nova
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:04 , Processed in 0.018784 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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