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

易陆发现论坛

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

Neutron控制节点部署

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

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

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

x

/ l; Z, ]# t: B% C) C6 t' \$ i5 m
网络节点的实现模型

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

, A* V+ P$ n. F8 B' Q
, q* e: X* R  E
; e' [4 y: }  D6 O8 x0 B

1 M. l# n; k9 {0 X
1、软件包安装
1

+ i3 \5 B8 m) s3 K# h9 {$ J3 S+ t
2
2 B9 B: V1 }# h2 G* ~
yum install -y openstack-neutron openstack-neutron-ml2 \

' s3 b6 Z7 p; _# {) z8 a' b; z
openstack-neutron-linuxbridge ebtables

5 M& g6 S" E4 e' ?7 A; e

. M: l0 K9 J  M: v7 q6 e
  g' |4 D* |, [

, h# i# o# z3 f, F# W8 i7 e" E. d4 ?- i! I$ G
2、数据库配置
1

/ \8 r. r1 g* ^5 @% W5 Q- n% Y  _
2

0 b9 W6 X  |% v8 r
3

3 R9 r. [( M9 c/ q
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf

; P. J( f1 x: l- A3 t7 e
[database]

  l$ x1 O6 ?$ N4 j0 M  |3 c. J
connection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron

. z2 M1 g/ H+ u3 o7 c# p6 e

/ d! _& P: M$ p& K: _

& g- L, {7 d1 ^" C) A# K! q7 G& x# T
0 w* h! Z) f& a" E# d; {& g4 v
3、配置keystone
1

! t4 W' b, U4 N' S0 @' y
2

6 J' d6 v8 j% C9 s4 R9 H1 ^
3
8 r' Y  R% n/ E: z: f( S
4
& H- ~( d9 t; `& c" d# r6 f3 `
5
% z0 m8 q4 i. ?! u; A; t
6

& s$ ~" V" r2 r" }& L! W0 K
7
# v( T2 b+ O- T+ M( M* [* h
8

- O6 ?' q- l7 f
9
) M% E  W" m# [  m) B, e
10

6 i! d* l/ {4 {
11
7 K' Y" _4 @" L; e* n: O
12
* _9 m7 A8 _! u$ S
13
. _5 M: H* A% p" \! o4 C/ m' f) A
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf

- O4 V3 N* W6 {
[keystone_authtoken]
8 F. r1 K- G+ c2 R3 {, N
. w6 d) k% d' I+ t& ~/ r0 c
( s. j% P1 a( {; s) y7 o  m. z
memcached_servers = 192.168.137.11:11211
/ |6 x" q) \# F
auth_type = password

9 f* B! n! ^/ B  d/ C
project_domain_name = default
/ \; L6 C1 ^+ o; x, Q- C. L* s. U  X
user_domain_name = default
$ X: r3 U3 x1 O* u% f" E
project_name = service
# ~6 k# m6 t5 B9 E, ]+ F
username = neutron
: y! i# d# [8 Z4 g% j4 M
password = neutron
! g7 m) K9 v2 |$ j& @" {
[DEFAULT]

" V% m+ {% u$ E+ G) h6 X
auth_strategy = keystone
! X5 a, Q  @1 ~) N# }4 _( Q

( u* E9 F& }; C% z% a
. x2 c9 P; E) `9 t+ J

1 V# M9 m4 y' |
8 \% Z6 z; `! w! [" S5 G3 ?; h
4、rabbitmq(消息队列)配置
1

1 G/ L! Q, Q& q" N) G3 j4 M9 g. H
2
; [5 a1 B# s3 C" L8 T
3
  A7 _" l8 v; y  `4 S* L9 ?
4
2 Q6 D! b  `3 @2 I- ?! e
5

' A4 h: I& ]& B* y
6

" X( K3 C6 A0 v; E
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf

2 L4 ^0 q: A5 u
rpc_backend = rabbit

, h6 ^+ q/ O5 c7 Q( h  }7 y2 g  t
rabbit_host = 192.168.137.11
% s2 j" y+ k2 f2 k
rabbit_port = 5672

3 r* V  Z; V, j( f
rabbit_userid = openstack

4 p; E1 h, |4 ?0 V6 R0 ^
rabbit_password = openstack

- \6 B" w# q" o4 \1 w9 n' t. i

/ t% _9 [$ N- j/ c1 {0 n5 X9 A, S0 n

* O; ]6 o! b2 x
8 G6 H4 X/ ]* D- r- n7 W5 M
8 ^# S  V3 l$ P* l+ S6 t
5、neutron核心配置,启用ML2插件并禁用其他插件
1
5 r, |; j5 [( K5 x/ w8 E5 \
2
' K; J# O; Q. L
3

( l' t9 u7 w6 Q" d9 ~, l
4

2 {3 o& |. f% V( T8 b
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf

& D6 d9 W0 U" U. k
[DEFAULT]

5 `; }, I/ g" j- M2 a2 L
core_plugin = m12
4 i% p7 v- n7 i! I7 E: c8 T# }
service_plugins =
) C0 {, y- {0 E) ^! j, E) w

( o* D6 _4 k8 k9 n, ]6 a) ~" P+ T
! J7 V4 r* }5 R) d  Z! h$ P( N
! e" N" Q6 a+ Y9 J. _8 o: p
2 S+ {0 n8 ]5 p
备注:service_plugins等号后面什么都不写就是禁用其他插件
6、配置网络服务来通知计算节点的网络拓扑变化
1
8 q. `- F  h! ~# L
2
- Q: h; R7 x2 c" L7 ?
3

6 C8 i5 a7 A  }* x7 H% E
4

; _' Y) U1 _2 z' `0 P$ _6 |
5

, H! c9 Q3 i( ~2 d' w2 \7 |" [5 n
6

! S( l9 c( g9 l( P/ n; _8 ~
7

% n( j; s8 m3 R5 y9 [
8

( p& B& L# w, I) |4 e
9
1 \# v8 z9 a* v) D
10

$ s5 Y" E1 T" `4 U4 a; A; {5 m
11

2 B/ l- P9 g' D) U& f
12
- ^, g; p# _& p* J, B
13
& d4 ~7 J7 z; G) Y* c* H- m
[DEFAULT]

* T( P7 u' h2 M9 \/ @
notify_nova_on_port_status_changes = True
( ], o+ `$ a$ {# t7 n
notify_nova_on_port_data_changes = True

) k4 K: j4 Q, {3 t' S
0 z# o. B" ~4 ~1 G" B6 H0 w
[nova]

1 v1 E( e2 X% n0 P+ t% f
% B  C8 _4 o* z7 I! U
auth_type = password
( l- A2 I0 E5 G; M8 C' j
project_domain_name = default

( S" k" X6 @' S9 ]- Q% n; V7 s" N
user_domain_name = default

! Z6 o- U5 H% {3 O; Y. x
region_name = RegionOne

5 w2 e. ^& G  V! n  x! C5 V* r
project_name = service
6 o7 {! c  H: b* W9 F, p6 w6 p
username = nova

# y: u/ g, a' z4 P* `
password = nova

9 l. S) \5 Q; [" s/ _% i

: W  p# ^3 `' Q0 ~" C6 Y
) [: H1 T: ?' J- ?6 |% g

' J; e3 T% ]5 W: {0 v: f1 ?* L  i- x5 w" J/ i. n* \
7、配置锁路径
1

+ d( g2 C# N2 L  m4 x
2
! `! u1 W8 O: L' g
[oslo_concurrency]

: B( K: c# v' R" S8 w- J
lock_path = /var/lib/neutron/tmp
3 c" t7 E7 a& H+ {9 g

' W; s- u5 J8 u& ~
! P& `( A+ _; V' N9 j1 W
% g1 a6 c# ]) C0 l

& M! H/ }  _! Z: e0 a' K4 C
8、配置Modular Layer 2 (ML2)
ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施
编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
  • 驱动的选择- r2 f+ H2 u/ u7 s9 N
1

# ~& Q0 X" j2 [
2
* H1 ?! F2 O6 Z: e6 a
3
9 n0 I) a  Y- s# H+ i- Q
[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini

3 B. y* M) c/ R
[ml2]
3 C2 n, }8 m& d9 L5 i% c
type_drivers = flat,vlan,gre,vxlan,geneve
$ z) {+ s! _- \; g
" {8 @, {8 S: X

* p( L) V; p% `) X
* Y0 }* c; |0 \; ]- F8 `8 r2 I, J, q5 [
  • 设置使用什么插件来创建网络
    ( m0 o/ z" j# w: n6 B7 z. x
1

# I% ~% a- X. h9 v2 U2 e
2

( o! W, m; O! s' u+ V( ?2 Q# `
[ml2]
- k7 z, u% B: R1 [
mechanism_drivers = linuxbridge,openvswitch
# M9 w) o" `1 @$ r

6 L4 w; A: C3 y' `& H& c  G/ i; m/ ^
/ M0 J& f  n9 }! h3 q3 J

) K* J  N' U5 C% V4 w' ?# y
. n0 g) F& W9 N* l4 c) U3 h& t. N* D
  • 禁用私有网络(租户的网络类型)
    6 U3 F; V( e6 I% e8 o. V. n1 |
1
3 Q* \# @  B7 w
2
. t' ^. Y5 @, S8 o* [% [
[ml2]
$ i& ~# p% i: O6 Q* q
tenant_network_types =

- T6 `0 W0 o! X
9 H* S( S' d6 Q% J4 p" U& W

1 J' S$ r; {, M$ ^" a9 D
  \0 A  j+ M: j" @9 Z& T7 d2 w
: P5 m( U1 }6 S: A  Q
  • 启动端口安全扩展驱动# g8 G$ b3 p1 h( E
1

" k4 s; u7 u4 ^# k
2
8 F, D! @% H4 A. x! `& g- ]8 D% V
[ml2]

+ K7 F1 V# S. X- ?9 O
extension_drivers = port_security
5 [2 c4 M1 n9 ^; ]+ Y0 r! s
; O) O( `# y$ m8 a" w/ |
% U- h# w: O$ ?, y4 ^( y

8 G2 U7 O1 M# M
% Q* d  R: y# ^
  • 在[ml2_type_flat]部分,配置公共的网络
    . O/ K* \8 [' w0 W) H  ~
1
" V3 e7 e! d/ f
2

. Z" j6 V7 `6 C
[ml2_type_flat]
& p0 S5 N# _3 V3 D
flat_networks = public
) S- m* P2 ^5 q3 Y; s( `7 g
+ h9 y) e( q" N! Q
0 O/ W* J1 L* E" _3 l

9 o8 L. P5 v0 _4 x) l: G) l
  F$ y. u0 O: L, d
  • 在 [securitygroup]部分,启用 ipset增加安全组规则的高效性9 ~: D# L; d4 l
1
* w6 K- ~* v6 z6 Q( r( G& m+ A
2

; y3 u! G) E  d9 [2 e  b3 h. L. @
[securitygroup]

- [! K7 e6 \: w& s
enable_ipset = true

2 O) m4 \0 ?9 g5 T$ E8 K3 G
- ^2 b6 X+ Y$ k( M! a0 I
1 Q% v5 {2 d& }6 ~

0 M0 H" A8 O8 t8 d1 I' V7 Y
$ O  H8 L; p2 O0 G! [
9、配置Linuxbridge代理
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:
  • 在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来
    : m" F0 K& J0 ?, n: A1 q
1

8 n6 T; d+ T$ t' t2 o
2
6 L3 e6 W2 ^2 o" u0 n' s
[linux_bridge]

- J+ [, n9 K$ U# i
physical_interface_mappings = public:eth0
  \+ @' N) z, U: M& N$ F/ r
3 _- C  M9 }) G; i- Y6 R- t7 o

& ]3 J. A; v+ W% Z8 s' q- ?$ S( |) t& y4 C

% k% Q2 f( C+ H' W2 \& a
  • 在[vxlan]部分,禁止VXLAN覆盖网络% O, X+ n) T, t
1

3 u4 ^! H+ F6 V
2
+ e0 \8 b' w1 g1 R
[vxlan]

+ d9 d" ?2 m# W# \; j
enable_vxlan = false
. i: ?; \8 p+ X9 w* x9 [
0 t! t+ h7 X+ d' n

0 q) M* j9 t. A8 u1 @2 X2 y5 [4 K; E8 b4 q$ K) \. c) c

: l  J0 }& R0 D, v5 j0 F
  • 在[securitygroup]部分,启用安全组并配置防火墙驱动
    0 V" B! E( w) Y4 j8 q
1

+ E9 }9 z2 A+ z0 c+ e
2

# n; h' w) e* |
3
$ y: U4 T: E0 F' u  w
[securitygroup]

% b: m/ b$ n& _
enable_security_group = True

' [! m9 q9 d5 B' u7 t$ w
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
- W6 v3 d( f& n  [& @3 z/ q

. Q1 {$ m* p% C4 y$ x. n4 @) q

& ^# p2 i" g" P/ ?: r$ K8 {
* f. [3 ~/ U7 p5 @  u, T
6 S! q+ Y; S' O3 Z9 J/ }
10、配置DHCP代理
编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:
  • 在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
    0 A% d" o# c9 T
1

& Q- }4 r+ K5 K% L7 _
2
$ f8 o( H# q0 r4 Y5 q3 |  `3 o
3
6 F) P2 h& X4 ]" Z; [
4
+ R, T# e6 u) P& t! }5 W1 s
[DEFAULT]

# V8 G5 q+ [9 S& {
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge

. i9 d" }) j& V* D" p6 `* E
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务
" a& L6 u( i9 [5 d: q( W
enable_isolated_metadata = true  # 刷新路由使用
3 g" L# o% \1 ?' g# ?7 v  z% l. H2 W% J

0 G! Z$ M+ O- g! d8 b( p3 p

" q0 O( e) X2 g1 m
8 n7 N% X4 h: X# N8 {# k# C
% h9 @4 H4 d, {' ?! V6 p
11、配置元数据代理
<Metadata agent>负责提供配置信息,例如:访问实例的凭证
编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:
  • 在[DEFAULT]部分,配置元数据主机以及共享密码
    5 t3 h0 }, n9 M4 w/ r1 n
1

) Y3 k9 A3 M4 M9 \/ ~
2

3 c# G8 t1 p; h
nova_metadata_ip = 192.168.137.11        # 元数据主机

; G$ `/ t# A$ ?# k' @, s2 P  V
metadata_proxy_shared_secret = shhnwangjian  # 共享密钥
7 N7 p8 ]+ `) D4 @

8 h$ K' c  z* S' r( n
9 }* ^3 c. ]# U. n. C4 \1 ^7 t) R
* ]4 ?8 Z* j5 n7 W

* X' V( @8 S1 i  G0 M: J" C
12、为nova-api配置网络服务
编辑/etc/nova/nova.conf文件并完成以下操作:
  • 在[neutron]部分,配置访问参数
    & g# L/ P# m( \7 b2 X4 P
1

0 g, V5 F* D& P  [4 E. T2 T
2

' |7 H4 Y  a4 u
3

! B, r1 t7 g& i; B) ]
4

2 c# [' H/ s* @: h
5

- N& `6 q- n) l+ t$ l' G2 c2 y
6
4 `& P% ^2 p/ Q/ }/ M" X3 g- s; k
7
( c0 a" i/ ?6 ^- A- ~& ^% q
8

* O" t( r/ D+ m6 h8 v
9

, t) @: w- E9 o: ?/ o- D
10

6 d' z& R; p  ^* @- ?& N
[neutron]
8 k5 P- t' `! |" A
% l( i% g# V) Q# h6 V' P
3 e: n- ^! L3 Q
auth_type = password
" o9 [- C/ V  B5 f, ^: [
project_domain_name = default

$ I% i6 ^* f0 q& O' ]
user_domain_name = default
, a& z' c3 u/ ?
region_name = RegionOne
" ?- R! H0 G* \5 L- C4 N
project_name = service
1 r4 u# v' D7 H6 P
username = neutron

6 Q1 d5 n! k7 ]0 T$ o  y% K
password = neutron

/ k4 P; V* R$ n* ~2 {- l5 i6 b
2 r! g- `/ G8 A" w+ J7 a

! g, F' J# o6 J8 S! y. u7 e8 J
9 W) o; C" H) v' E' Y" \" j1 o" k' X9 m5 }' }/ s
  • 在[neutron]部分,启用元数据代理并设置密码& V4 `# @! x9 J( g; w4 f
1
9 p' Q& d4 V7 x% E
2
. }8 t* |; l: X2 I7 b# e$ R
3

+ u3 P& }# r! C; {! k
[neutron]

+ q7 a& u" P: G$ M# C$ n
service_metadata_proxy=true
! e. S/ P# y2 P4 N8 |" a* e5 `
metadata_proxy_shared_secret = shhnwangjian

& _9 V/ [# {* v9 }
7 {7 X! _/ i: o: z8 Q4 e
1 B7 [; J' H' A/ M1 U3 Q( r# ~

6 p( a; j9 b1 f  V! t# F
" W" p/ E) \, I/ \; f
13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
1
) g1 I& m5 V; h  Y
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

0 Y4 i+ A& {5 P6 b/ W
4 X# r) D4 X( x! m

9 |  D% z9 M8 U8 f/ M9 n8 B5 h- F# \# \0 d3 h2 M8 }
7 I0 w6 v8 V' H* x0 p/ E% k8 i
14、同步数据库
1
- k+ |: e' D0 \' n: G% e
2
! X" d7 p) N) G. Y
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \

& ^3 o5 a7 {& g/ ~6 _8 M- C
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

" v# Y$ _$ b+ _' S# I* e& ]9 z
0 g2 t5 N, U6 d5 U
  @7 M5 c7 |. e2 w5 ?9 ]8 f

" M  ~2 [. n4 N2 O2 O* t# @* k5 ]6 s5 E( l0 y% S  U5 \& L! g$ K: M
15、重启Nova API 服务
1
. o; ?- n6 k9 ^( s! [' k' X
systemctl restart openstack-nova-api.service

! t3 {: S, ~: b, L$ L
4 h0 g3 q+ g* Z( W
8 W/ s: L8 {) [1 x* n

! |! A4 e* B8 o# J0 P; e( a* a6 M  o' A1 O$ W7 I5 U2 j# w
16、启动Neutron服务并配置开机自启动
[
1
0 E# _) Y& Q" z4 j4 G3 `- n
2

3 }; @5 d% b& `- `$ J, i
3
+ k8 ^% R" H( s5 h- o! \
4
- d% t% T" G9 r7 y; K- h
5

8 d: D1 m8 z: z& K
6
4 s4 X# {: D: W: a
7
5 Y  ]2 ^1 K" A5 L2 ]5 t  G
systemctl enable neutron-server.service \

) ]0 F3 j) n: v% G; L
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

# ^. A7 E; y2 e' {
neutron-metadata-agent.service
4 I; d5 ^3 ~# S- f; {& k5 z
: W" X9 q. `/ b9 h6 `: r& @2 [6 F
systemctl start neutron-server.service \

  N& i' m( n9 ~. j) U" P6 X0 `, V
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

; E3 U, b' ^2 z! p" ]; s8 Q
neutron-metadata-agent.service

3 x' \0 M3 ~. Z; m9 X
9 `( s6 n5 [, c) B

9 a* b& Z# ]/ h3 Y! W  s: y( l, Y+ {; Q0 y: m3 b4 ]- x

4 O. g. X7 T! Z' h/ p
17、keystone上注册Neutron服务
  • 创建neutron服务实体
    % T. _6 _  o6 Y  g- T, \
1
' V' W0 J8 g! ?
2
+ E; G0 }. s3 p  C; e
3
+ z0 b+ q  Z0 @
source /root/admin-openstack.sh

& T) L3 P0 R' q
openstack service create --name neutron \
0 h7 D% _5 I( G( s, K( w
--description "OpenStack Networking" network

+ f6 W5 u+ Z. a  ]7 x$ [& \
5 ]) @7 [6 ^! w3 `3 |

& h  r9 H$ ?! D7 F
8 p9 y4 d: x. q2 b& M- U
% a9 ^' A. |1 a6 l% D5 x0 e" F
  • 创建neutron网络服务API端点(公有、私有、admin)& g* p' U) |7 k
1
+ }0 g( a" k! _& {6 d
2
( s8 Z1 V5 R1 m
openstack endpoint create --region RegionOne \
& f# M5 t0 ]7 [/ V3 B% E% W9 U# N
8 H% A8 C, f5 d4 {

1 x" I% A8 E# U, t% J" A: ]

9 Z+ x& F; @* w6 E. |9 _
, d/ o: r: C0 R$ e! d+ k! B/ e, |8 _* C  B
1

; C3 r# O# _# r' `
2
8 t: f- j6 d2 O
openstack endpoint create --region RegionOne \

8 V8 b: k' {; }0 H" t. A1 B4 U5 \  o+ v3 z$ T% U( j2 y3 d1 G
' S3 @" [+ k/ L% L
+ x! Z+ W; g" ~; ]

) P! O; m- G( O* ?- n8 t3 z7 z
, a2 z, U- p% F1 w) f9 N( h
1
+ H6 S0 l8 k0 a8 R; M
2

8 E( y6 _; w" C8 r2 u
openstack endpoint create --region RegionOne \

9 f, A& F% [4 p4 X
8 a) x. N0 P* U/ o
# s, `4 [/ I+ b+ q3 u# A5 w% _

- R: [* e' Z, _+ l
& I3 G8 {) t, B; ~
1 K: G* F5 P* p  Y  K! x
18、检查neutron是否安装成功
1

  U+ ~2 {4 y* g/ ]3 X* u
neutron agent-list

8 k) g  u/ |3 f0 p$ N8 e4 B+ N
7 K% V; z' g) W9 v( I/ S6 M
2 {, h/ m9 n, Q& W9 v% m/ h

* M3 f* i$ ]: r) q. j  W! ?  b" d* A
, I7 P  L3 f/ p5 O& g9 r3 n4 [' w9 O6 P, k/ @& _0 I6 h6 d* r" Q( k8 [

8 ?8 N3 H: U1 w) B% W: p$ v- O/ t( B7 z# S& L: k+ l, o
分类: openstack
0 S+ v# m3 K2 k, x2 ~2 e& {
& ?' X6 h# g* {
 楼主| 发表于 2021-10-8 16:12:52 | 显示全部楼层
1、软件包安装: C& T6 r4 I& R$ C' W( Y$ e8 {

& x- ~% l& ?5 A" T9 s4 ^yum install -y openstack-neutron openstack-neutron-ml2 \: z9 \( C$ ^* c; S% m
openstack-neutron-linuxbridge ebtables  Z/ P4 F+ S# J
2、数据库配置
6 I9 b1 {) `& f& I9 s6 `6 [( `& r+ b. A" ^
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf3 _4 x) @0 L8 y
[database]
4 F. i/ c( A  h& {connection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron* F9 Q. C8 ]1 M: Z6 h4 N
3、配置keystone* q" h1 X1 T: ~
; [: v  N7 r* \* G
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf/ `0 Z  Z' s( e, Y9 M7 O# k
[keystone_authtoken]+ ^" L1 E7 g  S1 I
auth_uri = http://192.168.137.11:5000! H0 z  P0 V& m0 Z% e
auth_url = http://192.168.137.11:35357- D" n; ~. l% A( [
memcached_servers = 192.168.137.11:11211
- i5 T- Q; o3 }6 T6 o* T/ E/ Aauth_type = password
% N5 I  ^) ?0 \" \# C8 Eproject_domain_name = default7 ?: S! P1 o! e# H) V; p% t4 P
user_domain_name = default6 ^( [1 u: j8 w' F# x+ O6 r+ g7 g
project_name = service
; A0 A4 U' v, l5 ]2 X/ L/ n! Musername = neutron; M' ~% H) t2 g" }; a
password = neutron! ?3 B8 Y- p5 Q, \
[DEFAULT]
* y  L' Q) ]- Q9 @auth_strategy = keystone
$ H% B4 L  P" H5 p* B+ H( z4、rabbitmq(消息队列)配置
0 s9 {3 H: m$ V7 Q
& s! U# P0 Z. w2 K; v; e/ D9 T/ i[root@linux-node1 ~]# vim /etc/neutron/neutron.conf; H# S6 f9 e- p2 W6 ~: ~# Z
rpc_backend = rabbit2 p! z; H, `) o; m9 i0 o
rabbit_host = 192.168.137.11
7 D4 R1 c7 _% v+ |9 |rabbit_port = 5672' l3 ~  G* I' q
rabbit_userid = openstack
1 x0 C' \+ t1 d$ `" }, W( E8 Prabbit_password = openstack. l- C9 b  O9 R( l  ^0 \+ [5 ^
5、neutron核心配置,启用ML2插件并禁用其他插件8 K" Z2 s4 `( P+ M! N1 G

$ }$ g6 Q" l% }+ B[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
: H, Z- W7 @3 M: r5 O. n5 d[DEFAULT]+ D6 ]0 Z1 Q5 K% W# C. h* W
core_plugin = m127 n/ f6 A+ U9 X9 U
service_plugins =
% g" b2 @9 a3 e; g5 E备注:service_plugins等号后面什么都不写就是禁用其他插件
4 @' ]: V0 o3 K0 p" U# Y5 X6、配置网络服务来通知计算节点的网络拓扑变化: G6 m: W& E0 S" }/ c. N5 {
3 e( A5 ~5 G# O5 Y1 {" o
[DEFAULT]' C: b! _  e) ~6 D6 L  k5 r  U6 o
notify_nova_on_port_status_changes = True
9 r0 i- v% }! a! C& N3 tnotify_nova_on_port_data_changes = True
5 H% W; S9 c) M4 ? 2 G( J" z2 z. z7 T# @% v
[nova]8 O7 m) l1 Q& F2 @$ K& U: Z% O
auth_url = http://192.168.137.11:353579 z' Y( o2 |! [4 u9 G, o9 t6 }
auth_type = password
& h! q2 F2 z. y* e% l. Vproject_domain_name = default
8 ~: A( q9 A4 C7 @user_domain_name = default
9 o  c' \" [5 ]3 i% rregion_name = RegionOne; S; q2 \! q1 ^1 |" \
project_name = service$ F6 I1 p. A2 I! ]- Z
username = nova" Z& e& b  Z+ @2 H& Z9 W# ?" n4 y
password = nova
/ m6 Q$ P" O! _; i( w1 [7、配置锁路径, h$ q0 [) U1 \5 R: n
' [8 q6 P5 F5 g! B8 `1 J
[oslo_concurrency]
) {. q8 e0 i1 _0 B) J$ ?  Flock_path = /var/lib/neutron/tmp; L7 B$ ~6 j7 q% }9 X7 m
8、配置Modular Layer 2 (ML2)
5 L) b5 U5 u/ u4 NML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施! }. c& S( y9 b7 _& g# k
编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
& J5 h3 a7 A& |3 P) I: t) q驱动的选择2 ^2 \: l7 Q6 u4 J
$ n1 [( {% T! w7 c: C8 z; E7 d
[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini1 D' P" z8 z) Y% P. F- |
[ml2]
8 T! f6 `% B, C  Gtype_drivers = flat,vlan,gre,vxlan,geneve
3 Z: o  R4 L. `6 I( @  u" J设置使用什么插件来创建网络0 e2 z. H/ Y- R+ |/ V( |# [* `4 T

; @8 ~2 U( M* [& _[ml2]: F6 r, C7 @/ v8 G2 U
mechanism_drivers = linuxbridge,openvswitch, A7 w1 d$ _- E" T9 C( `2 ?
禁用私有网络(租户的网络类型)
. d, j: z5 m. {& e' k: {3 c/ s# [+ D' r: n
[ml2]% ~% M7 J5 Z9 B+ {; Q/ I
tenant_network_types =
& Q4 u- M" A. E( j) r$ N) D7 w1 j) r启动端口安全扩展驱动+ i4 ?7 Y% m' Z; O$ I

6 w" H% M; v' a. P6 a. G5 E  `[ml2]
, D6 L7 W/ j$ {5 Mextension_drivers = port_security9 @. X' ~5 h6 N; g! R2 J' S1 t
在[ml2_type_flat]部分,配置公共的网络4 A+ C. U7 z% ^% k
. X3 x- E- z+ }/ X0 S  Z7 Y
[ml2_type_flat]" e  o% Z2 ~( Q$ R/ W
flat_networks = public
/ R% P) g' l6 W: j/ e$ _在 [securitygroup]部分,启用 ipset增加安全组规则的高效性7 \0 {% J8 y& I( M; ]) g

' N0 {" _; K5 A- W! L# L2 w# E& J[securitygroup]* l5 @* g  s& R  r- x& `
enable_ipset = true' R8 g, P+ ^6 l0 G$ S
9、配置Linuxbridge代理  \5 j1 x& t0 d$ {4 f  r
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
% P) F0 B# W% a2 N1 {2 Q, v编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:9 T% O( P; |' {% t: i' T: v
在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来  r# s% e1 ~9 Y; b) j1 p. f/ k" }+ ]
  n5 i. v& V- I7 {" _& o2 D! J
[linux_bridge]2 |  H& }1 v% n3 |3 p  a
physical_interface_mappings = public:eth0
% R) l  ]; y% P" J- M1 E* ]2 G在[vxlan]部分,禁止VXLAN覆盖网络
( S; M% z- Q3 Z1 B) X* b/ [8 y
6 `8 y- h/ A! O7 m9 s3 z[vxlan]3 z3 l' F- X$ B! `9 R* g
enable_vxlan = false
1 |; G! f, x1 ?0 V在[securitygroup]部分,启用安全组并配置防火墙驱动3 h0 r: V8 j5 b3 E# g8 {

+ k9 ^) Z  f9 d. [[securitygroup]9 I$ q! L7 Y: l
enable_security_group = True
8 g; @0 f8 v, ~  W/ k) }firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver3 z# p& V2 m% d$ E! e( G2 v
10、配置DHCP代理
: F% Y, K7 ^' V# b1 F编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:
9 U; [( H/ w% s, l: I" \( I在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
2 }. ^- p9 X6 W6 @" }4 x, }9 t! w4 J4 i, D4 L- y; _( e' I
[DEFAULT]8 R1 V  q* @7 \2 e& W3 k; J
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge1 w) X5 N) H0 Y2 U3 K* }
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务. J7 t5 X& s* \* P" T( m
enable_isolated_metadata = true  # 刷新路由使用3 q5 Q0 E. q; H
11、配置元数据代理
9 P! h. S3 S, q" A# W% q- T9 g: i<Metadata agent>负责提供配置信息,例如:访问实例的凭证  [! \: V, D: x/ G
编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:. \- a+ b' f! m' ~1 z) h
在[DEFAULT]部分,配置元数据主机以及共享密码9 J# e2 i9 ]/ @9 ^1 C1 f

( g" V9 I) q0 x% F9 E# Cnova_metadata_ip = 192.168.137.11        # 元数据主机
; h) i! m/ a1 W0 i- F  ~" c: i3 T; jmetadata_proxy_shared_secret = shhnwangjian  # 共享密钥3 U' m- }8 D; W/ g. U6 q
12、为nova-api配置网络服务
# k+ }4 Z# I0 B编辑/etc/nova/nova.conf文件并完成以下操作:' f- k" H& A4 \4 Y
在[neutron]部分,配置访问参数  _0 v$ q9 @6 U* h0 e* A0 \: `

$ ?( G3 Q* O2 H9 y) p, L6 W9 D4 Y[neutron]* ^7 J$ N: w9 I+ V" S' I
url = http://192.168.137.11:9696
- A: \( f6 A( B! V. D$ A% iauth_url = http://192.168.137.11:35357
7 m3 ]. I* H4 Z/ {: W; gauth_type = password
9 X+ @2 @# K4 R4 ^: Nproject_domain_name = default) Q0 v- U# C& t* M. Z  q
user_domain_name = default
# m- z: Q% {8 ]" f+ N. {+ B- Qregion_name = RegionOne
: j! k' A; h6 D) r* sproject_name = service# C5 G: m2 B/ I3 h+ L8 A8 J5 ~8 p6 T
username = neutron
/ ~  g5 ^0 f9 M5 S4 J% Zpassword = neutron. g6 r8 c  u8 D7 E6 _8 h
在[neutron]部分,启用元数据代理并设置密码- T2 J8 p/ g: p) _0 I$ H
: B% L5 q3 t$ N
[neutron]# z6 c" m. u* ^7 u3 w  |
service_metadata_proxy=true) {) p5 K! \) i1 x$ v0 }$ X7 R
metadata_proxy_shared_secret = shhnwangjian! o8 S* U2 J" Y  L4 I
13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini) I: U/ j7 m" T
9 T. ~8 m" J4 v
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini* W, T' ~( e3 M4 j6 U6 P2 a) s- U
14、同步数据库4 r7 C4 k: w$ \  E, |$ u5 k
8 x6 S( _4 R1 S/ A$ F$ J& v# ?% T
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
( @# ~6 y2 C3 f--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron" g, ?8 q. e6 {  c9 ?& \
15、重启Nova API 服务( [" Y! U* _# f- M/ e: @$ [! y

; ~: h; Z! U) X2 H  q3 U1 h# Hsystemctl restart openstack-nova-api.service; G* y3 e3 D' B# G7 D# q6 M
16、启动Neutron服务并配置开机自启动- o! A" C2 z# c. @4 s

1 P5 b* t' F, {2 S% Zsystemctl enable neutron-server.service \
0 z0 ]6 h7 r# z6 y! u$ Cneutron-linuxbridge-agent.service neutron-dhcp-agent.service \/ H9 o; f' _5 T9 E& g
neutron-metadata-agent.service
5 E0 u9 V( A. R& y" m! o/ S& a4 h " g0 R3 H* C" Q, W
systemctl start neutron-server.service \/ C6 I7 D& Q, ~
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \  g$ e5 |+ z# R. H  W! Q- F$ M# M
neutron-metadata-agent.service+ C6 P' |; @( g! A7 n- a
17、keystone上注册Neutron服务
& [& I4 I; H) ~+ y7 f/ t6 V% i创建neutron服务实体
; y( W* W( M6 r4 }, L# a
. w( T; Z$ ~, o! u- N( ysource /root/admin-openstack.sh
; x5 d3 [! m* {openstack service create --name neutron \
: k% u& r1 V& s8 Z2 D--description "OpenStack Networking" network. f$ o& `/ D2 Y8 J
" j, |8 T3 f) n8 d3 c
创建neutron网络服务API端点(公有、私有、admin)% M% ^/ K2 S; p

  B; q4 S: K0 f. D0 P- B% y5 Kopenstack endpoint create --region RegionOne \6 Z/ w! X6 ^8 C/ p1 U7 P+ _
network public http://192.168.13.11:9696
8 [3 A& J3 C! @5 w% V, \3 Z- F0 G7 A2 ]: f4 K/ F/ K# J8 V1 b0 ]" I
/ s3 P# s6 `$ q" ^! V: m) D; _9 F9 ?
openstack endpoint create --region RegionOne \7 g. Z5 ^) k3 Y$ B0 H/ ~- ?# ?
network internal http://192.168.13.11:9696# R$ i  ~" Z0 f, v8 P
* K  v2 X1 O7 X! T1 N9 {* o" ^# K

2 N" e! F1 o4 J; D1 W3 topenstack endpoint create --region RegionOne \4 k* u  G: S9 L
network admin http://192.168.13.11:9696) \1 N; N$ D  z1 [3 |, t* l
* Y, V3 |, Y( ?( u/ w- X; J
18、检查neutron是否安装成功
2 L- {) B! ~+ C" L9 ?# x
9 J! Z0 w- X# e$ q5 Oneutron agent-list
% z2 u+ y3 r3 N: i9 o) U
, _! x+ a% S* b0 H分类: openstack. n7 X+ @, Q& K  F$ @
 楼主| 发表于 2021-10-8 16:43:27 | 显示全部楼层
配置网络服务来通知计算节点的网络拓扑变化' t" t# h7 x4 {, k

  x$ N/ f% S3 |6 X2 s, i/ J/ n[DEFAULT]: o" B* \8 G! X+ i' U8 c" I
notify_nova_on_port_status_changes = True
$ @! Y0 z( A  M: w+ Anotify_nova_on_port_data_changes = True  m$ }+ D% v4 w
' J2 u5 `9 `5 V
[nova]7 N' n) `/ |7 @1 B
auth_url = http://192.168.137.11:35357
7 N0 b- j' {$ y# U8 G7 Lauth_type = password7 P1 J6 ~: ]  e$ f
project_domain_name = default
8 c  I! G( S/ S2 [user_domain_name = default% ^2 X! E: c+ _5 z9 x9 t0 j1 s
region_name = RegionOne
0 K/ o3 }% {% {3 K% l0 F% `6 Sproject_name = service
9 T9 k) ^. \, r* B9 ?0 Z* K0 Gusername = nova: w5 \& [5 S8 X0 S
password = nova
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

如有购买积分卡请联系497906712

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

GMT+8, 2021-12-2 09:02 , Processed in 0.058193 second(s), 22 queries .

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

© 2012-2022 Comsenz Inc.

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