易陆发现互联网技术论坛

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

Neutron控制节点部署

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

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

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

x
2 w5 c3 J1 `3 q* Q& D- m. 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 H9 K' x& i' `) _' C/ ?4 v+ T
                               
登录/注册后可看大图

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

, ?0 N. H& ^" L2 I
                               
登录/注册后可看大图

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

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

8 ^5 W. r9 ^9 W3 i
                               
登录/注册后可看大图

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


# f' r& f, t0 a! k                               
登录/注册后可看大图

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

$ A2 _* K  R0 y0 }& r' ?6 F
, t3 c0 m/ u5 K1 D5 w7 R: \

0 L. ~+ q9 L# @8 @. @7 k
- G+ \/ v* F( c5 Y( w
1、软件包安装
1

1 o: p* a2 E, E1 b+ E) g
2
, R/ U, D9 ?6 D6 y; q  r# |
yum install -y openstack-neutron openstack-neutron-ml2 \

8 ?7 D. s  _" l5 x4 a. @, c: O7 B
openstack-neutron-linuxbridge ebtables
& |; L7 \9 ]% `! q4 p
& k7 K4 Y4 s& v6 z; n

3 _0 ~2 f4 \& `& a9 D  n' f1 t' M; b/ C. i

# S/ ^: W+ I3 E
2、数据库配置
1
& y9 e+ Z1 T3 f! V7 t7 M
2

- ]" B6 U8 p0 F$ z$ Z$ r+ B
3

  P. i; W$ l, @* q2 i0 h
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf

7 L4 N( q1 _9 J0 R9 K: ]- S  Q2 c
[database]
- K( w5 y4 Z9 m& k- P
connection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron
: J3 g/ M# ?0 B

) r2 m0 J2 h, x; V2 {4 B' x' p6 V

9 ]. O) ^0 S' U& O5 {' f& ~; U
1 n3 `7 I- D4 y0 H) D
6 t3 Q) r& j3 m% L, d
3、配置keystone
1

# ^2 s# l, H  v7 L/ |
2

' b6 Q( G: |3 t- o' q
3

5 p, k3 k+ T  D$ X1 B
4
2 M; n$ q9 A# P: W6 s! T+ R
5
3 r5 X7 g( m8 u
6
% C! W: s, Y! H+ ?" T) e6 q
7

/ @9 f! H7 O- w) Q: ]3 I
8
+ |0 m/ j+ V4 Z* m
9
5 R) o+ ^  h, h4 E. ]: Q8 T
10
( v$ |! X, ?! [! r# C5 g
11

5 ?7 j; \) l: l: V& A" S5 U
12
' E9 l! m& c4 |
13
$ {* O9 j; n6 q$ D
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
- l9 f  V. F/ B
[keystone_authtoken]

5 y( W8 |9 q6 j" R2 A# [( M& X1 c
. I/ ~5 Z* K/ z' K  O. x
) |* v3 f" r7 S" a  o
memcached_servers = 192.168.137.11:11211

& b! H7 E# K" u9 C, P. x! w$ q9 `
auth_type = password

" o1 e% r* v  ~- N8 k: u" t' F$ X
project_domain_name = default

$ N+ w. o1 j4 E7 e' l; G4 H
user_domain_name = default

" L( L" i! C5 ~6 a/ ^
project_name = service
9 I  O8 M# Y/ J6 B
username = neutron
( V" n* P. `. P( x& h$ e% X9 y
password = neutron
3 c7 \: u+ R, \/ w
[DEFAULT]
; H# R$ O9 X, q( \
auth_strategy = keystone

/ H3 h7 x- L$ B* @  T

/ Z% d, D1 ^$ N6 ~8 y
: z2 s, Z% R6 T* y- |# ~( Q4 G

+ t& V9 s# f+ m' D6 ~# o% a- m6 P$ |0 l0 o
4、rabbitmq(消息队列)配置
1
' L. g# Z" ?5 X# R3 L% z/ f
2

5 }: l& f- Y5 P3 a/ t4 E( n
3
) y( b" M/ T0 a+ G
4
5 e+ M- K: V5 E
5

# k2 G! K( G" q6 W' o
6
% h6 I, `8 w  p8 D" _4 D7 e
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf

+ \+ H9 Y+ O; _8 {9 `" e
rpc_backend = rabbit

9 z3 ~6 Q6 E% Q1 ~# `
rabbit_host = 192.168.137.11

  g2 c1 w* d% M; f
rabbit_port = 5672
- _: f* g5 J' [0 h* F
rabbit_userid = openstack

4 R5 a# ?& l5 c2 s* u9 x- T
rabbit_password = openstack

  n  c+ N+ F3 ^+ ?. H8 ~

  {! j9 `7 Q% R" A  q* X7 x  X

5 y3 V. T( l* ]  J1 f4 n- K6 k6 {
5 ^4 B, g, e! M* K9 C* Z
# W( V" \) E% N  ^* s
5、neutron核心配置,启用ML2插件并禁用其他插件
1
9 t; y+ c- S# _! v
2
  ~  X( D8 O# [0 x. n$ j# Y% K
3

$ O* h/ m6 D4 G5 S7 A! o. E# I: i% [
4
& ~: h; J% i1 K8 ]) g
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf
0 N2 P; L* V% X- n, z! g& o
[DEFAULT]

9 W4 @# M7 _$ C
core_plugin = m12

( H, Q" H, A7 Z- f2 |
service_plugins =

, d( v  E$ v+ H% D

' ^0 z% u" x" O5 C3 o

4 h/ b. Z+ N, M* l- N3 Q
. g! c4 I- L+ w( E- B5 s% p' G( t0 z. Y" U6 ~& a  O
备注:service_plugins等号后面什么都不写就是禁用其他插件
6、配置网络服务来通知计算节点的网络拓扑变化
1

& X! h* g; Q2 o: V2 \. H+ W# |
2

6 _. i8 r$ \' [) m( a
3
2 S: w5 I( T  ?7 I
4
) P2 d) ?% u+ r; }. x+ V3 @
5

2 j: n! A7 S! g0 E$ r: o5 P5 v( n
6

1 N2 K3 N4 n# m0 e* W/ M$ L
7

; a! Y& k9 K0 {* I. k! B3 m2 j
8

' z  A' w, u& O/ l
9
9 z4 e6 R1 d- y7 b9 K. p/ j8 a
10
8 T+ ]; d8 n" M0 Y( v% x7 D$ B6 {
11
! F6 Z1 D. k% g  S& {5 E$ |& }
12

4 K$ V7 \. e: \, O& I6 s& H# Z1 L
13
+ `, o8 J; s3 Y9 ^' b, Y
[DEFAULT]

, F/ y! S% h3 ~5 U8 U
notify_nova_on_port_status_changes = True

- x  f7 z) t2 U/ O7 T- Z6 [
notify_nova_on_port_data_changes = True

  P5 m) \% S1 i! \7 c& R7 ~7 f2 _  Q' H) `; R1 ~# o
[nova]
% X1 j8 K5 p% g+ J% l

' f8 _/ w0 A; {$ J- ^1 W* Y
auth_type = password

1 P. x) p- E* c4 r- L5 b
project_domain_name = default

0 q/ ]2 N' g8 P& _, u
user_domain_name = default

  E$ _+ w1 n2 i8 _
region_name = RegionOne
, d; a1 i% e9 h% n
project_name = service
: g. _. C1 E5 n5 M2 C9 d& _6 A
username = nova
# K9 H, m' n$ U. p  A2 {
password = nova
' A3 V+ N! R- d- e7 ^/ T1 h% g) I- c

5 f' R' A4 Q  l$ ^8 `( }$ o

8 O7 G& w$ n; X, T, c+ G# o, I. `. Q' s; t0 X8 J
  t! t: S/ f& Y
7、配置锁路径
1
# b$ N; m4 h6 \+ {7 c2 x$ ~) M% W
2

6 c/ w- d, N4 K
[oslo_concurrency]
% F% y$ w! X8 `) I  c6 s9 j1 N
lock_path = /var/lib/neutron/tmp

+ S: A" `4 X; ^
" T; v! |. `2 q  K8 C5 j' E# C

- A7 J7 X( g6 x6 k8 u
- O! l8 }3 x$ X+ B1 O4 R+ @2 P% O
8、配置Modular Layer 2 (ML2)
ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施
编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
  • 驱动的选择0 R. W2 w6 l$ z; ]6 q: h
1

- F. c* m6 G- B' @
2
* z: M$ m5 X+ L, ^
3

0 \. j- r' r  B  U3 O+ i
[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini

/ n% m# i6 F+ ?& F, H
[ml2]
5 _4 L: K' q/ `/ S) S
type_drivers = flat,vlan,gre,vxlan,geneve
' g$ `% z( H4 m- u
  Z! T% p  P7 y6 ?, b. l

+ w5 l, \0 d9 I2 N0 b! W! F0 X; c1 \) f$ `: {$ K

9 {% Y" X$ z+ ]: c, d% s' q' N/ z
  • 设置使用什么插件来创建网络: T0 j8 w& o* p! e0 Z: k# j/ U* @
1
: A# G- A! F$ [8 O1 h, G1 x0 c# @: A
2

( x1 F1 Z8 P( D$ p7 L4 M( _
[ml2]

% W7 z2 M, a. d
mechanism_drivers = linuxbridge,openvswitch
) u; m& z1 a, P, e5 y" i

' t6 E; u& K( z

! M! K) _  L6 ]& y5 S5 y) ~
5 R/ q9 H* J6 }6 l" c# Q& u4 a! f  q
4 H7 c1 _& v  f9 H
  • 禁用私有网络(租户的网络类型)
    ) b* Y+ Q2 \& [+ P# Y" S3 Y8 x: f
1
; |. r' K/ D$ o( ?. r
2
7 B2 M: P& [# I2 Y
[ml2]
/ G* P& A' K- u0 w
tenant_network_types =

2 C; f0 c' ]1 u; Y  Z5 c

( o& C# M5 {8 C/ D  }9 j

: [  Q9 g. }0 U1 e# E3 J+ s9 ^& P7 @0 l- t. G1 |1 y; S8 a

+ s' p  p- c! O
  • 启动端口安全扩展驱动& ?+ x% I+ C# |& a/ j
1
9 p/ P7 `6 s% v- t
2

! l/ o' L8 N5 q9 S4 z. M, g$ F
[ml2]

5 J% U4 I0 q8 J8 K
extension_drivers = port_security

- {" w9 ^* W$ _* T; u

" [! e# N1 w) U% r& J

5 H$ M% R" m- r  [! r# W  A& {7 Z% m. A: Z8 S( ^. h

, F$ H, d) ~4 o/ `1 }8 l4 n& J, U
  • 在[ml2_type_flat]部分,配置公共的网络
    ' c- k8 [4 H1 d- ~2 T) U. l
1
) e, y; C+ W6 }
2

) B% e. I. O( `& @
[ml2_type_flat]

. {2 q5 v& Y+ _) ]. q
flat_networks = public

. B; g, `' b& d8 U: i7 G- v

3 \2 C' B' E3 k* q* s" C0 s+ k
5 x0 s; N/ O1 O' ^9 b0 W

' H! N+ t% h: E( {: C  Y% N4 Y3 E- }! N$ U; w
  • 在 [securitygroup]部分,启用 ipset增加安全组规则的高效性
    + g# c3 W+ q/ @. l2 X! i: }6 K  ]# [  y
1
  z' ?9 U( ^" r+ G
2
; h- g4 U, p9 f5 r+ g9 t3 j
[securitygroup]

0 f2 ?) Z+ `$ z- h; c. s& r- I" l& Q
enable_ipset = true

& j) }, ^% n6 a4 k% J7 I& n
7 i, N# V# ~8 `# p+ T- F* _5 x

! g; K, z- s1 P/ }7 C$ Z' _/ r$ s1 t, ^) e
" w5 O/ }+ {; R, L0 P5 a1 F
9、配置Linuxbridge代理
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:
  • 在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来
    7 Y9 ?) w, ?+ D) C* d. p5 N
1

  g+ v- U+ @( V
2

! E* \3 T/ w! ~' I8 R# y
[linux_bridge]
6 x1 p0 W9 y9 R9 s! ?5 q
physical_interface_mappings = public:eth0
" o' [. ^4 V+ N8 V6 g9 J

( s  G3 l* X2 s6 e. a! N& l8 v

, h  r- d# ?* D. x* ]' Q
. h! N; B( Q. p2 J0 S& N$ Q& Q- }  V
  • 在[vxlan]部分,禁止VXLAN覆盖网络3 d0 y6 Q$ U  f" D) W. U& C! |2 w
1

0 i1 m: }) O7 q8 o0 q2 E* G, i
2

1 R: r2 Y; w! I& F6 Q/ h
[vxlan]

8 |* _, Z5 w. [8 l
enable_vxlan = false
9 Q' f2 }9 b2 [

& F6 k: v+ o4 n  O

) q$ a+ _4 b' L/ t  n3 ]4 ?8 y9 B  K: D. R" c4 g
, T  O# u/ }2 G9 Y
  • 在[securitygroup]部分,启用安全组并配置防火墙驱动5 Q. N/ T4 L" `  w& E/ l
1
. G- V" _3 ?' D. U* l- A
2

2 {3 {) k! f' ]2 q& e' B" M
3

6 J2 `7 A- o1 V( K- C
[securitygroup]
, O3 l$ c$ C8 E( C: i
enable_security_group = True
1 k! b- _: H. o% U+ p; h- N
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
' _8 A5 a& Z2 U  |0 a- D1 C7 a

* S1 F/ m' g5 [  K4 a% n. u( n
3 q+ g  ]7 ~# W1 w+ w! Q4 l
. D. ^$ f9 d+ d2 j# a+ U: }

5 c1 |( c- l9 Q% \. S* S! A; c
10、配置DHCP代理
编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:
  • 在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
    8 @5 r8 \( A1 d$ |, _0 X
1
; v! G3 v0 N# |  _+ v0 O) y
2
' N% i8 N2 S6 l+ r
3

+ a* W6 ~+ x8 K* I6 M
4
8 J( w' a. K9 [
[DEFAULT]
4 O4 n; ]/ J! j
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge
" b% C( J/ J0 \3 p
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务
4 p+ z9 ]. V- I" |, m6 |
enable_isolated_metadata = true  # 刷新路由使用

! N, h: v$ ^* q5 b

* ]/ @/ b1 @# G5 `9 \0 z" K4 \4 r3 `

9 f: ?7 j& s5 }  q. U' I! R, l. j0 [7 H4 G9 t

) H  r* O6 I6 n/ D1 w4 \5 p, g
11、配置元数据代理
<Metadata agent>负责提供配置信息,例如:访问实例的凭证
编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:
  • 在[DEFAULT]部分,配置元数据主机以及共享密码
    9 Q6 R' `" e5 X5 D$ z8 t0 W* L
1

! x- W1 S. v6 t4 v2 h
2

2 N) Z* k$ h' s" Z' a9 K. r$ E" |
nova_metadata_ip = 192.168.137.11        # 元数据主机

3 K+ T* Q: Y2 S! h5 h
metadata_proxy_shared_secret = shhnwangjian  # 共享密钥
1 G" |2 ]/ L3 L# O" W
) ~; m2 r# k! `2 W0 @+ n6 g

8 {4 j1 b# z4 g6 b+ d; u" Z7 E, C% d/ l( E8 b1 I

# P9 o, N' D5 @: X$ }1 E3 W, {* C
12、为nova-api配置网络服务
编辑/etc/nova/nova.conf文件并完成以下操作:
  • 在[neutron]部分,配置访问参数. Y5 @0 P- D8 S! M8 s' C
1

9 r8 J7 J0 z2 {" K
2
$ F$ r3 e; D0 x. O
3

* Y7 o5 y) e+ U! t- u% t0 @3 S( ^
4

, B9 X9 u- o: u9 \  i3 {- `% G3 b
5

& o% T0 w, S: ?  x0 C
6
- H3 _; j& F6 u2 C3 T9 V/ m* p
7

% i2 B/ }4 ^3 C6 _
8
8 N0 b9 `/ f# J: L3 I+ Z) @
9
) {! [2 V: t1 @0 f
10

7 \/ m9 [- r) F/ X; U
[neutron]

0 p( K% U' g5 k& n# G8 d" H1 \/ L$ _$ Q

9 H$ N- U8 U% y8 H& @% w
auth_type = password
# s5 H4 N6 D1 _4 b& G
project_domain_name = default
6 A+ i* o0 \/ l: {* u* [
user_domain_name = default
$ a  j5 W5 a2 D5 x9 H$ F
region_name = RegionOne
( ]1 Z: `/ W% L+ G& {; v8 v3 v! G
project_name = service
# S- V5 ]; h+ _$ s0 |! L
username = neutron

- x5 x3 L! u& s/ }
password = neutron
0 `) x5 F# u" U' N6 K6 l0 [
; H9 S- e; z# U7 q+ C) l
  e# E7 t  C6 P& G$ O2 s5 |$ E
8 H( `. M: z5 C* j3 l

0 i8 Z: Y, V( c" y7 }& |
  • 在[neutron]部分,启用元数据代理并设置密码
    ; F" @& W' u& r- _7 {
1

& _" N" `. G0 `8 ?4 a7 X
2
: k5 N. k# R, E' C% E0 E2 o: H7 E
3

/ m0 k) Y5 W1 x! `4 v
[neutron]
& S! f+ J: t+ m3 {' s, y, d4 N
service_metadata_proxy=true
( c7 t2 w( |0 R' ?8 l$ J
metadata_proxy_shared_secret = shhnwangjian
2 F0 L8 b: d+ M" P" H

0 Y8 C# p1 S6 N8 F6 g; S, c
; i4 T8 Z, J2 p  y+ M) s4 L8 W$ _' l

" C* R/ k% m! b! P6 x% L2 g6 H! H+ }0 z& @- A3 J; L  d
13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
1
3 d$ t2 o( u# d4 {
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
# o  D8 x& A; P( [/ Y, S

$ U6 G/ j6 N6 x0 b! q

3 A7 Q5 w6 F+ N: b1 ?. |
7 ]0 E5 t5 J5 y& |
2 h/ a) j/ ]' d8 Y. g) x( M" _3 B
14、同步数据库
1
4 t- B% d) Q6 e) w! u
2

/ Y2 `0 f6 K( |6 ^& X) ^/ B
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
. g6 k3 J) }3 d2 @
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

0 }8 t7 I! A: a- `, |

" @8 h& U9 U: m( B
; ^1 {. P- H0 ]5 i! ?! i9 G; a

0 G- J  Y2 n4 S  a
/ ?0 u( \, m/ @4 x* l0 i
15、重启Nova API 服务
1
4 J. p0 D9 V: `2 _. ]+ t
systemctl restart openstack-nova-api.service

; @6 F2 }- H4 o& }6 g" h; a
/ F. u0 w' ~; K# f+ ]0 d
3 z8 S( ^) Y4 w+ w$ H2 k

# @; f' o& c! t/ W
3 h6 s  N4 J# }3 t" k$ \1 t
16、启动Neutron服务并配置开机自启动
[
1

) G6 j( ]  W+ P  @- d* N8 H
2

% M, [0 ~. n6 j. B# n8 q. e
3

- s# Q7 |* R2 {3 T3 s
4

. B* I  v$ n  S2 O& [) B; h' q
5

3 F2 Z" }, P- C& S/ a7 G2 h. `, o6 h$ {
6
3 \& _; I( Q8 `' a
7
% E* O2 A8 k3 Z1 y3 S% e& D" [( A
systemctl enable neutron-server.service \
7 A. z$ }8 D2 b0 T: @2 T
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

/ i/ t8 u3 M% P( w9 N+ V
neutron-metadata-agent.service
* E1 i+ M! p+ o) `8 j
/ o( F- m) H2 _, B5 m- p% a6 |
systemctl start neutron-server.service \

% ^( n$ J+ N) b
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
; m$ J- M3 c7 x: G7 k
neutron-metadata-agent.service
$ P" }) C# l4 T5 d
: c; z4 b. [7 F; z! h; X

  W5 d/ ]: v+ L& O# p& d* ?  o% ^8 x/ n/ x

- _2 u) v- {& t* \6 x: q
17、keystone上注册Neutron服务
  • 创建neutron服务实体' m! N$ B( x2 V! M. D! ~" j9 @$ T% h
1

2 C- _# c8 W8 D& _2 z& j
2

9 w( U# T2 B  y& J* h/ M" G5 Y, B
3

" g% ], X: d! F  q
source /root/admin-openstack.sh

9 g% V% I: H) |2 F
openstack service create --name neutron \

, n, Z5 R9 ]- {" @, X0 ^; ?
--description "OpenStack Networking" network

9 ]1 A) o1 y2 |2 w
( B: A5 [$ |* n( i7 C, m
5 U" O4 v: ?) s; r- S& B. D
% [5 W2 V+ B5 h# ?) a- a9 E/ h3 [
& ]: S, t# H1 M0 v3 L1 M- B7 f
  • 创建neutron网络服务API端点(公有、私有、admin)
    * ~9 G: e# [! T( o* j/ L; l
1

: [8 G; d/ h4 `: `; j
2
0 u; X2 O2 H- y& Q) p9 u3 `  U
openstack endpoint create --region RegionOne \

! E- a" `9 r8 E7 F7 E9 W' r% E8 b- _- O& g/ i! i" [3 e% d+ t) j+ A

" t8 c4 Z9 z* ^( Y& E

3 u3 U& ^" `" @6 |. g+ h1 o- J# s$ A1 G& W, M

) H5 |1 O0 a2 P' j9 X+ r
1
; J+ A" q% k4 n, o  i4 ^
2

) Z8 ]$ F2 Q/ Q& U
openstack endpoint create --region RegionOne \

4 e0 y8 w7 W8 n' m, S# e7 ~" ~8 f3 A5 f- J* ^/ n+ V  Q3 a; M- y0 P; A
% E/ _. ]) q  ~& u* T6 L
# p& q) k4 Z9 M4 c5 c0 F

/ k3 _1 p6 p- ]& N6 {# g# ]1 q2 N8 |4 ^
1
8 l1 E* T" G7 Z0 V1 d
2
! e6 C8 F# b2 l! k+ H
openstack endpoint create --region RegionOne \
0 \$ ]' k# x) x" Y1 ]0 T

: w+ N! m6 Y: R9 s' r9 C/ a
4 j  r# x+ {( H/ T  X6 P

5 t% E7 U$ ^, V
! }! i! g- K& [6 i1 m5 _- m' P& p# F* R. m
18、检查neutron是否安装成功
1
$ u/ E' A# Z$ Z1 N; L; B
neutron agent-list

+ G8 `2 `  d1 [: q
- j7 e5 r! f- G7 X

  l5 J* }- X( p& [( ^) M# g, R+ `) A

9 @! v1 n" s. f, N$ ]3 {/ n! F6 B) [* _. W/ ~# ]8 z  E4 P8 a

. g8 }  N4 k- j2 Z" |3 `7 G3 d( f0 X* O; H% O7 L# S5 ^
分类: openstack
; D' G/ V" x' [2 f- r. j
  a/ X+ F8 s9 R0 t/ b8 f
 楼主| 发表于 2021-10-8 16:12:52 | 显示全部楼层
1、软件包安装
! B: s$ o! V8 l4 D( |/ v0 s, x. d# f8 f8 a
yum install -y openstack-neutron openstack-neutron-ml2 \
+ Q* R7 n( b7 {openstack-neutron-linuxbridge ebtables; |8 i- ^4 d$ X4 I/ M
2、数据库配置9 M) a6 H- H7 D- w8 @( L3 m

+ `8 C0 I) Y8 T* V[root@linux-node1 ~]# vim /etc/neutron/neutron.conf. N4 Q& G- F5 S) p! W8 w
[database]8 C, E, @8 m/ u' G) E. \" _3 M1 i
connection = mysql+pymysql://neutron:neutron@192.168.137.11/neutron
2 `: g( I7 |7 M" X! k3、配置keystone
- {& W1 \( H" v4 _1 ]) k# t: J/ }% s+ {) o0 G# M
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf0 y) L; E2 t0 t6 }3 x% z
[keystone_authtoken]7 _+ Y' D* I* v8 I# j' v8 N  ]% J
auth_uri = http://192.168.137.11:5000% }' L; e' p6 P: R3 p' M" I
auth_url = http://192.168.137.11:353571 s% b. p! |; B8 N
memcached_servers = 192.168.137.11:11211) K5 f7 G1 H2 d& f, k
auth_type = password& C. y2 h5 D7 e1 W
project_domain_name = default! f- f9 T, D4 j; @
user_domain_name = default
1 ?& T. u& O$ {5 u* z5 V+ m9 Q; N8 tproject_name = service
4 z9 U! `9 m) |& m5 I" Vusername = neutron
  H4 [% k+ c$ cpassword = neutron2 ]0 `7 x1 z' S0 S5 n; R
[DEFAULT]1 w) f5 X) U3 D: Q3 o2 ?9 F
auth_strategy = keystone
9 c) t, J, W% a% `4、rabbitmq(消息队列)配置& m1 i' ^- `6 P1 g/ y8 M; s7 W
  |$ s4 d. c# o4 B% J8 M7 s
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf0 H5 W6 G) Q6 x8 X- i. V: E
rpc_backend = rabbit- C  t, J, C- s- ~  @
rabbit_host = 192.168.137.11
6 i' Y) i% H! M( _0 c/ ]! ?rabbit_port = 5672
) R3 w5 w0 ?$ U' mrabbit_userid = openstack7 T; Y  n& [( I* L
rabbit_password = openstack
' d8 P: N5 t/ A2 ^5、neutron核心配置,启用ML2插件并禁用其他插件) D6 q$ O$ v5 h- B# m
2 K" r+ ?6 J4 S8 E
[root@linux-node1 ~]# vim /etc/neutron/neutron.conf1 k: j0 m* H+ Q8 Z4 M% _
[DEFAULT]
8 v: ~  S; u* u2 e2 R3 h* S9 Kcore_plugin = m12
7 |2 G0 F) T, o% tservice_plugins =
( B7 [+ V5 }* y' J5 H& {备注:service_plugins等号后面什么都不写就是禁用其他插件
6 a' M0 V7 n$ T& ~0 A( O6、配置网络服务来通知计算节点的网络拓扑变化, o  T4 \+ M( F4 L3 b" q

9 g* K- i! [3 ]1 S" H& A7 {7 U0 a[DEFAULT]5 m+ c" |( L7 J6 S9 S) Y
notify_nova_on_port_status_changes = True5 f+ R2 _/ s# d
notify_nova_on_port_data_changes = True
3 |0 s( Z+ v1 Q) d: h6 {
- J! S% n2 e- O[nova]8 n' f2 R* m2 p7 s" P5 @
auth_url = http://192.168.137.11:353572 U& J3 A! }& Z9 K3 v: S3 u
auth_type = password
2 W( @3 R3 S0 N+ U/ f/ Dproject_domain_name = default
5 C0 r" p' O, y$ m. f  w6 Zuser_domain_name = default1 }, J/ p2 n6 X7 r
region_name = RegionOne
( q* H! d. |7 eproject_name = service2 ^) G- P- _# X
username = nova
9 K2 q* D9 s7 a, T" ~$ apassword = nova
4 I% C( Z9 }" T+ X# v7、配置锁路径
- r; Y9 [* @( Q
% T+ j1 E5 [; j) g3 a[oslo_concurrency]! \# v# d! L) }8 b. t
lock_path = /var/lib/neutron/tmp
, J8 m% `' {8 ~& l8、配置Modular Layer 2 (ML2)! h3 K, g5 r% @# c8 J9 X5 z
ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施* K9 U. J' S! D" Q# E: M" u
编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini1 X+ b+ U0 Z& \1 h0 c4 e6 @
驱动的选择
4 n7 k( d4 P1 c; C4 l, A3 a
3 T8 N' Y8 R' p[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
3 B! w/ ]; @' i; l[ml2]- U' J5 b' B4 `. {7 n
type_drivers = flat,vlan,gre,vxlan,geneve
0 p# m8 H/ ^* k7 ]2 Z设置使用什么插件来创建网络
" g; t. `0 \& j) {1 f7 o
1 H1 s/ W* }8 K' u( N9 F' W[ml2]
! X7 u% F7 W- {5 y' q/ amechanism_drivers = linuxbridge,openvswitch
8 E" v* b& s" D" A. y* D) p禁用私有网络(租户的网络类型)6 U( V) k! _  F" ^" R) o
, T. l+ c' F! r& x. ]' y
[ml2]8 b0 U& T, Q7 b$ s
tenant_network_types =
9 W8 `( B; E6 Q3 I% |- d+ j启动端口安全扩展驱动6 S, S) M& s/ o; L* d
9 {8 R. W7 I0 _  |) {2 N: q
[ml2]) o, v3 z( N8 h3 L
extension_drivers = port_security% a! E! t1 o; P3 y1 q
在[ml2_type_flat]部分,配置公共的网络6 A) V2 f1 `) ~( [# a
) {% V3 Y7 y! Z  I- p
[ml2_type_flat]
5 m3 P1 s7 V9 k% ?+ d% Nflat_networks = public1 w% z: X% d8 l2 Q! a1 z1 c
在 [securitygroup]部分,启用 ipset增加安全组规则的高效性) m4 d1 M) W* c* Y! E
$ P; {$ I8 `3 z' W( b, x9 S0 a6 w1 ?
[securitygroup]+ n5 Z4 Q2 Y8 u, Y& {( F4 L
enable_ipset = true
* H8 h7 [5 X  J5 `9、配置Linuxbridge代理  u9 l' [% p0 p5 ]" ]
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
4 i' W1 C" Z5 B2 u& A( }编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:& p8 f$ ^; ]  {' }4 g. p; ?
在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来! }4 B  H. N- e+ @: O1 P4 R- ?

: d$ k# c7 Z% Y4 j' V" O[linux_bridge]
; g6 L4 `  C3 F* qphysical_interface_mappings = public:eth01 J  A( Q6 s& a. l4 H
在[vxlan]部分,禁止VXLAN覆盖网络
1 u% r9 i$ e; l2 J/ v! V! M6 |* D! r+ a$ B6 ?5 P
[vxlan]
1 l! X, G3 N( z3 Senable_vxlan = false
2 S9 V8 a3 n; q( e在[securitygroup]部分,启用安全组并配置防火墙驱动
* A3 x: ^( l6 i6 G/ L
( X, h) @6 B. R6 f3 {[securitygroup]7 I1 F/ ]) X) @* |9 c$ L) d/ _
enable_security_group = True! H! T+ \2 ~, t( b$ J
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
- v" j2 R- J9 c10、配置DHCP代理, i7 Y7 Z! F5 q
编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:
8 M2 J( ^; b: G- q6 @6 L0 Z1 l在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据$ x+ D5 }, R' M% f) H
4 m( J7 Z( Z1 I# ~# ]
[DEFAULT]
# `8 p8 d- P. N  _7 ginterface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  # 虚拟接口驱动,使用Linuxbridge  [6 [$ Y( g" h* U
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务
" J- o- q& {& D& Q& @- e5 L' ]enable_isolated_metadata = true  # 刷新路由使用
! J7 t0 `. d/ J11、配置元数据代理
, o5 ^' d; `$ j/ m, s<Metadata agent>负责提供配置信息,例如:访问实例的凭证
& o; J$ ~9 s; F3 r! W+ X编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:
2 K$ O' W8 u0 g6 ^  k* a$ x在[DEFAULT]部分,配置元数据主机以及共享密码
5 k3 G2 [+ M1 Z  s0 `9 ?- X8 n5 @9 Z( q) q: F; m
nova_metadata_ip = 192.168.137.11        # 元数据主机
, h0 h$ ]( Y. y( F" q/ S- A* _, J2 qmetadata_proxy_shared_secret = shhnwangjian  # 共享密钥) c& Y' e8 H9 b
12、为nova-api配置网络服务
  A# e" A+ v$ s2 e/ G编辑/etc/nova/nova.conf文件并完成以下操作:
/ Z, ]7 H: {1 t( r! t$ U2 C在[neutron]部分,配置访问参数
( d1 n9 l0 }3 l- B( v" t1 E# s0 U2 U$ O) t! `3 \
[neutron]
9 ]4 }% G# E0 Z; T5 c+ D! Aurl = http://192.168.137.11:9696' Q9 w. j6 D5 R1 E# R4 z
auth_url = http://192.168.137.11:353571 g% Q3 K6 l: T# N- i
auth_type = password
  ], B( j& h/ |- K* Yproject_domain_name = default
7 R' T* w9 i  k" c: ^9 R0 Kuser_domain_name = default  f0 R+ |8 q" ^, c5 T8 G
region_name = RegionOne" N) b$ v& W' w! p+ Y, R% Z
project_name = service
2 Q$ l0 `9 x$ y9 L: {/ `( }username = neutron
. a% f4 e7 I; ?! F. o' v8 gpassword = neutron8 y" y9 t% L; A& {
在[neutron]部分,启用元数据代理并设置密码8 H& A% v+ j& L& G

9 R! b* E3 u* C' N[neutron]
0 z+ i" g2 m  nservice_metadata_proxy=true6 V& }* {' w$ w1 L# \
metadata_proxy_shared_secret = shhnwangjian
5 y9 k+ _8 G$ D( e+ W13、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini" ]$ B9 M* b8 B1 S# W
. C$ x6 W, ^6 B) i4 \# v
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
, S1 f- G$ v6 I3 Z$ [+ J$ T14、同步数据库& K' D( i+ X" Y2 g& V

5 _% X0 p( |. G" l. ]3 W6 Zsu -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \8 e$ B9 h, W$ Z2 j) |
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
( u5 s! q+ T; |1 V( \6 m15、重启Nova API 服务7 J7 e0 b3 ]1 I" [  f2 _
$ W: }) S: I0 l0 C
systemctl restart openstack-nova-api.service& z: |2 \5 l/ ]* k4 I- o
16、启动Neutron服务并配置开机自启动3 Z8 H- C2 [! F+ N) x7 J

& ]) ]: w: k" B5 q  G; o/ fsystemctl enable neutron-server.service \
: y( i1 {. Z3 J, wneutron-linuxbridge-agent.service neutron-dhcp-agent.service \
! f! J8 \8 s8 H8 i3 E% Zneutron-metadata-agent.service
8 H3 A4 g2 ?! \# Q0 Q7 ]
: A( r  q/ |* l; o7 Xsystemctl start neutron-server.service \
5 q4 K0 E1 ?/ C/ _/ D0 |, s) Q1 Uneutron-linuxbridge-agent.service neutron-dhcp-agent.service \9 t  J( H% }; U- M
neutron-metadata-agent.service
0 y, Y: C  j2 g/ x$ \17、keystone上注册Neutron服务
- I  B  G( O# Y创建neutron服务实体1 q* B) @* `1 q9 Z' X' w; p

1 c$ d9 z' W7 y$ z+ ^: M, Ksource /root/admin-openstack.sh+ e$ M( Q" g: g5 F( {6 N
openstack service create --name neutron \
% z! C  J0 ~( i* T: z* S3 G9 C. v--description "OpenStack Networking" network! E' _9 W! K* Z+ a! A! Q
5 z0 O/ I- z, h; U5 m+ T( r
创建neutron网络服务API端点(公有、私有、admin)
: t/ s- J0 s8 I2 r+ j3 E; w! z
% z. `: p( H( i  \" A- aopenstack endpoint create --region RegionOne \
( `% A  Q! W- Z8 j9 ?network public http://192.168.13.11:96961 R2 W: S# ~  ]6 h1 z4 b
# |9 _0 @) a2 I3 u1 e
" |8 C# _2 T- M% ^  h! r
openstack endpoint create --region RegionOne \
5 D- ^4 A) p( O. l# l& p: Dnetwork internal http://192.168.13.11:96969 O2 H% f: I* z  f
) ?/ b! q0 I0 o- T# q) Y5 f
2 M4 t+ v+ h3 |  c5 H1 h* R; L; ~/ ~
openstack endpoint create --region RegionOne \$ e9 q7 e3 t* w' e3 X9 K1 D% Q
network admin http://192.168.13.11:9696' W( y0 X! U! i0 _  t+ \% A

8 v4 G- M& ]4 e, p/ X18、检查neutron是否安装成功6 ?- I& c- p2 _: {5 m

* H7 ^1 b% E& ~- C9 C- oneutron agent-list
' x% V- T% v2 v( H' b/ u: T, k0 R, a2 h, ?# @
分类: openstack
9 z% s8 ?' h1 q( b
 楼主| 发表于 2021-10-8 16:43:27 | 显示全部楼层
配置网络服务来通知计算节点的网络拓扑变化
/ v, `& [( s4 }* S
( S9 G5 X6 |" z2 a[DEFAULT]- J# x) |0 A; L) Q; O, C# f
notify_nova_on_port_status_changes = True
2 [( C$ J  t& Xnotify_nova_on_port_data_changes = True
, B& ?4 J# y, {# I. j/ K; p: g2 f
2 b& W  R/ j" {3 J/ Z! e2 [[nova]# _) {& ]  }$ Y, O1 f7 c  J1 M
auth_url = http://192.168.137.11:353577 Q# f6 `: L$ L+ w1 M) n7 v
auth_type = password2 t2 B4 t0 u5 @, \# i- r
project_domain_name = default
. X6 _7 m5 U( T1 kuser_domain_name = default
* \; t* t8 l! {* ?! Vregion_name = RegionOne( G1 f, \' |# l( N1 R
project_name = service7 E( `9 T" h+ d, h
username = nova6 P  q6 _4 f9 t7 }2 V& L
password = nova
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

GMT+8, 2026-4-8 19:09 , Processed in 0.060859 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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