将设为首页浏览此站
开启辅助访问 天气与日历 收藏本站联系我们切换到窄版

易陆发现论坛

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

Neutron控制节点部署

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

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

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

x

6 u# q: g, I. K3 r9 }+ g! i
网络节点的实现模型

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

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

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

https://bbs-img.huaweicloud.com/blogs/img/1559202114278307.png

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

https://bbs-img.huaweicloud.com/blogs/img/1559202164749071.png

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

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

https://bbs-img.huaweicloud.com/blogs/img/1559202188828141.png

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

https://bbs-img.huaweicloud.com/blogs/img/1559202203915280.png

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

4 q& r& u! p/ s7 _
* `9 R8 ~# V, V1 D/ ^( }
8 _  M8 X7 r: }2 R) H

1 n0 o- \9 y- V3 @
1、软件包安装
1

( q) `2 x$ j: i& b# Z% g7 q$ x6 w
2
& Y! z. f$ b2 ]" {; {. t
yum install -y openstack-neutron openstack-neutron-ml2 \

; B( v- F6 q* \& h) G
openstack-neutron-linuxbridge ebtables
  H+ F+ Z. y& |2 P
1 z$ n2 o4 g/ T1 @
  _  m" m: `1 U9 |' A, d

3 O# i- m+ M0 Y1 \0 q3 y2 o% |, F& F, u
2、数据库配置
1
' H2 i1 b0 ]/ Q) Z- E* W
2

; C7 ~: r: a: u# l# X5 Y0 w
3

5 M; T; ^$ C3 R
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
( k; @" p# m2 S# ]3 {
[database]
0 E. t! u% k+ \& g2 w
connection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron
6 `# [% e3 @+ K/ C7 t9 |" M- A

% K/ l7 z& V/ F+ i
2 G  S4 m# o6 R  J
/ r! r) x* H* @7 I+ [

% k7 c1 J, x- J1 }( t
3、配置keystone
1

  _/ v+ U9 Y% ?. ~3 Z
2

, r" L; Y) W  g  n* g' O
3
; f# _( y$ w" n! @
4
/ ~3 P1 i4 K6 g0 l
5

' L2 i# E8 z( |
6

+ k. X) U0 c3 Z7 z
7

6 R% O! d8 L: X
8

: V7 t% s- y; b& E4 Q6 S! f& A
9

5 O1 x3 _+ A. }" [' K1 ^
10
* y) B, g$ a7 \- v8 C! t
11
! C7 W6 l' `+ l+ c) F. }
12

- ?# i/ h3 L2 X# k! P, z6 T
13

/ Q$ E9 \; S' `: r$ [" D
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
' L+ d5 E0 r( M; o2 C0 C
[keystone_authtoken]
4 W6 \2 [; T" r
9 [6 m; b- x8 h
8 B# p. J0 S! Q5 r& @8 p
memcached_servers = 192.168.137.11:11211

' T+ s2 j# [" {1 f* i# D
auth_type = password

3 S9 l+ A+ }& @* A
project_domain_name = default

( O# v  f; }$ z2 v8 O
user_domain_name = default
3 J# ?# i+ v+ ^" u
project_name = service
( R3 I8 n( k4 Y# j1 i2 S+ N* |
username = neutron
/ p! ^/ [6 m% I$ p" _
password = neutron

( }( Q! ^/ H5 D, E/ J- @& c
[DEFAULT]
* `. {& S( z( u; p, `
auth_strategy = keystone
2 ~$ I. w# ~- [# L3 E4 }, u
# R+ j  Z9 O6 q* D* F0 F

+ n3 p8 A7 E( {: a9 d% c. m
- j" n0 c; |/ Y6 \3 y2 B
; h2 G( s, t1 _- l: W
4、rabbitmq(消息队列)配置
1

$ Z% m  t- s+ i- ^, g% c, ~
2
- A$ [2 I  X5 P9 }
3

! h! a  p" P6 l
4

$ c0 d/ }$ S. h. x5 P
5

1 ]6 M* f& s$ q
6
4 u$ h3 |! ^! V1 T" r; g& X7 Q
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
8 a; \4 Y0 L5 D8 B9 I' l( f: }( c
rpc_backend = rabbit

; N7 y' D* y, V; \+ c1 L& ^1 [$ \
rabbit_host = 192.168.137.11

, h! o6 @0 L8 F
rabbit_port = 5672

# `; }( V2 W& m) R' u) P' l6 d# T
rabbit_userid = openstack

3 Z2 S5 U. b+ _+ I* x
rabbit_password = openstack
9 i% X) j; O" V) B" C
/ s# E; Q$ ]( w3 [( U

! p# `* o/ Y" V  L3 n) o# c
  l2 x( z8 H  [9 y7 h
. f  P! g: n/ N2 Q4 V2 o$ w! T
5、neutron核心配置,启用ML2插件并禁用其他插件
1

5 F$ F1 x0 R6 `0 [8 \2 I! |2 k
2
1 n" ?& `4 t. W1 i3 r2 i& L8 }# H; Y
3

" Y0 Y# h. e; M& m
4

  D# H' B) A% k
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
' A4 W0 x, G0 {! N
[DEFAULT]
# ^* N* p0 E- ^7 n5 N2 w+ s
core_plugin = m12

3 H. F: c' ]! |
service_plugins =

3 M3 }. a: S3 P. U

. c  t/ m  c$ V8 J1 L3 V" |
, N: d: B* \7 [
" _( C9 s9 ~5 P+ r0 }

# K: E# @0 u) w1 ?% e
备注:service_plugins等号后面什么都不写就是禁用其他插件
6、配置网络服务来通知计算节点的网络拓扑变化
1

; j: X; M+ k7 Q/ P, o: {# Z: |7 {
2
$ x2 U' K5 b) P+ H
3

, ]+ R- B" _/ R' j' h4 r
4
: b3 _  s( k2 R5 E1 V5 J2 \& q
5

& ^- t( t6 \' |+ ?4 K
6
( K& Q4 V$ s5 E: g2 `
7

$ r+ S7 M# o- |- n
8
) B5 ]' G3 E" `
9

" Z" H5 ?8 }& O7 g) I( ]
10

8 z2 m3 \( |  g5 @4 r( b2 M* R
11

) q( L1 K  T2 R' {+ C1 h! o3 \
12

7 [. G( i6 ?# P( j7 @+ M
13
# Q1 h, e2 J! w7 m; @
[DEFAULT]

9 \- {  ^$ g7 a' b9 `
notify_nova_on_port_status_changes = True
4 V, U9 c) L9 j0 u, y8 e
notify_nova_on_port_data_changes = True
9 U% ]( L) P( H7 Z# X

/ X# `) L( ^/ }& F& u% A5 K
[nova]
9 W% i. ]% ]' a
" u0 I8 s7 Y2 O
auth_type = password

4 A) Y0 \' U7 g
project_domain_name = default
* J/ N/ X$ V; L0 f
user_domain_name = default
. p3 o0 p9 w  p2 y: H7 k: {
region_name = RegionOne
) L1 s3 }3 H% ~
project_name = service
3 }, X( f  {" J& ]4 C& K
username = nova

5 A; T0 E& L" P- C
password = nova
6 k3 J  E4 ^% ]9 x4 O

: u. I( F8 {3 s' i7 w
+ S9 |% c  ~! Z) ^$ O

* l# T4 Q* G. U7 @2 M  W8 Y7 w  {- S; r
7、配置锁路径
1

4 y. c! m% ]) Q3 _/ J
2
7 ]7 X' M+ G9 n! a6 S
[oslo_concurrency]
+ P' a& e. ~/ }+ |- p& z- b' P& a
lock_path = /var/lib/neutron/tmp

- J; [2 A0 L8 K4 w7 c9 |" T

% U8 {8 z! N6 ]. x! K+ X

, b# M' u8 l7 K2 n0 R( K
6 b- J9 m. a% r5 t5 e7 J+ `$ M
6 m+ ?4 K- i, N( j. N
8、配置Modular Layer 2 (ML2)
ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施
编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
  • 驱动的选择
    8 M4 Z* o  o1 X* m& q! ~3 O
1
" M: W* i/ w1 h  S/ \
2

0 ~* x6 a1 P: R& [/ I% u
3

0 V5 |$ ~) Z; v2 R# Z, K
[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini

1 f! s+ H. L) X; V: _2 P" u! e( u
[ml2]

+ G' H$ b/ N, V7 j5 ?/ b/ _
type_drivers = flat,vlan,gre,vxlan,geneve

8 k" Q5 u( l8 v* l$ r
7 w, Y# w* G. |+ B
1 {1 g6 b* |8 [6 B7 i( x

+ ?( g* W% c5 Z3 [  K+ R
/ N9 o2 Y, e4 ]: N5 f
  • 设置使用什么插件来创建网络
    # _3 l$ E9 _: ]( R0 F
1
; |; c% Q' K& T% M. `
2
. P' e0 X4 G9 c) g
[ml2]

* P  o' q4 S0 R/ S& E% n
mechanism_drivers = linuxbridge,openvswitch
, a0 f; `7 ]2 G' `9 U
; a* G& |! p9 N, |1 B. u) [
0 p4 L) B, L" `9 k! j" ]
5 D# ]- D1 t8 E! U  `4 y

2 U0 l; ^7 v. D2 W: |' j9 d; K
  • 禁用私有网络(租户的网络类型)/ h8 b& v, K" f9 V6 @; M6 {
1

% T  g2 q0 k" \: G0 C
2

0 e9 J5 C4 F! x8 ^% f
[ml2]
' w  U# G  Y; n  z" v* t
tenant_network_types =

. c" Q" i8 B. r. p- m

" @+ w5 |# y2 A1 C9 ]" z  G2 t/ \

' O$ ^& h' Z  N6 p  @: M, `* N1 }! u6 f. `+ _+ g% u: a( A
! a! p/ V/ y- O- z. N* I7 k2 h
  • 启动端口安全扩展驱动
    0 F* l! R  q- H" H$ R
1
8 S8 e$ T1 t+ r6 W2 B8 O1 A) i
2

/ ]) d) n8 n2 T3 S# m
[ml2]
' F. r& d! M8 G, Y3 Z- j8 ?
extension_drivers = port_security

( t. \% F- I7 L% f; P

0 _9 {) V# z/ V
% s' Q: v/ {% R& M9 A, D
) j4 a- M0 K7 k' {) }
% d, r% z' H* [% F' H4 B; G; P
  • 在[ml2_type_flat]部分,配置公共的网络) O' q( N$ y/ e/ P5 Q. w) c
1
" ^% k+ t0 a4 M5 X/ \
2

' [7 J3 y- j6 m& U& `. {
[ml2_type_flat]

' K" n. P+ \! `/ @; m& d* f6 t  p0 @
flat_networks = public
% w% E# T0 [6 i' T  c

( S5 q8 Z+ p* A& \4 |5 P

$ Y( t8 n0 U% U
, K+ @( J  Z2 H: S9 L: `2 j7 @; W& v( T3 a4 y' ?2 l
  • 在 [securitygroup]部分,启用 ipset增加安全组规则的高效性" L4 B' ^# W3 T
1
, s4 ?& B7 }/ b, U! x+ n' q
2
! m# \7 B5 j! g4 [
[securitygroup]
# \  |% A) ~3 o2 c; G) }1 j: }  T6 X
enable_ipset = true

* R& y9 U& {2 S: m0 W( F& R6 ?
! i0 j' M& m; S

+ m5 X% R8 v$ x
& \3 n, Z6 }; T: j
: X2 S0 }/ k& j. m
9、配置Linuxbridge代理
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:
  • 在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来
    2 O( V1 l, u! u( U" O6 ?7 M
1
' l- }1 Q" M* V
2

$ w, d- f7 L* N2 o3 j
[linux_bridge]
1 q) \* v; H' S; i; c; I6 N  E4 g3 ?0 `
physical_interface_mappings = public:eth0

) C+ ^/ g' C7 n: M" t9 o

, n- |1 y& ]0 u1 D' X

0 F: `5 G; p6 B, T
. t9 s4 o6 \6 U2 j: ]8 U# p8 l! D  S$ C( t
  • 在[vxlan]部分,禁止VXLAN覆盖网络8 X( h, ~5 ~- z: k% L
1
  I. P0 F' w( X' R, K
2
6 w0 Q9 _4 I' g+ ~
[vxlan]

" \$ F+ x, d8 c2 R9 W
enable_vxlan = false
- U2 N1 n- S7 b0 y$ B
  C$ U" \3 K* F7 V

( M# ]; \  U( i, N* ?  v& b( I; K
4 F# s; V7 ]$ a; E6 m: Y6 T- t: R, b2 H7 _% T
  • 在[securitygroup]部分,启用安全组并配置防火墙驱动1 |$ q  ?1 h3 q' i
1

( l1 g4 y& Q) g6 w5 P7 I, x* {! B
2
' B% f+ {6 ?1 A3 p  O
3
4 J0 e  R6 O  {6 V7 N
[securitygroup]

& B; M3 r0 ~6 \( D8 h
enable_security_group = True

9 i1 d  Q8 A" g2 ]- M7 d
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
- |* _) j$ J( [- i# y8 ?! x, b- W

) z* I1 j: ^' ?# I) `  |: S$ F7 T

9 X& z6 C9 B7 u. E0 Y3 k2 g- z! Z6 r' q# {" S9 M6 L  I

4 [0 i# f7 v) N" W$ X
10、配置DHCP代理
编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:
  • 在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据# u( q* d- A* P. O6 [  ]+ J) F$ _0 W
1
0 n4 M8 b: }& j, I  X$ Z
2

8 `6 M" d+ j& r, c
3
7 s0 P& c" l# B7 E% J
4
, F  a4 A& A7 O$ \; x
[DEFAULT]

0 f/ }0 J" e9 o2 v9 C1 r' O
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge

" t6 c. R* t# B" _
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务
. y% @) z2 x  o! o* W1 _! y. d
enable_isolated_metadata = true  # 刷新路由使用
" I! P: ?" x* S1 T( L, A
6 S5 w+ K- e  d( P- f- S; ~) q6 ]
+ n0 e- _' x4 z. [& L9 P
- g. a' [+ p+ d4 c

  V( f1 b0 A" ]' a& ?7 E" S
11、配置元数据代理
<Metadata agent>负责提供配置信息,例如:访问实例的凭证
编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:
  • 在[DEFAULT]部分,配置元数据主机以及共享密码
    ; }; b7 Y* H/ T: `2 o
1

) @+ N0 H3 G  q8 M
2
" x& O* ^! k. N2 l
nova_metadata_ip = 192.168.137.11        # 元数据主机

0 V4 f; Y* j1 E# C( c0 {
metadata_proxy_shared_secret = shhnwangjian  # 共享密钥

3 Q, l/ j) e2 M2 H
4 m9 w* p6 |# A7 J/ z! v0 K
/ n% ?& R" L9 D2 e% b" e5 \. W

- H4 h8 d( }0 S  P8 O
5 N- S/ B. a% w/ X9 m
12、为nova-api配置网络服务
编辑/etc/nova/nova.conf文件并完成以下操作:
  • 在[neutron]部分,配置访问参数0 Q/ \1 _! I4 D1 @
1

1 c" M0 H  z2 d' ]1 \
2

8 r( y$ z6 k: T
3

. [/ v6 t+ I" o+ _% ^
4
( L. z- ?& J- @- K+ S( Y1 l4 H
5
! d4 Q" i- y# c% ]1 K5 D
6

. d& N- t" ^" d$ G
7

' {. {$ o5 ~$ v' x9 z* d9 C
8

& ]/ V4 U+ c) B$ k& F" X
9

* i, {' V+ H( f0 ~7 j% C
10

0 l8 w  y# ^- ~: g
[neutron]
+ [% c. S$ d0 a  q1 k6 U3 ?2 F4 d
9 I4 d* j  t3 c/ H5 _3 ^6 |, F! t
3 l- O9 g- O1 m& f- K, G
auth_type = password
  L. w7 o1 E$ J+ R4 t; ]5 L
project_domain_name = default
3 b% `3 f. ]# }; L$ N
user_domain_name = default

; C8 r8 [5 @/ h3 I0 v* v6 O. V6 i
region_name = RegionOne
; k' U. t; ~0 p, T" h0 h
project_name = service
# N8 t. Q9 `" r& x; v* A
username = neutron
8 n# c  C, q( d8 k
password = neutron

% ^0 g" {6 L) r' g

- s' m; N% o* \( y0 B+ H

/ r( F1 D. z) g5 u
4 o: Q' Q( L% s% Y# S6 i; ], Q  E% K( w$ J+ y0 @; n
  • 在[neutron]部分,启用元数据代理并设置密码- `0 Y4 O" m6 R6 y& S: B
1
2 G: |/ m! L- T4 W5 g
2

) w. y/ v0 k4 |& r& h3 a' q
3

: @4 [! v6 l. m" c" X
[neutron]
: p$ j- K1 x$ Z: g  p
service_metadata_proxy=true

+ O! \; `5 Y4 s$ U3 G8 c
metadata_proxy_shared_secret = shhnwangjian

6 j$ y; r9 I; T2 t5 n% q/ o5 C

4 j7 z  T" X& |  ]* {
8 O, U/ f; V1 Z8 ^& v

1 a' ]- c& {  b5 d2 _9 X
) ?/ H& v, ]' l5 X. T* T  R
13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
1
# M6 v! b7 j( [1 S; L' Z5 t
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
- ^; {! ?; [7 ?  v( A! i. ?& w

3 `7 a9 x4 F9 j1 _$ c" e) E% w: x$ c
5 L: L/ x8 w0 C

' r; K" G3 U9 n! f- L: ~9 J! Z2 G) \7 U3 W
14、同步数据库
1
( N& r. Q. M& R4 A
2
  Y; ^# w. n. t0 o/ @; I
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \

) |7 N$ k: O5 k
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
( z. E0 l* X5 W: F
' O+ R3 R$ t6 u% I0 k/ f
' d  L8 _7 {+ b' V* e# U

' i/ X: _' `+ z
- u4 {! v3 Q8 q8 C3 Z8 T
15、重启Nova API 服务
1

3 k8 `! H' s7 y# ?5 j+ D
systemctl restart openstack-nova-api.service
' K3 ~7 c9 l( s6 e  {. u

- h$ O  `1 J  P# o

! B  ^' F' P& [, L. F8 q* ^, {: d* v7 D3 N) ?2 \( O

+ N. N& U5 I% U4 p" G( Z
16、启动Neutron服务并配置开机自启动
[
1
4 Z: y( B" f" s1 I
2
$ y" c( b/ o6 X& v' c+ F- M: M$ }
3
. [3 A9 \  \/ C% I  ?+ I
4

3 r- f) a* q- q& h; E0 Y7 h. T6 {
5

4 V# E" T9 ~& A! N, D# m
6
+ r% j9 y7 {' T, z7 a) }* _1 p
7
, K  q6 Z% }, ]. a
systemctl enable neutron-server.service \

$ _5 Y9 E0 }2 x! X* C" R+ U3 a$ v
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

7 [- k# v' O$ k% T, E) Z
neutron-metadata-agent.service
7 Y7 F1 }. W. ~! k* |) U7 _

- f% P1 v3 |- C- e4 R, S6 k2 B
systemctl start neutron-server.service \

' d1 a. d( {. ]' u# u+ p
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

+ L5 v" b5 ~/ v+ g; r3 U0 f9 r
neutron-metadata-agent.service

' _7 O6 A. I) w! l7 ^" Y5 L
( i$ x/ _. _, T1 g4 y- ^! y

7 ~* @7 I. U9 i0 L0 A, R+ I9 [& p& X+ B8 ~, }6 h7 m. B
- f4 r# h; @' m  s& y
17、keystone上注册Neutron服务
  • 创建neutron服务实体! a* Z/ |5 F% d) }! U
1
8 e( c4 g0 @, \7 B2 ^
2

' c$ _$ K8 _5 O; J: J% `( O3 g" T0 g
3

/ U. r: K8 C& p) `7 D
source /root/admin-openstack.sh

& ?( F5 ]' c1 [# n8 g
openstack service create --name neutron \
( K1 i1 B; @  O4 d& Y2 F
--description "OpenStack Networking" network
- o# s7 Q) \  g# b* F, T

% U$ ^2 m& A  V  t

$ ^% x# D' i) m0 t% y' m! z0 |! T$ F! u) z; G: ?

4 y6 Q) u0 ]' D, t4 k
  • 创建neutron网络服务API端点(公有、私有、admin); J* W) _& ?: @4 a# e
1

; _5 h# u6 x( w4 Q4 z4 b
2

6 F' r; [8 X$ \% v" m: K8 b. x
openstack endpoint create --region RegionOne \
! n# x+ T* l0 E8 g; g! W" x6 `

9 f8 @+ A. q! P- Q: q
" [9 v! S8 e2 j( R. V
- r3 T" ?* F2 u3 [, A

- v% Y! `6 L7 h. T2 p8 }1 L( g  t2 y
1
5 b& S1 z/ p4 S* [/ _; y
2
7 p% u  j) z4 ^& Z! N( F
openstack endpoint create --region RegionOne \
  `* m+ i+ n1 ]& U; W9 X2 _
+ L. G0 M8 d% m+ q: @! M, N

  ?- ^5 ^8 c/ h3 x$ O
# o& n( n; p+ @, _, U2 C1 A
3 p4 x- R# ~2 I, x! [$ G2 I1 s
6 a) l" i3 A. U0 ^3 E8 D2 T' U; @8 C2 y
1

  a( G, }/ v/ o' `5 \7 n  d
2

( |3 r/ p8 Z7 `2 _& N4 Q# v* s
openstack endpoint create --region RegionOne \
( y- }. H8 n7 J' E/ f
  V# Z2 J4 m3 t% V3 ?) T# l5 F4 F% \

2 o8 s  S7 E  K9 F
- B7 w1 g6 u# [1 @$ m3 }5 t! i
0 l. {7 g5 G: Q4 R
- m3 Z" Z# r# N9 P5 k
18、检查neutron是否安装成功
1
& X  q1 J  [- `
neutron agent-list
+ P) ~$ b: Y; M" Z* }: q5 ?* f
& v/ C6 R5 t0 D8 A7 j& ~
8 W. U) W5 B* o1 _
$ m/ N7 n/ Q' A: U7 O2 ]
1 ?, y' p; ]$ P. {: P& h3 H
+ e9 p$ m0 D; t$ `1 @1 X+ I$ l; W( V
4 b4 Q& o: D% a* c, U8 c
$ o1 w8 O& L7 ]$ v7 R8 u
分类: openstack
8 v1 i8 {7 d2 M; A; A

4 p& o( [4 i+ Y* l: ~( O0 j$ B
 楼主| 发表于 2021-10-8 16:12:52 | 显示全部楼层
1、软件包安装& H( x2 n# s9 s1 C( R/ x
6 F6 v1 W9 }& p; B
yum install -y openstack-neutron openstack-neutron-ml2 \/ }7 H" l. ]7 D$ j5 X4 e0 X8 w
openstack-neutron-linuxbridge ebtables8 e: O  x1 V( J: D
2、数据库配置
% x2 ]/ p4 W9 x% p8 g" s
  Q6 O3 t/ N4 y  Y6 l# T. M[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
! W/ ~' q9 p" p& r4 c  \- @[database]
* n' G+ u, l3 H5 c+ F2 k3 [6 R2 dconnection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron
, E' s) q4 P# K6 j# g1 T! Y* P3、配置keystone
9 O2 T5 q$ S! w' D  ^5 z+ n) w
# j+ p2 y. \3 F$ |[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
4 I( z: I# E; x6 k  O2 T[keystone_authtoken]
, w) V- t) K1 n  j5 W' [2 u' Hauth_uri = http://192.168.137.11:50001 M& P! }" _) ?" _7 ^
auth_url = http://192.168.137.11:35357
  W+ i; Y) V) V3 C% |. v2 M, Gmemcached_servers = 192.168.137.11:11211
. o9 ]) n& T; e/ {# V" Eauth_type = password. |5 P0 \4 P5 ?( [. j
project_domain_name = default
) {2 N  u9 K! ~user_domain_name = default/ R8 l# @4 B. a+ o
project_name = service
- r9 P7 J* V6 r" Dusername = neutron
+ M" b! m% i/ T) l  I# t' c" epassword = neutron' k2 f* w# `5 |  u* A* M& m
[DEFAULT]
: [2 |1 c# r" Y+ |( _auth_strategy = keystone
6 A: z  s. H% ~9 [; ]4、rabbitmq(消息队列)配置
5 Y% T' s* x( R  }4 ^* F6 k6 d7 Q9 I
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
. V) t9 w8 F: d  krpc_backend = rabbit
( J2 m* I- V6 a9 N( Srabbit_host = 192.168.137.11- T6 K; t% _: H! ]
rabbit_port = 5672
$ y; ]6 Q) N6 |- trabbit_userid = openstack' v( Z+ r6 H+ e& w
rabbit_password = openstack
) V+ ?  |( E. _5 ^- S5、neutron核心配置,启用ML2插件并禁用其他插件
8 Y& Y/ o- B* Z1 d, ]
" Y. ~  n8 Q6 F* \( y[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
' C# X& b6 l7 \3 q1 B" n[DEFAULT]
6 `% T  U* N+ {! O2 fcore_plugin = m12+ ?" |9 C: `! N
service_plugins =+ @" }* x+ T9 @; T
备注:service_plugins等号后面什么都不写就是禁用其他插件( d8 [( |- _. q* r
6、配置网络服务来通知计算节点的网络拓扑变化
) [" e1 K6 o! m# g. W0 u1 c8 t. ^1 A. k- n; e
[DEFAULT]/ I" C0 f! l$ g7 ~/ c9 C- r
notify_nova_on_port_status_changes = True
8 s+ F$ c- L" E% mnotify_nova_on_port_data_changes = True! _7 F) Y' l1 u' U: l  I$ b! P
: `% R0 r% L5 ~0 |, W$ Y
[nova]
6 P( {9 X0 H) o$ d' V- f5 E9 [auth_url = http://192.168.137.11:35357
9 U: M6 b3 v, M* ]& ~auth_type = password
4 w; `2 e: F7 H3 u+ Vproject_domain_name = default
! H  u4 t7 j$ b6 kuser_domain_name = default0 J! ?# [# u' p2 M! ?. Y
region_name = RegionOne( A0 a# V. v" t) Z1 J$ b; i
project_name = service
3 e9 g% r0 l/ s4 ~4 W/ u8 s# e/ fusername = nova9 J! E/ V( t: ^3 a" m* O
password = nova
1 U* e) @, @" r7、配置锁路径9 L* [( Y6 R/ c9 T3 m+ b
. D7 p1 \4 d* l3 [' W# b* }
[oslo_concurrency]
0 |, Z; |/ P+ A% r4 F: Q. Mlock_path = /var/lib/neutron/tmp
) B4 t) N& X4 ~$ R, B8 p$ D; ^- }0 Y8、配置Modular Layer 2 (ML2)
0 J  S' a' g1 B, uML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施1 Q- {' l- E/ ?& ]+ l3 m
编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
5 _: O! k/ k  S) n( A. J4 |驱动的选择( S4 N' j* \, N0 v
9 O9 Y; R, h' O3 E( T! v4 N) y+ t
[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
/ L0 k1 K% p: Z) w; b) Y[ml2]4 \; i1 S7 Q( w& {( T
type_drivers = flat,vlan,gre,vxlan,geneve
! d, F( }4 L( E3 M设置使用什么插件来创建网络% v8 F0 r$ \+ P$ C1 t
' v7 f$ j/ o, i/ Y  G- P; m
[ml2]  W8 C( x0 H6 i5 S4 _, t2 n
mechanism_drivers = linuxbridge,openvswitch/ j) p& M. B$ x5 ]0 Y
禁用私有网络(租户的网络类型)$ V/ d9 h' {7 ^. Z: `* [9 j7 c! y8 `
% m! y7 j+ T# A( N7 x2 L
[ml2]
: I: |6 @% ~2 h& E* ytenant_network_types =
0 i+ o& f* I; `4 M启动端口安全扩展驱动
4 t, f8 K4 ?- Y
7 k2 z6 d( q' s$ K, H7 \) g9 E( Y4 T[ml2]
& x+ u1 @9 a5 bextension_drivers = port_security. x2 Z, d$ o1 U$ R+ {" R" X+ z/ a
在[ml2_type_flat]部分,配置公共的网络. D) p) m8 R4 [5 i6 J8 G; j

! U/ c: t8 n: j. p6 g( ?0 D, ~[ml2_type_flat]  d9 y7 M+ f; d, V
flat_networks = public
7 i% i; x- ?2 {6 |2 j在 [securitygroup]部分,启用 ipset增加安全组规则的高效性
! F5 @4 {" B, Q5 Q, D: @1 v. U% x1 C' g! Z
[securitygroup]
( }& K, M) k5 g8 O8 `" ~enable_ipset = true- M3 G* W% F7 Y. `# X
9、配置Linuxbridge代理
) P* |9 [- `5 @  @( {% D7 V# eLinuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。" ?7 L7 H, r0 q, \' A
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:/ q% C. p, p" q0 h9 w
在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来: g& T0 y$ O+ J2 F
! h" c5 B* n1 z5 m
[linux_bridge]/ ]' F% m2 [' y: f$ M/ l# u7 N4 V
physical_interface_mappings = public:eth01 |- z1 k! ~' b4 E( u4 F$ ?
在[vxlan]部分,禁止VXLAN覆盖网络
; q5 h& k" w) m
2 ?3 A- |# W2 o( E! G[vxlan]
' F# V; X$ }+ m5 qenable_vxlan = false9 [# u+ U5 c  H
在[securitygroup]部分,启用安全组并配置防火墙驱动
! K; W0 x" L0 {  v7 J
" S5 B& c2 Q2 P) ?; Y3 V* A[securitygroup]4 r) N5 W9 {( Q1 h+ A( i2 w
enable_security_group = True
% N: `, b1 R. L6 F6 Qfirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver) M: s6 A$ j# u6 ~
10、配置DHCP代理( s+ g7 p% d% F0 r
编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:8 y9 y! {( M0 W/ g
在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据* S' ]2 P1 e9 `2 D5 p$ H' i

0 e) q) Q, W4 v* f, F6 @' ~[DEFAULT]" p( i( X  u6 {* Z/ N
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge0 q9 o0 c7 x* `  i- t' x
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务
  F0 y; i8 _* i- ]7 V; H  p- Henable_isolated_metadata = true  # 刷新路由使用  n3 @6 \. a6 G% _& ^+ q# O- l1 p) h: c& a
11、配置元数据代理
& L3 h9 `: F! Z$ l<Metadata agent>负责提供配置信息,例如:访问实例的凭证
% f- M5 {, S& {# i) n6 _, ~编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:
. p; n9 G0 L8 U% P% w' Q在[DEFAULT]部分,配置元数据主机以及共享密码2 q5 H$ J* f6 I+ ~

5 t$ p3 S5 v: q7 F- x- L2 p' Y& G  {nova_metadata_ip = 192.168.137.11        # 元数据主机2 ^) f. }8 E- w8 A
metadata_proxy_shared_secret = shhnwangjian  # 共享密钥! U- d( H, R; e1 U
12、为nova-api配置网络服务5 a( U1 }: n" ^! n) ?: Z
编辑/etc/nova/nova.conf文件并完成以下操作:8 ^- [. J: `) b6 i" u: K& b! @
在[neutron]部分,配置访问参数: g; t1 p5 H7 R' v6 M' h9 K/ a5 n

& V# x, y' y4 L) ^[neutron]' y" M4 X2 w, z3 I, V+ c; K; h7 m
url = http://192.168.137.11:9696
0 f0 ?3 C. y3 {& U2 K9 ~& Iauth_url = http://192.168.137.11:35357  z, k+ u0 K  X5 a$ @, ~% j
auth_type = password
: C: y' J  L* |project_domain_name = default
: W3 g/ l- _6 E( F/ O% Y$ q" o! ]user_domain_name = default
* V( B* T8 K6 F' h! W# \" Iregion_name = RegionOne
6 K% z! Y* u1 _8 j! Pproject_name = service
' w3 |$ x! r! I7 d6 r; [username = neutron( J  _+ u; @$ A$ e, n; |
password = neutron5 X4 g) B8 g( _( H2 C1 g
在[neutron]部分,启用元数据代理并设置密码) X$ C' P- U% Y. Q$ S+ k: R
" }7 M9 k% Z) g4 z, H
[neutron], ]! W0 Z/ G3 b" \2 o2 D
service_metadata_proxy=true
  O0 z" g0 F1 P; h3 j% @metadata_proxy_shared_secret = shhnwangjian) f0 |; N  {, _2 J% R' W
13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
) R7 s; q6 g- y3 @# v" a$ z
3 }+ Q1 r8 \; d- N9 B! f4 U6 Mln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
# K# B' I, h1 `$ w! |14、同步数据库  {) I* ]3 F, @, Q0 ~2 v

/ T6 @; P& n* z  {) e' B) Xsu -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
% u, `: M: t. {% i9 T--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron4 ~( A0 V, }2 s+ [- K
15、重启Nova API 服务; L- R- F' M# n8 f  P4 {
; P1 v9 e6 l9 A  w, H. x+ F
systemctl restart openstack-nova-api.service
0 i% p: O4 M+ v6 u! m, E( m16、启动Neutron服务并配置开机自启动
. a' q9 R' @8 n: B
% i* P2 G7 a& F8 v/ f6 ~6 Asystemctl enable neutron-server.service \
( V  J" }# o' F: j! D  zneutron-linuxbridge-agent.service neutron-dhcp-agent.service \
5 ^& j! C6 W- n$ v+ oneutron-metadata-agent.service( `7 R. m: T0 P& L  N! V1 |. N
2 ^; p2 {# j2 Z. a
systemctl start neutron-server.service \% e* U0 h5 _& ~# ~" x8 n* Z' u0 X
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
! y& f/ P- m" R) _! vneutron-metadata-agent.service9 t; m( M- ^& G' q7 b' |% N
17、keystone上注册Neutron服务
3 u/ e% ^: d" h( n' k0 _2 V创建neutron服务实体" F/ \9 j4 ]9 V% Y3 j
1 M* }! y- ^% R) v$ \$ K9 a
source /root/admin-openstack.sh
  [4 x. Y6 \' ?  Copenstack service create --name neutron \
6 P. p4 r: g' C( p  T--description "OpenStack Networking" network4 i. q+ i' @4 `
# ?( Y- z2 f8 z( [
创建neutron网络服务API端点(公有、私有、admin)
4 }: P. b- |/ n' }# q/ ?( |+ D
( B2 W, `( E/ H$ X0 D9 Gopenstack endpoint create --region RegionOne \
2 R: n% m. X( J5 x" ^network public http://192.168.13.11:9696
6 F( t2 I# V% x1 F, B' x/ o: W% S3 d1 F* D# R* @  j

7 i7 q4 M- ~8 D; l; D1 uopenstack endpoint create --region RegionOne \' z  F" f& d, f. e* H' e9 L
network internal http://192.168.13.11:96960 {+ l+ a! d, z" D; w0 |, f7 k
" _. A' ]! ^4 \1 F( f+ l8 P

* W/ O: }% a0 ~3 f1 gopenstack endpoint create --region RegionOne \
8 {6 P( c& J: K; g  wnetwork admin http://192.168.13.11:9696
# I  C* T4 ?% X4 h4 u  S, o" m4 D
18、检查neutron是否安装成功
0 R" r" S7 _8 g' E: i. c6 B$ P" b% E* S. j
neutron agent-list' J2 J% D' W- A7 v! J5 v4 e
% N2 n, v+ K9 }0 n  W  P) X
分类: openstack) h/ d' M$ @6 A8 \* _
 楼主| 发表于 2021-10-8 16:43:27 | 显示全部楼层
配置网络服务来通知计算节点的网络拓扑变化* `% V5 b9 v. Q2 U0 P7 b
3 `0 V/ K; Y% \8 w
[DEFAULT]
3 W2 z8 d7 R; r+ u) @1 M8 Tnotify_nova_on_port_status_changes = True; a9 }0 c8 r! i8 Q$ j
notify_nova_on_port_data_changes = True9 t' }2 p) L  V8 q" r

0 z. {" m8 J: |$ x3 X  y9 D[nova]
( ^; R- V- v1 W3 w9 i  W, f1 gauth_url = http://192.168.137.11:35357
/ H* B5 O+ X$ u$ e; G* y, dauth_type = password
  _0 h' B+ \5 |# }) M7 Eproject_domain_name = default
) b' T; E7 C- t' T1 }& \user_domain_name = default( H( T7 ?4 o* |% q9 f; E2 }$ {
region_name = RegionOne( i8 R! H2 B9 \. h1 y, c
project_name = service! W1 Q) j& f0 E( Y0 o' _  C
username = nova
" b$ A5 e" r; B8 |8 \' r2 t. cpassword = nova
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

如有购买积分卡请联系497906712

QQ|返回首页|Archiver|手机版|小黑屋|易陆发现 点击这里给我发消息

GMT+8, 2021-11-28 20:25 , Processed in 0.190336 second(s), 22 queries .

Powered by LR.LINUX.cloud bbs168x X3.2 Licensed

© 2012-2022 Comsenz Inc.

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