易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 1839|回复: 2
收起左侧

Neutron控制节点部署

[复制链接]
发表于 2021-10-8 16:10:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
2 k( K9 X+ F- F& A! _! ]4 k/ |
网络节点的实现模型

计算节点的实现模型构建了各种类型的二层网络。属于同一个二层网络的VM可以愉快地进行二层通信。可是忽然有一天,一个VM想访问它所在的二层网络之外的世界怎么办呢?如图3-17所示。

图3-17中,一个虚拟机VM1-1期望访问www.onap.org,我们看到,它必须要能到达数据中心(DC)的网关(Gateway,GW)才能访问www.onap.org。那么,VM1-1如何才能到达GW呢?如图3-18所示。

这里面涉及了网络节点,我们暂时不看网络节点里面的内容,先当做一个Host,当做一个黑盒看待,同样,计算节点我们也当做一个黑盒看待。

0 C5 ]  I) E; h
                               
登录/注册后可看大图

图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,

. n& f5 O& r7 W. Q8 S2 I# h$ U
                               
登录/注册后可看大图

Neutron称之为外部网关。Neutron为网络节点中的路由器构建了一个资源模型Router,Router中有一个字段external_gateway_info(外部网关信息),表达的也是外部网关的信息。详见4.6节。

Neutron除了在网络节点部署Router以外,还部署了DHCP Server等服务。Neutron的网络节点的实现模型,如图3-19所示。


' v6 n" k0 l) R+ x                               
登录/注册后可看大图

从网络视角看,网络节点分为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所示。

7 N" i' q2 V0 c) p2 p# [
                               
登录/注册后可看大图

从某种意义上说,br-ex相当于一个Hub。当然,这只是一个比喻而已,br-ex是一个地地道道的Bridge,一般也是选用OVS。

/ [- }* F# W1 T$ t
4 V6 n0 G9 A" }6 }
) t9 _( ]7 X1 @$ I9 p0 g
- D2 q. \4 Q0 G, j) `# `) T1 X  S6 b& N
1、软件包安装
1

( V1 U8 Y8 Z9 W6 K# o5 k
2

( b8 ?. Z! N6 f8 k& ~
yum install -y openstack-neutron openstack-neutron-ml2 \

( r5 e+ `/ E6 X% o6 m
openstack-neutron-linuxbridge ebtables
, v- C* r% h5 A5 L/ }

9 ^3 m0 k) W' {! I  {% f
+ P& ~$ [& g: ?( O2 F+ Q9 g  `

+ e( q, H+ u' \3 ^5 n  e" o" l5 s& K$ A9 @
2、数据库配置
1

: p; T+ ^  h  Q4 O0 |
2
+ a! x' k# ^. `9 u5 x
3

" s0 m" C6 D% C8 ]. R) M
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf

+ g  s  l# J8 d/ k% M0 b1 X+ L: n2 h) v
[database]
4 `8 W$ `2 A0 s. f( O' p% h
connection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron
+ \. _8 `" ?; c8 C

# W4 S( f  E4 j( K" z
8 R* [# K% y8 T3 W, W* ?6 _
1 X7 O& k, u8 j5 O5 a* q- L; W
0 Z$ x4 \1 {  J' R3 w. \' ~
3、配置keystone
1

* X/ R* |4 V, Y0 O& F
2
/ a3 B" n( \7 \4 e
3
$ `7 Y4 {7 ]  T
4
+ d7 ?9 j5 J8 j0 g
5
- ~! w; ^& \1 a6 Q
6
$ ?# d9 l! [2 U$ @
7
5 j6 k* f! p7 s$ l
8

6 \1 p% ^+ @+ N4 M. J& w
9

- w8 B7 T) b" L
10

) k/ u3 P4 Z4 H: n% y% X
11
# T  j* q6 g+ s  f6 t
12

2 U" r7 ?/ U* c
13

' I; ^, |/ @& U8 n
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf

, }4 A" _1 j7 F4 n& s# L
[keystone_authtoken]

( S3 C; {* E' |$ x( Q  ]4 `8 A' x0 h# R- p* B& ^+ A) c+ s

: L3 k- z, l1 _( L8 e% f
memcached_servers = 192.168.137.11:11211
5 `. s) |! V9 G, g
auth_type = password
5 o- b* c! D, L; q
project_domain_name = default

7 B1 J: E3 w4 v/ |
user_domain_name = default
: |! e" o! b, t5 H+ F' ]
project_name = service

2 W$ q, {+ R2 {. y
username = neutron

8 |9 X6 P4 u! N. f+ ^
password = neutron

" E/ T# Q: b3 C
[DEFAULT]
* @, Z4 Y, l5 {, r% x+ p0 ~
auth_strategy = keystone

8 D: V2 v0 B) a+ _  A
# k2 s; S; A8 G- m2 U" w. e5 C0 q( h
" b. g" c9 B! U" y2 ^6 T* {( ^

# X/ O0 e5 s0 k- W$ W, Y) ~' ?: ~+ G$ }% @& W
4、rabbitmq(消息队列)配置
1
& q: {2 m& @" V4 n3 c
2

7 {! A- A* L; ^2 `! Z: T! h
3

" m) _# t  k7 s2 C9 ]. @0 ^
4
# u& N- [4 t& p7 ^4 f; a
5

- {) K# N* b  ?4 K  g' ^$ U
6
; L6 G* _5 Z% T# N$ u5 U: l2 Q& l
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
5 c" Q! h0 z! Y( n) R9 A7 H7 a5 ]
rpc_backend = rabbit
/ P: o; t5 n7 Q. l0 \
rabbit_host = 192.168.137.11
; p8 K7 u: f* w4 u5 E8 `. s) B
rabbit_port = 5672

8 `8 k  W7 U. F" C  |
rabbit_userid = openstack
: [7 E8 \9 B9 i3 y: {2 x, r. T' G% ]
rabbit_password = openstack

2 j! C2 U8 W; V+ _" q* m1 g) o
( D5 m, }# C! \* M
1 g' l9 G4 ]! w1 x# b
* L7 E8 Z( U" |/ `/ t3 \

) n+ m# n; Z1 X6 [
5、neutron核心配置,启用ML2插件并禁用其他插件
1
2 N  P. @/ G- ]( v4 j5 s% [0 j
2

$ A- I* \) ?/ Q; U7 b
3
4 O5 C: F+ m5 Q( a- T* W+ I
4

" K- Z! d" h2 _9 f( h5 {
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
  s9 U  @/ L, Q7 v$ Q6 S, P
[DEFAULT]
+ h3 e3 V# l' T. b0 Y! n% p9 A
core_plugin = m12

  F9 @# l) K6 d& @' A1 \
service_plugins =
% L) C0 {0 e  ]' L) _' G
# ~# o. I  o1 Y: y6 c. @

( C4 n- p' v, k' o( D4 V+ Z
6 b7 a% Z( s) a% `1 \' M
9 l# e4 e# L" J. J3 v0 t/ l) S: C
备注:service_plugins等号后面什么都不写就是禁用其他插件
6、配置网络服务来通知计算节点的网络拓扑变化
1

6 S2 o9 i) P' U8 q, O1 P
2
' L3 ?* F( b; \" L  [
3
1 x. z. Y7 R, a" B- `3 e
4
' a- b/ v5 b- c; _& v' u! e2 {
5
4 U* i0 t- b" Q- b5 ]* H/ e2 Y4 X
6
  z: ~7 b! D0 C' A
7

* W% |0 ?# c/ K0 a. P  d
8

4 L# h2 _. A/ J$ a0 d
9
1 [* u5 ^% Q0 j
10
/ j8 Q8 T/ ^  _( p
11

  O/ F2 L9 X, R1 J
12

5 t& Q, ~1 Z9 g/ _
13
2 E1 ]0 ], W& Q2 i
[DEFAULT]

6 e# \1 _# I1 ^- g
notify_nova_on_port_status_changes = True

7 G( v- {1 i, w& J* H4 {
notify_nova_on_port_data_changes = True

; q8 s& A0 }& `7 U: Z' \5 N
9 ]) d! D, `' L# Z
[nova]
8 Q) C) j5 `1 X" \0 v1 z

6 Q" t  h9 L# u! q/ c6 _0 h1 E
auth_type = password

0 l- ^: q5 I7 a. k, x( T$ {
project_domain_name = default

: |8 \# F; A; @" N$ _
user_domain_name = default

- `% g3 j9 i  {) e/ V( Y
region_name = RegionOne

- J0 u4 o, b1 Y$ H
project_name = service

+ A# B9 C6 b$ ~6 @8 R$ N
username = nova
* h1 ]3 I5 A+ Q2 @# d! j
password = nova

& v0 Q! S( [' @. f
3 ^+ W8 n4 K2 K) M  K( \
/ _9 i% S+ c' X
" r/ z% B$ ?0 E" d6 S
5 k- K0 s0 l. e0 l* H4 T
7、配置锁路径
1
# b& A% \1 d8 e
2
% ]6 I: ]! S9 `0 M1 w$ m$ F, b$ M
[oslo_concurrency]

6 c. S+ m) D5 P4 [4 u. H- C% s
lock_path = /var/lib/neutron/tmp

! o+ E, p+ h+ p2 h. Y
# B4 s7 T' e0 _, Q" K/ d: W+ j$ t: d
" g' C3 d) Y2 ^( f2 [" ^2 l* I
# v# K1 n# S* b+ f0 Y
+ h! [# r1 Z( l* j" w4 k$ N
8、配置Modular Layer 2 (ML2)
ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施
编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
  • 驱动的选择/ \  ~1 B* p3 g, G, Z, ~% T
1
) ^. N( X2 Y. L  @2 H
2
+ @, q5 P! y, y5 _3 B
3
0 U: y5 r6 |7 |# }1 S. ~1 U/ [
[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini

0 ~2 _$ S, k. r& w" y0 i  n5 n
[ml2]

# i4 X$ g7 R0 |% x( V
type_drivers = flat,vlan,gre,vxlan,geneve
  o1 C0 N+ k3 v& n7 x9 t4 B3 L5 s

2 E: x- Q) ~  U* z

2 F, h( g& c; Q' E4 @: O2 A! B" r( ~6 B* A3 ?
7 f" U; P1 z9 {
  • 设置使用什么插件来创建网络
    9 f4 `4 o- |3 `( J
1

: p1 T% I3 z$ L7 M  D
2
" d& B) P, c. w; t7 ?( ?' K" |
[ml2]

! B# t! m. {3 z. z% F
mechanism_drivers = linuxbridge,openvswitch

4 C7 E. E2 M/ o  ]7 b/ ]

7 v, @9 u. i4 `3 r* N, z1 r

2 I( H/ ~8 y8 B9 f( h- |; e) z  Z
7 n; n7 Z" w% G, W/ l/ B" I( h3 [/ }* I4 a  _$ d- v
  • 禁用私有网络(租户的网络类型)+ s+ m, X5 e& h
1
+ y2 s4 K% O5 ~0 m1 Y" v0 F4 o
2
; Z" r% A& S7 @* }
[ml2]
( k( E. \  c8 Z. N$ t3 d' C5 c
tenant_network_types =
5 `2 m& n1 m7 j9 B5 {0 P

7 ?7 ]' s% }. d4 R
; g8 a! n3 Z8 v* k/ T  o

0 j& N, R+ M/ {! O. D# Y
! s$ l5 z7 s& u8 W! D) h9 o
  • 启动端口安全扩展驱动+ O/ N7 O* @/ C! Y! A
1
. y- ]3 ~2 m/ D  x
2

8 @9 o! \7 u8 c! r
[ml2]
' t% l# Y0 Y8 r- D) Y/ P
extension_drivers = port_security
. N+ J1 }& u" w# I2 [
8 Q: W: k& R$ e- w
, D- @) N. I  H( L5 c/ F% `$ U
4 q+ ~7 W$ n7 ?* c& i$ z
* [3 G7 V) I% K+ t+ j# l* a) d
  • 在[ml2_type_flat]部分,配置公共的网络
    : `# `- m" _2 U+ p% ]+ W
1
$ S$ m) V1 h1 D* ^
2

+ e- J4 `5 S  o" t. j! c
[ml2_type_flat]
4 l3 p1 L6 b) D. }; T
flat_networks = public
3 w4 N% K7 {* s" N( h

5 _1 E+ \/ }$ ?% T4 X, ^2 t

$ _3 G: N; z" L  r( H( t% s3 S
! e- ^) G$ _& D9 d* `; m  H& o* U/ Z
" ~! m' j" ], V  N& @8 Y
  • 在 [securitygroup]部分,启用 ipset增加安全组规则的高效性! _/ U% s' i5 ^' m9 Y; H
1

- ?* A, |& q6 C: h2 m3 w# O9 N  I9 d
2

* }& B' _' [) I
[securitygroup]

( Q1 i: M0 j7 b: o1 l0 l. o) s5 t/ G
enable_ipset = true
# W. @: p  ~! E4 E6 K
% D* e3 @7 b+ `& q6 p
- {2 f) w+ o6 ]+ f6 J
4 E  p/ B/ H2 L3 ?/ m9 H' r

- M# j+ C- J" u1 J7 c/ C
9、配置Linuxbridge代理
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:
  • 在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来
    4 h6 z/ S9 T. J
1

1 h" S3 O1 g' ?7 H4 S
2

# g# a- i! K. ]7 G/ S
[linux_bridge]

4 K; L; s7 P, i. v" {% j
physical_interface_mappings = public:eth0
2 l7 _1 \2 ^, ^
4 \9 R3 r' J, D: }, k# v

+ O- [) C5 o7 t2 a4 E1 v! ~/ M3 P' T- K6 i( R( T% D

5 L2 }3 a% l9 F7 N: h
  • 在[vxlan]部分,禁止VXLAN覆盖网络
    3 l% L* X+ q, `4 F' r9 |
1
  [0 _- P+ g& x/ `
2

7 ^1 I5 I8 U- |" }# k) _8 {. @
[vxlan]
" p# B8 ~+ p+ M3 S7 r6 K
enable_vxlan = false

( H! Y' B- ]- F
* {8 v/ S+ F; ~5 j, C1 U" S
- G% p! `1 C$ u" F
3 y3 `2 H3 _2 r4 o( Z+ V1 X

/ ^+ s8 E1 P' E# ~
  • 在[securitygroup]部分,启用安全组并配置防火墙驱动
    3 w# h: }; @( v+ H
1

5 c4 C# j% }# X; \* V
2
- A  m% f+ A# A
3
3 F$ o, o6 M* a) U; Y" @- H2 [8 D7 l
[securitygroup]

1 N# [# l5 Z6 J
enable_security_group = True

& X7 d/ i% f$ D- H1 S; u
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
0 w$ Y" H; x4 o) C, i( ?

: Q4 m1 D- j' f  g9 h3 M' D) o, t+ w
9 h: f  A/ g! A0 X; \

& R$ r3 h9 R9 e9 [
" x5 B" G% _# h' p8 {4 u! G
10、配置DHCP代理
编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:
  • 在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
    ! U/ X) `4 @2 u" b* k
1
2 l. c7 t- z3 ]+ f+ {) ?& B$ G2 @6 Q
2

1 y+ M' c. b/ Q& U2 `7 g
3

, r$ J& s4 {: [
4

1 M% k. Y/ q2 E2 v
[DEFAULT]
, @. R7 x% _4 x- O  X# ^' d' ]
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge
( Y6 R  b% p3 m; `7 G' ]& s- y
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务

" O. K  b$ q$ A' C/ ^: {6 Q& l3 k
enable_isolated_metadata = true  # 刷新路由使用

4 P& \7 R* o7 n7 @

/ T4 l: M5 H8 ]6 ~9 `+ G# {

6 E: {  c$ O4 `! D4 j6 x$ d+ _7 ~# S# F% m4 N- j, F

( M0 x9 |$ Y- P8 l, q
11、配置元数据代理
<Metadata agent>负责提供配置信息,例如:访问实例的凭证
编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:
  • 在[DEFAULT]部分,配置元数据主机以及共享密码
    $ U4 E# i- J! ?, i7 ~, @' O2 p3 L1 j
1

: W# e& I. p5 d( r8 I
2

( F3 G$ j0 P' ~" |
nova_metadata_ip = 192.168.137.11        # 元数据主机
  S/ P8 L: l0 v& p$ D! v
metadata_proxy_shared_secret = shhnwangjian  # 共享密钥
. S0 Z( W' j, i" ^" g
2 y' ^6 ]4 Q) j2 v  }0 a2 E
! {* j) j: H0 G, F' N9 Q9 D3 J

! H8 t! E+ q# W9 V3 L# _% I! [( b! a/ U( d- ~( L3 F4 ~
12、为nova-api配置网络服务
编辑/etc/nova/nova.conf文件并完成以下操作:
  • 在[neutron]部分,配置访问参数
    1 ^2 `+ I8 I1 S
1
) J0 P7 r7 w9 d' B7 H) J# n- Y
2

) y5 T2 x) T6 S5 e: v5 j8 n9 f2 m
3

9 A9 J6 r. A/ y# v# y; N$ Q
4
  E/ k4 D6 Y2 P0 p
5
$ Z6 k1 T! a- q) F. B
6
" [2 j+ s; C! N" z- M! s, F, m
7

! U& N) g7 i. X5 _$ Q1 A
8

) s9 [4 g/ P1 q4 A/ M
9

6 ~; a4 C4 v! W# V
10
6 R/ `  V% d, t8 d, _2 b; J
[neutron]
4 A1 x, m& t  z: Y5 S

  N- `9 T; k7 E' Q2 S" h1 Q3 }. `! ~$ x: i9 {1 l9 r) t$ m7 _; Y
auth_type = password
" Q/ e4 \# e9 w* R( G5 P
project_domain_name = default
, N) W5 m& p$ H* V% `& W
user_domain_name = default

+ d" w( v* n* C6 G# o" q6 v
region_name = RegionOne

: }# M, O/ _8 Q0 Q1 R1 b# h
project_name = service

2 M% C* P7 S7 b3 n
username = neutron
  ]+ ?2 S% I) H; J( @0 |* Y
password = neutron

' D' F# o! a% \1 u: |+ C( z
5 e4 k- q- ^# \  o5 {) q0 z

4 K* ], l# }9 {, O/ A, W. _5 W9 G/ F
: q# s6 y0 B; H# O& l3 ~* T1 Z2 Q% i( _% D# D
  • 在[neutron]部分,启用元数据代理并设置密码
    5 u4 J4 h) G8 \
1
. B  I4 Q9 ~7 d; ^5 z
2

4 ~% t% p" H6 U) m+ i8 ?) }0 M
3

- g' w, q1 Z9 c4 b. d
[neutron]

" B% W) _9 D  ?3 Y) E  u7 {
service_metadata_proxy=true

( n$ J- F( m; _+ C# S
metadata_proxy_shared_secret = shhnwangjian
. n6 H: E1 S5 l7 d# |2 R: G9 B

  S/ P" B1 n/ y. b; C8 A

' V: N; M$ P% L1 j
  K. b+ o5 L- z; I4 z0 h
( Y  i! @  d. ?0 `+ c& a
13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
1
" f9 R: d3 R9 B8 M
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
, t# c" m8 q% H+ q

8 f3 e0 r7 m' |! y4 G% G7 N. d
/ W* E$ e3 S: s, m
. }& W0 b) v% l

, w/ r5 P7 e, e0 l9 s/ T7 E
14、同步数据库
1
# D  y9 ~$ s5 M# H7 @$ I$ N, @
2
/ F- ^" N2 v3 |8 E6 D4 C! B3 a- D
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
# {/ r. M) L; N  b! _
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
, N8 T. {+ p0 M* `( u

  `" P0 I) o0 c6 Y- \8 F

5 {3 b. k1 |1 A4 H' ?& v. W* R7 B- P# z6 H4 v$ H; {2 C

, q# N1 B* H3 U, t& g2 l
15、重启Nova API 服务
1
$ Z9 s7 }+ P2 w* U' m% B! t
systemctl restart openstack-nova-api.service

5 \1 c/ H1 B. e* r8 o
" f. V( W1 r7 n  g0 r

' e6 U& M1 v0 E1 ~2 }+ T' i- h5 u' A) f5 q( F6 B, H

. H1 y: |9 m& Z( K6 B$ I
16、启动Neutron服务并配置开机自启动
[
1
1 R0 A6 F/ C) x8 |& h
2

+ U# t0 K# e9 E) u1 h
3

+ H( c* v+ X, m, \* ~4 ~7 N
4

9 ^+ k4 o# C; u( @3 p
5

2 Y, a5 q( \- S/ W4 o& ^
6

; ~( {3 P/ r% S8 r& I& q$ q$ ~; f
7

1 P1 ^1 V) e5 _" b' F
systemctl enable neutron-server.service \

& P( _  O( d( i# R8 v
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

( ]8 D9 ]# F$ `7 b3 }  [$ l
neutron-metadata-agent.service

% F% U+ |0 H) P9 u. Y8 @5 h
& l. J0 x' F& T
systemctl start neutron-server.service \

0 Q& ^. L" i4 Y. ?9 ]/ O4 }4 Y
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
! W; }5 ~" L( N" m) u$ W4 a
neutron-metadata-agent.service

$ Q9 {8 L+ p( d) A: E% f
9 ]8 k: F/ `  d& k4 b' ]8 _

$ m2 V" H% g% y9 j: x. r# q* Y% O4 _- S" I: r

! s# I/ k  B' F/ s; p& Y3 d
17、keystone上注册Neutron服务
  • 创建neutron服务实体9 A6 _3 ]# [5 {. g( I5 V& ~
1

8 @, D$ p+ S1 \) s  }' R
2

2 _3 K0 i3 L) y/ ?! K+ o) o9 N+ k7 I
3

, s6 ?( @" P% L- [% J% Q
source /root/admin-openstack.sh
5 Z, M3 H! S! h- M9 P
openstack service create --name neutron \
# [& i) E- L9 ]$ A2 C6 s: s8 ?3 X0 n. p
--description "OpenStack Networking" network

6 s5 c7 S! Y- l+ k% z/ P: u1 E6 Z

# M- q7 Z" Y' ^+ H' g9 e
9 s5 \+ _. U& k2 G  v

% n" f) U* U4 ]! I7 B: q' W7 g9 U' K1 M- A
  • 创建neutron网络服务API端点(公有、私有、admin)
    " P- G2 I+ x) o: H5 G
1
) C) D% s( L- B% w  \
2
% d/ I. l: O1 V
openstack endpoint create --region RegionOne \
. @( I/ C" i8 W+ i) C6 i

% `- }6 ?# K6 x& w! K' Q& j5 D8 ?

: Y5 `7 q; @5 j
: b- P! R1 W! ^3 a' A7 B, I

1 [- }& d4 l0 T4 J. \; }0 G
9 R3 g! n: a; _9 j( g
1
0 n- Z0 Q- x8 R/ e
2
: p0 ~* U# S/ l
openstack endpoint create --region RegionOne \

6 X. z' A  v* [# `; i
& y+ I. T+ D8 _  o0 h. T! O6 q
1 {5 {% p7 x% T; Z& T3 ]5 C
/ L, H5 B7 E3 V' I: @% G0 v

7 d( v9 U7 d, R  q) U0 y! R7 x" O9 Q4 y% G1 x4 Y) a, b, L! r
1

3 W  ?( g" W8 a
2

1 y* l  C+ \1 w  F/ R  |+ [
openstack endpoint create --region RegionOne \

1 ?' w0 g$ E- [" }- Q" ?8 M1 i. T, v7 [' \- u2 P4 u

. `) Q% d% P3 g( e+ P

8 g( g5 H1 ^/ q$ P& E: p/ v5 `4 v8 ]& B0 M

. v: Y5 N3 z- s! _
18、检查neutron是否安装成功
1

) K1 D' s: h6 O. {1 I( R0 o
neutron agent-list
3 U& {( I5 V) ~  \8 h* D

- P" g7 @; K* }: X  u$ U( s
% S& ~6 x$ n; e# r) ^/ C

& p  z2 f& T9 n2 R8 D
4 Z' Y9 V( }! E) l, a* J2 o! Z3 S+ o8 b, U2 M

! |  w. z7 \( S/ G  \$ R7 }; d9 o" `7 D
分类: openstack( f- z3 A5 U3 j# t  K

1 f* n+ ^3 R( \: g; E' J% D% f
 楼主| 发表于 2021-10-8 16:12:52 | 显示全部楼层
1、软件包安装! ]1 y2 a# E5 x. G3 F
7 R6 s8 F! ]. T) W8 v: j$ S( n
yum install -y openstack-neutron openstack-neutron-ml2 \
, u1 P. H0 K( S' ^# w) yopenstack-neutron-linuxbridge ebtables) m# v/ p, Q) S; J2 M2 p2 e& x( _
2、数据库配置
5 h% Z* f1 X% o- \% _
! `% {- j! _: r- d; a[root@linux-node1 ~]# vim /etc/neutron/neutron.conf' K* P7 Y  M/ T+ _
[database]4 c& z0 _/ x; D3 G
connection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron
0 {4 B7 Y; o/ ?$ X7 C3、配置keystone
/ }% V! a) W: J; v# n2 n* Q; u4 ?9 t. T# E
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf5 X; C) x1 P# \& K2 x7 r  H
[keystone_authtoken]1 V; W4 v. t  h4 ~. t' b$ k8 A" x
auth_uri = http://192.168.137.11:5000. F# B! K, }6 D$ J' _% y8 I1 M* W7 l2 k
auth_url = http://192.168.137.11:35357. U$ l( @9 y( |7 e
memcached_servers = 192.168.137.11:112110 I$ K5 H9 b+ X, t6 N* B; D
auth_type = password
, W) H2 _* Y2 D0 W, O: ^project_domain_name = default* R7 Z$ q1 I( g( ~
user_domain_name = default+ T9 O0 t% Q9 c* R
project_name = service
: L- l+ @2 Y1 i" y) Wusername = neutron3 ^3 v0 ^+ S  i1 k# b
password = neutron5 m" Y# j* I; h5 h
[DEFAULT]
/ v5 n# X- A% n7 A2 G, ]auth_strategy = keystone) j& j, ^" q' Y8 o
4、rabbitmq(消息队列)配置3 j, l5 \1 R7 l) C6 [. u

; _. [! t8 G  s8 a[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
, H% F: Z6 t4 h! |, Q2 zrpc_backend = rabbit% C4 ~( q+ e2 Z9 Q) ?$ u7 K
rabbit_host = 192.168.137.11- _8 |3 b% J# H+ i1 G, e
rabbit_port = 5672
8 a  I: |& a+ }8 T" `rabbit_userid = openstack
2 @$ t+ A, u0 K0 N8 E6 nrabbit_password = openstack
% u( _; l3 C6 a; P& E$ o" N1 r7 W: p5、neutron核心配置,启用ML2插件并禁用其他插件7 @  c; k$ c. N, p2 C4 B" k

* g9 \) I0 A6 S[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
2 \# ~- k* O* e( v, _. r[DEFAULT]
$ |- h7 R, ^( b( h# e9 k# a2 h6 |$ Xcore_plugin = m124 G" n. y7 ]. m2 O
service_plugins =+ b: e" x( [9 @. E
备注:service_plugins等号后面什么都不写就是禁用其他插件
- K8 M( k: N( [7 ?+ q6 F6、配置网络服务来通知计算节点的网络拓扑变化2 k7 ?# K5 h9 d; O! U+ N
- z5 b0 A% A- X+ N( R. p. ]% [
[DEFAULT], v' N* A& `3 b
notify_nova_on_port_status_changes = True
! c3 v/ W4 d1 B( ?) Q: v9 Z2 cnotify_nova_on_port_data_changes = True( l1 ^. R7 H3 G! B! z4 |
- c2 m% n, G4 P! T- ^/ E8 y) p4 h
[nova]
0 S2 U1 p( k3 z) @) Yauth_url = http://192.168.137.11:35357. i0 K3 ]' K/ T# `  l
auth_type = password- A  }% @8 P* W7 ^# r
project_domain_name = default8 A5 E+ I0 Y6 N7 k% ^
user_domain_name = default
  E* C7 ^6 q3 L! R. D0 T6 ]! aregion_name = RegionOne
1 S7 \: x  d# H3 w6 Nproject_name = service2 w8 v, a+ O& d
username = nova0 |9 x* J" c; {9 o
password = nova
' V: [+ I5 D5 x, ^  A2 i! y7、配置锁路径
; j. N: x0 A2 T2 q: M
& {- u! `& p) s% ^: r6 y5 }[oslo_concurrency]
& ?6 D/ T8 e+ L" Y$ Vlock_path = /var/lib/neutron/tmp
1 J# B$ }. a9 _( a. L8、配置Modular Layer 2 (ML2)  k' s8 ?% n2 e& R9 Y8 H/ |: |3 b7 g
ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施. y( N2 ]& C9 l0 a, c
编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini  M6 S2 z. C6 ^5 e$ y0 ^/ n! x: y
驱动的选择
6 q: T. Z" K1 P+ b5 G, ]7 [
& {% R* K( ?1 \! A[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
7 O3 u# A! _9 J& E! X[ml2]
6 I7 E! b; c5 Z4 H1 ftype_drivers = flat,vlan,gre,vxlan,geneve9 S9 a/ z) C5 `8 B; K; @0 Z& @
设置使用什么插件来创建网络
+ t" B& t2 @+ z4 x, s% R: Y5 c0 c0 ?
' F$ O7 q: p0 P$ P[ml2]- e; Y& V* @! Q4 M7 e
mechanism_drivers = linuxbridge,openvswitch1 p, R7 V! `% M2 R/ y
禁用私有网络(租户的网络类型)7 I  M% |( l1 O. U  J+ E, R# @; y
3 v/ k3 q" r" L: I& Z
[ml2]# p. X8 e6 e$ e4 V' K- j& k
tenant_network_types =
) t9 K) y' t2 X* ~7 m启动端口安全扩展驱动% [! `/ b- ~3 a9 P
( H1 l9 A$ \  i1 L
[ml2]' q: J3 E& w' }# U
extension_drivers = port_security+ X1 h5 C( {. u4 T$ c
在[ml2_type_flat]部分,配置公共的网络
7 g! M: `) k$ W' Y- Y/ A4 l5 \7 P( H0 U# f
[ml2_type_flat]9 W! S- b) n( {
flat_networks = public8 \5 k+ z) F( q- F: n% S* q3 P
在 [securitygroup]部分,启用 ipset增加安全组规则的高效性  |5 T  F/ {1 Y( U0 q+ M* s2 Q2 j
% S7 A4 I6 x" {' W/ ]7 A) F
[securitygroup]+ K& T; Z1 F1 u- o2 v
enable_ipset = true
7 o& _8 H& \7 e9 q/ }5 x9、配置Linuxbridge代理
6 s& z( \  a& a9 t, ZLinuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。/ b. N8 r; a! y6 @5 s5 r4 k) l, z
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:% U( A' g# D( E- I) S
在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来
/ T$ `$ N8 m6 E5 i8 M/ k6 X8 G8 C1 z' h& V6 b
[linux_bridge]
7 o( l0 B# u) j+ tphysical_interface_mappings = public:eth0
# l- B& ?9 @' G1 N在[vxlan]部分,禁止VXLAN覆盖网络  i: }% o/ W- w7 v7 K( {  C
- u* ~- H  m! c- F' N
[vxlan]( r$ `/ `8 V1 T5 J) V
enable_vxlan = false- M- s8 Y% A1 n3 m/ r$ H7 ^
在[securitygroup]部分,启用安全组并配置防火墙驱动
& c2 w4 n. n) E3 l$ O4 U3 S" @- i# T# t! q
[securitygroup]& q- y) Q7 p, \/ \1 d/ a2 ?4 f
enable_security_group = True
1 S) O) S; J* {$ i: A' gfirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
/ H- C; O& o8 O9 ~10、配置DHCP代理0 {, Q* [3 n) b$ h1 w8 Y% m# I! w
编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:
- [" r4 @+ i1 T) `. K在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据0 |, d8 U  x+ m. h4 p/ z/ t( E# [6 C- r
9 O6 n  Q. c3 g/ v2 h5 `
[DEFAULT]$ \1 }" k1 X. ]* }
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge
  l. l+ P% b( b8 k/ wdhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务
' n: p4 X! M0 l: y0 f/ oenable_isolated_metadata = true  # 刷新路由使用6 i* S' Q: G7 P: R! Y: [
11、配置元数据代理
, X! v2 O: |. o5 R<Metadata agent>负责提供配置信息,例如:访问实例的凭证
0 ~5 p! H5 D& M' @编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:
$ i* ~# {; K3 l3 ?在[DEFAULT]部分,配置元数据主机以及共享密码
! K, Q' ~4 e9 h  \/ C2 l
0 Q4 v& f/ _4 D- K; U/ _8 o) bnova_metadata_ip = 192.168.137.11        # 元数据主机
4 }* W2 \) a- r% M. a' emetadata_proxy_shared_secret = shhnwangjian  # 共享密钥
$ Z( Z# I& O4 \& E$ b' R12、为nova-api配置网络服务
# C. X9 q! j4 K) J+ Y3 Q7 A编辑/etc/nova/nova.conf文件并完成以下操作:
$ M* G& R1 u6 l+ a3 m& |/ p8 H在[neutron]部分,配置访问参数' i" F* b& T/ ?, ~

9 l" x8 p2 p4 S4 Q0 W- P, P! P[neutron]( b3 B8 g& f! J+ \, h
url = http://192.168.137.11:9696
, c( s) f" Y' [9 D3 ^7 v. r7 Dauth_url = http://192.168.137.11:353573 [( H# c9 n& r. F6 s0 E; c
auth_type = password
% O( y( Q9 n- O5 ]project_domain_name = default
: \. |5 B" h# x- Suser_domain_name = default/ M! L- [2 ?1 P. |& s/ J
region_name = RegionOne6 ~+ @  h4 }0 {5 q3 v+ L
project_name = service
: p, m- _4 @& O- `# Y, O$ G' \username = neutron
6 S# N6 F, Q: npassword = neutron
$ y& B" |3 Y; L& G4 {7 `在[neutron]部分,启用元数据代理并设置密码
# i9 R8 V- ^' ]" n' V* A5 n( B
% b; H4 t, B1 d2 V  o" [[neutron]3 A! \/ N0 Y* v( P* o  A* ~
service_metadata_proxy=true
/ s. O) V7 C# T* h; v; Ometadata_proxy_shared_secret = shhnwangjian3 ~) M' x; X! \2 C2 i- e" y% @; H8 a1 E! D
13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini" u* X8 m# T; x4 o3 ?8 x; h' N
) P) t2 S6 T! I4 l2 v2 f# d$ i" n5 P
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini* i1 u: u& X& q' `9 i( H; e
14、同步数据库
, n! h, E. N" s# j2 `9 I/ s3 i
" f" t; V( P0 s7 G+ F- }$ v0 csu -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \+ [) h( h; Q$ W! V
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron* V9 v* d. |% Z6 Z2 P
15、重启Nova API 服务
/ H/ M8 X; M3 v2 ]/ O  O2 X
. h  I, d; q8 c0 jsystemctl restart openstack-nova-api.service
1 G' S* c4 f# D$ b1 E16、启动Neutron服务并配置开机自启动$ b9 O4 G$ H4 K. V+ e' |$ N, u

  @& P: G- ^! [/ B# g( Tsystemctl enable neutron-server.service \4 i9 G  U' X' F* W6 M& w5 W$ l
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
$ q3 I4 {4 h% B; i- cneutron-metadata-agent.service5 O/ V- L, P  @4 c; j' S
) d7 \! {; M) C& L! Z
systemctl start neutron-server.service \# q' y9 s5 h! }7 t, C: u$ z' ?
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \: ?0 G5 a  c9 R& ?8 [5 @' Y
neutron-metadata-agent.service
! X5 I  C" [; {6 k; W/ x' P17、keystone上注册Neutron服务
' g) T+ a; p+ @  k8 \创建neutron服务实体8 I- x; i+ g# A" R" u$ z

% Z$ a& S4 B5 j4 w6 ~+ isource /root/admin-openstack.sh
( a5 [& X" ?& @/ F# o; Eopenstack service create --name neutron \, E$ v) o- o6 H; Z+ S
--description "OpenStack Networking" network8 @. b- ]3 H  c8 q& }

: p; |+ r7 x8 n创建neutron网络服务API端点(公有、私有、admin)
7 w8 W0 X" B5 O5 n% `9 F
$ F* O2 n, W( n* |+ oopenstack endpoint create --region RegionOne \
4 L$ t3 J# `7 Qnetwork public http://192.168.13.11:9696
1 X* M6 g* S; [  [0 \4 _8 m+ E$ R0 @: i' b
6 l6 J3 ^4 G0 A7 q' M/ ~
openstack endpoint create --region RegionOne \& y! o, c; ?2 r$ p6 ~) R  z
network internal http://192.168.13.11:9696
8 N! t2 {2 B1 W# @8 D" X3 C
+ v1 Y2 [* I! z8 f5 X2 B0 t- D' R! z
openstack endpoint create --region RegionOne \
1 Q9 N9 e, ^( ]1 e9 p+ K  `) Ynetwork admin http://192.168.13.11:9696
9 u+ J2 L  \  L% D2 @2 P% x( P" h( e$ O
18、检查neutron是否安装成功
2 T' D5 H. Z: h' H  p# m4 L7 r6 r" b; A. I) G$ `$ L- X
neutron agent-list' l5 K" `8 S+ a4 m1 n- c' G' a

8 i. u2 N3 x7 ~9 t分类: openstack+ n8 M6 J$ [! `5 ]4 f' p3 g
 楼主| 发表于 2021-10-8 16:43:27 | 显示全部楼层
配置网络服务来通知计算节点的网络拓扑变化' B8 v' X& n: a2 ?7 p' h. u

# o5 t1 T2 ]9 g. C1 F2 [5 }; ~8 d[DEFAULT]! ~3 h7 ~( @: c' h# \$ Y8 H; ~+ H8 K
notify_nova_on_port_status_changes = True3 X9 ^& U, ]% ^: \
notify_nova_on_port_data_changes = True1 X$ }! w. A2 C3 B+ ^) v

  D% x$ _: v7 ?8 T5 l[nova]
/ k& W% x: F5 r5 o9 ~; tauth_url = http://192.168.137.11:353571 f7 w. K* Z3 o6 y( x: M! e  ?: A0 F
auth_type = password
! G$ G) ]- u" R: a2 E2 pproject_domain_name = default
9 q+ z1 Q- z+ d& l; W- y2 uuser_domain_name = default
' o6 R/ y# @: @( c0 rregion_name = RegionOne# b) L- [, ]+ u" L. o" R8 L& B
project_name = service* X% ~3 g6 j! x9 H! s0 X) j
username = nova
: C$ x# v# m  U4 v9 r, |# n$ zpassword = nova
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 点击这里给我发消息

GMT+8, 2026-4-8 15:22 , Processed in 0.085435 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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