易陆发现互联网技术论坛

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

Ironic

[复制链接]
发表于 2017-6-30 22:58:25 | 显示全部楼层 |阅读模式

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

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

x
Ironic对接原生的Neutron
; P. D% i8 x# y
部署、配置相关:
! {8 j, R0 |/ D0 ~8 a& c, G
  • Ironic自己有一个dhcp-server,在inspect过程使用
  • neutron-dhcp,在provision过程使用
  • inspect和provision过程使用的tftp server可能不同! x: |# l/ j, \- e0 W& t$ h  U7 ^
% H8 U  X, n7 X* y2 V( b7 P
Register过程% X( x" T# Q. E) r0 p) H
用户录入ironic node,包含ipmi等信息, C2 a6 v3 Y- X! o2 e
$ W$ U3 G4 X* _( U$ _) ^4 P1 f( |, }
Inspect过程( A# G9 A  ^# w2 o% H" y. j
这个过程中使用Inspect Network,要求:- _% h5 Q( `4 u
  • Ironic dhcp-server能收到BM节点的DHCP请求。
  • BM节点拿到IP后,能和tftp-server-1互通(三层可达)3 v, ]/ o$ Y7 N
用户获取BM节点信息7 p7 P) K, W% B; g9 f" N) Z8 Q. L
  • Ironic通过IPMI设置BM节点PXE启动
  • Ironic通过IPMI启动BM节点,做PXE启动
  • BM节点从Ironic dhcp-server获取IP。此时BM节点的请求报文不带vlan tag,使用上联接入交换机的native vlan(默认tag=1)
  • 拿到IP之后,BM节点从tftp-server-1下载小镜像(ramdisk,内含Ironic Python Agent)
  • 执行某些操作,获取BM节点的详细信息
  • 将BM节点关机。ramdisk运行在内存中,关机后丢失。
    % `' ]4 ?4 j; _9 e! c  o( \
! S4 \' F+ B3 v, l
Provision过程" f1 N% H! z5 m+ l% v/ q
这个过程中使用Provisioning Network(由neutron创建),要求:) a8 `7 \8 i- N+ ?
  • BM, glance-api, ironic-api, ironic-conductor, neutron-dhcp-agent需要保证PROVISION NETWORK连通性- F: R) E3 I- L% |9 m* d7 T
用户申请物理机,安装操作系统,配置业务网卡等
4 Q/ p9 b& w% u4 Z% u
  • 从nova入口
  • Ironic IPMI启动BM节点,做PXE启动
  • 此时,要求BM节点从neutron-dhcp-server获取IP(通过native vlan)。但由于Ironic-dhcp-server也允许native vlan过来的请求,所以必须保证DHCP请求被Neutron-dhcp-server处理。
  • 拿到IP之后,BM节点从tftp-server-2(可以和Inspect过程中的tftp server不同)下载小镜像(ramdisk,内含Ironic Python Agent)
  • (这一步怎么控制的?)从glance下载用户要求的镜像,做安装(要求拿到的IP和glance-api能互通)
  • 安装完成之后,通过cloud-init在BM操作系统内部打上对应的vlan tag(必须保证该vlan tag在接入交换机上预先做了配置); p/ e& N+ i, t
# U/ F5 g% C' F. Q# u
关键问题:
" `: T& V3 Z9 Z# X, d
  • Ironic-dhcp-server和Neutron-dhcp-server都允许native vlan过来的DHCP请求,如果有两个BM节点同时做Inspect和Provision操作,可能引起冲突。
    4 h1 K6 n: _% ^; [; k: P" X+ `
  • 两个DHCP server合并。但是Neutron-dhcp-server是白名单方式,而在Inspect节点,dhcp-server还不知道BM节点的信息,没法配置白名单。
  • 严格将Inspect和Provision过程分开。在机房初始化过程中,开启Ironic-dhcp-server,做完Inspect之后将其关闭;或者在EPC上强制Inspect过程中,disable Provision操作。
    & S! J) u6 B  t% ]5 f3 I+ J6 \0 u/ R: @: D) n% H
    * 一级私有云中兴方案,将两个DHCP合并了,运行在ToR交换机上。
    . B0 z: d5 R0 F7 n( Z
  • BM节点的租户vlan一定要在接入交换机上预先配置,如果做不到,则需要动态地配置交换机
  • Neutron-dhcp-agent需要在业务网上
    4 M8 ]2 [- E3 b' ~
3 @. ]0 t' b' }8 _4 Z# k$ @) u

苏州Ironic环境
0 G) }0 N/ K! m/ Q, i
10.142.24.12 root/@IDC_host4321$ a4 U% Q& r2 o
! `# o8 i! F+ K" _/ h) U% Z
$ r# q! T* p7 B9 y

浙江Ironic测试环境
: t$ C4 J1 ]- P8 U4 w" \; I! p* v6 x& C8 W. W( z8 ]
Ironic DHCP* e. @% _8 I) ]9 Y5 A6 h
[root@csv-yglcs17 ~]# cat /etc/dhcp/dhc% p0 R; q. z# _, r/ G0 D3 u
dhclient.d/  dhcpd6.conf  dhcpd.conf
, `3 i8 E. L7 x5 b8 f4 h. A; x. J[root@csv-yglcs17 ~]# cat /etc/dhcp/dhcpd.conf
- q' M! \! @% y& Y+ W. ]8 ]option domain-name "test.com";
. e  b* W5 W" G% l: L, T/ Roption domain-name-servers 8.8.8.8, 61.88.88.88;
( X" o" V0 W, P* k! t$ E$ a" Wdefault-lease-time 60000;
- d8 h+ B- H3 I9 _" Kmax-lease-time 720000;3 s% ?: P" n2 q- Y' F+ q3 {8 j
subnet 20.26.34.0 netmask 255.255.255.0 {
" u. ~0 S! C; q1 c6 ~+ V* J    range 20.26.34.10 20.26.34.100;       <== DHCP段
2 w# [/ z( _  Y+ V! E    option routers 20.26.34.1;
0 p, e, B7 {# ^    next-server 20.26.33.26;          <== tftp server
1 e4 g9 j6 U; q' C% S3 {/ w    filename "pxelinux.0";
5 L2 T# \8 S/ c# [$ F; M2 k}! Q% I* B/ W3 {- v6 T- P
subnet 20.26.33.0 netmask 255.255.255.0 {      <== conductor节点只有33.0网段IP,如果不配置这个subnet,则dhcp启动时会报下面这个错误
8 ^$ T6 c' |% V/ m& z}
; @. e/ a2 e6 o# x2 n9 `4 U
! p" |3 z  Y  ]7 p8 w9 V6 K问题:
4 u! N) s1 {: M  dApr 19 14:30:21 csv-yglcs17 systemd: Starting DHCPv4 Server Daemon...
: R# \0 ]! S# w) ^4 L+ YApr 19 14:30:21 csv-yglcs17 dhcpd: Internet Systems Consortium DHCP Server 4.2.5/ Y& ^  P1 r3 i7 w( `6 r/ H
Apr 19 14:30:21 csv-yglcs17 dhcpd: Copyright 2004-2013 Internet Systems Consortium.+ O# G" e( J) |& W: t/ {
Apr 19 14:30:21 csv-yglcs17 dhcpd: All rights reserved.
+ f! g9 h7 Z% s$ |( e. BApr 19 14:30:21 csv-yglcs17 dhcpd: For info, please visit https://www.isc.org/software/dhcp/
+ H& b" d7 _5 ~/ C. x. s9 ^Apr 19 14:30:21 csv-yglcs17 dhcpd: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
; t! X4 M( Z: E2 J' H1 i1 L- E7 DApr 19 14:30:21 csv-yglcs17 dhcpd: Wrote 15 leases to leases file.7 V! `2 U9 D8 u7 F% n! |
Apr 19 14:30:21 csv-yglcs17 dhcpd:2 J" A+ O% r# l# Y( Y, _! D
Apr 19 14:30:21 csv-yglcs17 dhcpd: No subnet declaration for eno33557248 (no IPv4 addresses).# j: S7 p' y4 z4 D
Apr 19 14:30:21 csv-yglcs17 dhcpd: ** Ignoring requests on eno33557248.  If this is not what2 u& ~$ V1 f  G& s
Apr 19 14:30:21 csv-yglcs17 dhcpd:   you want, please write a subnet declaration2 ^+ U+ Y$ E& L+ r* f
Apr 19 14:30:21 csv-yglcs17 dhcpd:   in your dhcpd.conf file for the network segment! q6 v7 f/ C, I2 `# \# n
Apr 19 14:30:21 csv-yglcs17 dhcpd:   to which interface eno33557248 is attached. **
5 S/ q+ n! o: B8 `1 U1 X* H4 |5 U* zApr 19 14:30:21 csv-yglcs17 dhcpd:
+ `- ^/ [4 U4 o  \2 P5 Z, dApr 19 14:30:21 csv-yglcs17 dhcpd:" o9 i! e% X' x5 a
Apr 19 14:30:21 csv-yglcs17 dhcpd: No subnet declaration for virbr0 (192.168.122.1).$ d9 s9 v0 p2 _! O' h6 s
Apr 19 14:30:21 csv-yglcs17 dhcpd: ** Ignoring requests on virbr0.  If this is not what& r9 j5 o+ M3 d! M2 e' W
Apr 19 14:30:21 csv-yglcs17 dhcpd:   you want, please write a subnet declaration) }! Y, q0 W9 A5 \4 U/ G, z3 R
Apr 19 14:30:21 csv-yglcs17 dhcpd:   in your dhcpd.conf file for the network segment
! w0 O1 u! v( e4 q$ xApr 19 14:30:21 csv-yglcs17 dhcpd:   to which interface virbr0 is attached. **8 b) G' R2 j, u: S& F
Apr 19 14:30:21 csv-yglcs17 dhcpd:0 V5 E- v2 Q# R2 ^' O
Apr 19 14:30:21 csv-yglcs17 dhcpd:
5 z9 r7 \" C% F, |- J7 [* qApr 19 14:30:21 csv-yglcs17 dhcpd: No subnet declaration for eno16777984 (20.26.33.26).
2 i/ @3 T1 v2 Z1 ]* J' }/ {4 g' `" x$ \% ~Apr 19 14:30:21 csv-yglcs17 dhcpd: ** Ignoring requests on eno16777984.  If this is not what
. n- \8 B. o' L- c$ `/ XApr 19 14:30:21 csv-yglcs17 dhcpd:   you want, please write a subnet declaration
4 \+ h, ?2 j2 U7 fApr 19 14:30:21 csv-yglcs17 dhcpd:   in your dhcpd.conf file for the network segment* H- o9 O- |6 {: |& D0 C
Apr 19 14:30:21 csv-yglcs17 dhcpd:   to which interface eno16777984 is attached. **
% v$ O5 h. B! MApr 19 14:30:21 csv-yglcs17 dhcpd:
* G* W8 u+ M) p8 r6 uApr 19 14:30:21 csv-yglcs17 dhcpd:
7 q0 e& |" F4 t  ^) W7 qApr 19 14:30:21 csv-yglcs17 dhcpd: Not configured to listen on any interfaces!
, ~! z9 @7 S  ?3 i: U  gApr 19 14:30:21 csv-yglcs17 dhcpd:) E: s# I7 `9 [6 s$ N( _% _
Apr 19 14:30:21 csv-yglcs17 dhcpd: This version of ISC DHCP is based on the release available: U' W- x! L8 {0 ?$ J
Apr 19 14:30:21 csv-yglcs17 dhcpd: on ftp.isc.org.  Features have been added and other changes8 c/ g/ {. ~5 U0 Q$ I
Apr 19 14:30:21 csv-yglcs17 dhcpd: have been made to the base software release in order to make1 C' S0 y2 @7 k. y( k* {4 j
Apr 19 14:30:21 csv-yglcs17 dhcpd: it work better with this distribution.; @# S$ Z& u, N
Apr 19 14:30:21 csv-yglcs17 dhcpd:
1 k1 N9 W( R6 a* E' |& ]8 VApr 19 14:30:21 csv-yglcs17 dhcpd: Please report for this software via the CentOS Bugs Database:
# `1 o& d# ]# X7 c- i/ uApr 19 14:30:21 csv-yglcs17 dhcpd:    http://bugs.centos.org/( G1 `! F) v! P8 `
Apr 19 14:30:21 csv-yglcs17 dhcpd:( N: J# V& u: T% `3 v4 H) T' E
Apr 19 14:30:21 csv-yglcs17 dhcpd: exiting.1 a) D  x% d' j  T
Apr 19 14:30:21 csv-yglcs17 systemd: dhcpd.service: main process exited, code=exited, status=1/FAILURE
& S: ?6 f0 v" g  V7 `' iApr 19 14:30:21 csv-yglcs17 systemd: Failed to start DHCPv4 Server Daemon.
. ]; }5 c, h9 X1 R3 lApr 19 14:30:21 csv-yglcs17 systemd: Unit dhcpd.service entered failed state.
/ @3 q0 {1 V+ Z, [Apr 19 14:30:21 csv-yglcs17 systemd: dhcpd.service failed.; M8 e+ J% f0 v* W8 ~1 ?. X

  m) f/ q( O0 I& _% s# K; |' N
8 E2 H# B3 d7 l3 }/ i/ R& K& }- o
Ironic Inspector* c; M6 E" P9 P3 f9 e& ?
[root@csv-yglcs17 pxelinux.cfg]# pwd* t5 o5 k8 P0 _! X9 u4 X$ p
/tftpboot/pxelinux.cfg
% \/ u$ A& C2 g8 K[root@csv-yglcs17 pxelinux.cfg]# cat default
8 k& W6 @8 v# c( j# j, a& d8 K6 zdefault introspect
& j$ N5 ^7 w/ Z" a- o2 H2 A. H5 I% t1 Hlabel introspect
/ i, h! B, i; C' E' M& Y- ^' N( Ykernel /tftpboot/ironic-inspector/inspector-kernel
1 |: x: ~1 E  M- _4 r4 Nappend initrd=/tftpboot/ironic-inspector/inspector-ramdisk  ipa-inspection-callback-url=http://20.26.33.26:5050/v1/continue systemd.journald.forward_to_console=yes ipa-collect-lldp=True9 C/ M5 s2 L, u! M4 u
ipappend 3+ `+ r: Z% u% N: B* J! Y& `
- a! `7 _- D; }8 I
inspector在20.26.33.26上1 s. H$ x% K9 A7 |
5 J2 I1 }3 Y& z- o6 N; P
Ironic Provisioning- P$ O  ]# o6 B/ q- v- D9 B
ironic.conf中的provisioning_network还没配置。还有cleaning_network。
5 A1 w9 Q9 w4 D3 @- i0 r  L

! L! B  r" k- U检查IPMI( J5 y& P% E9 z* s7 u
[root@csv-yglcs17 ~]# ipmitool -P Huawei12#$ -H 50.1.65.245 -U root -p 623 -I lanplus power status
6 K9 u2 I$ v! E, _/ K$ |Chassis Power is on# F: N: E( E/ d& z
7 _9 M3 F1 y4 o. k' S' s+ S
3 ]' \' d& R) ~+ e4 U  f
7 |# i# R2 j9 a6 O1 C
== 操作 ==5 o3 ]+ Z5 p1 h; a+ ]- S
$ B# v+ g& h+ l% d: V

5 R$ J4 ?9 f/ y                               
登录/注册后可看大图

8 L: [" R& L1 F. H/ Z8 B5 D- r/ l( ^* V& a7 |0 c

0 _6 \6 l) d" Z: B5 }8 s6 D% X/ w2 R" G4 h' r
% X' j" Y2 O* t+ t7 G
8 M6 g3 k: F; `# O2 ^8 ~
                               
登录/注册后可看大图

2 H! R9 t4 @$ E0 C3 @( c
. ]% f, v% I+ ^5 o
2 i: O+ n3 K1 V8 D) p+ N) J
- P4 B* ?/ r; x* ^ironic node-create --chassis_uuid dbb588b3-75e8-4028-b851-110671e05e58 \
. a/ k* P, y, Z% d* @                   --driver agent_ipmitool \
/ ?. t. f' L  L2 v                   --name pc-zjnacthd01 \: f( O6 }$ P+ ~2 [  y9 e
                   -i ipmi_address=50.1.65.245 \5 a4 D2 u) E/ |; `
                   -i ipmi_username=root \
+ {$ o5 Y, L2 _0 C2 N                   -i ipmi_password=Huawei12#$ \
! j8 I0 R# ?9 V                   -i ipmi_port=623 \
" f, e; P5 I$ n% {) z3 d                   -i driver_info/deploy_kernel=4c1855e5-9b6b-47e2-89e5-3bc351c2ae2e \) N; U& u6 L" h& z7 l2 @9 s
                   -i driver_info/deploy_ramdisk=2f603c85-de92-44ea-b4d0-1396b91102cc
4 q& o' |/ v1 H7 [1 E5 x+ O( G% t/ S: C! ^: }" e
Update 5/25: 正在开发Ironic AZ功能,通过node-update将AZ属性加入node,同步给nova数据库。nova boot时只需要指定AZ创建机器即可。- t9 W- F  M. v. z
/ S7 d7 l. _: z; d$ j% u
8 ]6 W3 R# v4 T& Q" {( p
                               
登录/注册后可看大图

+ \3 E/ u4 q  ~+ R( G1 ]
8 t$ K  `: R& L6 Q7 a3 N
, n3 H8 Z% J. C7 E5 _$ R0 p( j: O: G8 _" z8 j

  P+ M3 W4 i) n9 x1 C+ dupdate 5/12:
# X. M( m0 c0 Z5 U4 {
3 ]/ [# x* \$ s( ]: P
                               
登录/注册后可看大图
/ F  v; A4 m1 \2 g  A' L

+ g% @# H7 F9 a8 Y3 l

$ i( @7 O0 \; G* q                               
登录/注册后可看大图

9 K8 ~- ^1 z4 I6 v( f. O5 ^3 [8 `" `, f7 [: C0 B
$ Y2 S( f, u( e# a7 p: N  G

/ ~: w8 p; Z8 T$ ~+ kinspect成功之后:$ X8 B! k1 f! n+ O2 Y; Z7 Z
2 ~7 e, M& v; u/ B* `
                               
登录/注册后可看大图
9 \/ _" t0 ~9 l& {

# e5 N& U- s  e: E. s  q5 s) c
- o" p1 w  T3 L) D! ?) v& c. L- l7 |; D& i  ?: @
/ G. I  y% ^% E- u, a) R" d

6 Q8 Q9 Y; \6 V% D3 f
, C' x% `4 v" l/ c. sinspect失败,原因见“问题2”1 v- A9 ^  ]* M, @

, Y; O# l. ?: l8 A8 M4 p! X
. `3 w+ D% D" [" S
                               
登录/注册后可看大图
3 J5 p# O; I7 s' d

* r3 t0 j5 y/ {7 c5 q  Y- t- }" N4 K0 g; S

" x2 _! p. ~. e% F
6 M* B& q1 M* ~; v' M$ B配置provisioning_network:
, U5 N2 H. c! \3 [) p4 C) p
  s9 W* j' ^  S4 x' `8 |
                               
登录/注册后可看大图

4 ^7 w, y2 N9 ~4 V$ `! ~: D4 o4 H  w% i7 E6 G9 }

6 e  y2 S9 k. ?. W" |9 ^& z, J3 c- ^" ]$ G% V2 H

7 b; V3 z$ d0 o2 m5 m# W3 N  ~
2 Y6 n# ~& T3 Q, @6 o4 ~
                               
登录/注册后可看大图
) T  Z' ?. A. ^! d$ Y! ~+ ]; ]2 C
1 Q/ f. Q2 C) ?! V# }, H" E
2 b2 B- z: |' W! a
$ @; h9 w1 n; Y2 w$ I4 k3 a

- x7 M' w5 A: K6 E7 lInspect成功之后:( M. n- H/ ~: l+ _2 }! ^

! o( k0 l4 I0 R; L                               
登录/注册后可看大图
0 n9 h" b1 Q$ }8 I. g$ n' n. m

% ]( P# _7 h: S% E3 g2 a
7 A& p$ d/ m# T% W% s/ L, b+ R$ `8 f9 z3 l

. _' W$ Y( [; R; {

3 v/ |; R1 g1 O: E* d                               
登录/注册后可看大图
& N, r- f. l  y& y! B
2 G0 z( @+ b+ O! S: _

! S1 f/ ^; R3 k6 [, N% I2 [! |# L  X2 m& Q$ b6 ?
) N4 {, W, @+ `; v- q3 Z- D* u7 S
上传Ironic使用的镜像:/ h! J) H& o& [5 H
glance image-create --name CentOS-7-64bit-ironic.qcow2 --disk-format qcow2 --container-format bare --file CentOS-7-64bit-ironic.qcow2 --is-public True --human-readable —progress
9 A, Y- u: P/ d7 ~8 \glance image-update 40928b81-9be1-402a-8684-4e2d2fcf330f --property hypervisor_type=baremetal2 q) @4 ~% \0 u" o
# u' u5 @% g1 j# m3 b
nova boot --flavor 2 --image 40928b81-9be1-402a-8684-4e2d2fcf330f --nic net-id=3a151049-ff3f-4bc5-88a1-b9084ec24bc9 pc-zjnacthd01
$ Q; {+ N' n4 O* S* p6 q

2 I6 O" U! x! q6 z                               
登录/注册后可看大图

0 f0 {+ f' Y. g
* [' b; Z8 v9 V! ?
. `3 m2 I( a6 f  ~6 ?3 N
$ F& c5 ]8 G" V9 l9 V; n4 U! @0 s: h! N: n
== 问题 ==
  V( J( g) _8 P; h' o
  • node name有限制?: r' J1 j3 X5 A% |1 s" D

4 ?7 B! Q1 _2 g5 O                               
登录/注册后可看大图

8 i7 _- ^6 S6 u( k/ U
6 V0 I" d8 k* V: ]. \9 G# R: B$ Y9 x& P0 U; m" J1 A2 \

( a$ J. }, S+ _: _3 @5 M& K# L8 D& L' t6 N% P
  • 第一次Inspect失败( f" }& A# ]) P1 c( J
2017-04-20 15:29:16.409 28596 ERROR ironic_inspector.main   File "/usr/lib/python2.7/site-packages/keystoneauth1/access/service_catalog.py", line 228, in url_for; u& w8 k% f7 M5 m
2017-04-20 15:29:16.409 28596 ERROR ironic_inspector.main     raise exceptions.EndpointNotFound(msg)5 ~' d" s# h' m3 L: J1 G
2017-04-20 15:29:16.409 28596 ERROR ironic_inspector.main EndpointNotFound: public endpoint for baremetal service in RegionFour region not found
; t- s, U  {9 z0 a1 O& Y9 S% y8 i4 m
重启ironic服务后解决
. t( z0 g# x$ f/ D9 w1 f2 C: X$ o0 @
( [9 p. h! f+ |! @( i" v
  • 第二次inspect失败,BM拿不到IP) m& l+ O/ v+ y) l6 r$ |1 e
DHCP请求已经发送到dhcp server:
. ?1 B- s0 `4 u2 |* B
! z- {2 Z$ k0 T: O
                               
登录/注册后可看大图
  s7 Z. `9 B: q0 ^% p

( Z% J# \& w$ v& O" d$ M5 H* C2 d
, [2 k, h, q" z( S4 @8 T- x# p) ]/ I0 \) b9 W% q
: G( Q  u; C3 ~9 b% P" d  Y+ [
  • inspect时找不到cleaning_network
    4 L5 {$ J, g% Z2 S
配置cleaning_network(=provide_network)
9 k, ~6 u/ B* ~4 K& T/ ^; |) Q$ j3 F; S) V3 d' O& o( L
  • nova boot失败, conductor.log:
    5 L3 J, R5 [# [$ b. W7 B
! G; p+ ^" v* K" J4 k  E# u
                               
登录/注册后可看大图
- g" @' ]5 V. l/ b% A, d% M5 S
# v( H- T# j- `# J& A/ Q9 D
  O; x, n+ n/ F$ z4 J2 u
, k7 m- n- \1 k
更新控制节点的nova代码、ironic节点的ironic代码、计算节点ironicclient代码之后,问题解决4 `# g& k" `7 `7 I7 R: p
; y) e: O0 p) p2 w( o6 _
  • nova boot失败,compute.log5 m  q# B- [( B3 g. s! i
" I. w2 t9 s: _$ H+ V0 {6 O  X, Q
                               
登录/注册后可看大图

: j9 x# F7 s  Z1 L0 j' u' E, a& `; H0 G. _' o; l7 M7 ~

0 V$ |7 M/ w4 }3 O: L* N/ G
7 L5 W9 ^4 v' x" a原因是这个ironic node driver_info还没更新:
- G9 J3 L8 L9 o: h  S

/ B% J5 o% t+ d) ?6 O% O( j3 N                               
登录/注册后可看大图

3 b: F8 n  E2 h, G0 U( T
, z# z/ w9 T  K) ]7 Q
3 q9 A& X* {. P( Z# M( p# d
' {; {! [( G7 a, F8 ]' X+ F9 [更新一下:& D5 Y$ @9 O8 t' r) d9 w: V/ V
ironic node-update baa519fc-7c06-40f8-8e5a-5fd3b6e97e01  add driver_info/deploy_kernel=f8205536-070b-4286-8d0c-35e3b8647741. @% v! W6 c  U2 e
ironic node-update baa519fc-7c06-40f8-8e5a-5fd3b6e97e01 add driver_info/deploy_ramdisk=302e6438-4d31-429b-8bae-47e225d4ed67. X$ w' w1 G( N& D# N4 n
update 05/12:
0 f) T3 S: L' `! h0 `
ironic node-update baa519fc-7c06-40f8-8e5a-5fd3b6e97e01  add driver_info/deploy_kernel=4c1855e5-9b6b-47e2-89e5-3bc351c2ae2e
8 L/ m& s7 A3 \( Lironic node-update baa519fc-7c06-40f8-8e5a-5fd3b6e97e01 add driver_info/deploy_ramdisk=2f603c85-de92-44ea-b4d0-1396b91102cc
, V* E/ {' l6 @. C

$ H6 \9 N$ J/ C9 c                               
登录/注册后可看大图

7 }' t' y4 S! [( c0 U" r, f/ m6 K3 u7 T+ t3 P+ G- q  u& [, K
) I6 e+ n$ O6 }- A& l6 l
& x+ ^6 h2 z0 z4 H/ K3 V

$ T! V( ?: D: h. ^: K: {2 r
  • nova boot失败,镜像找不到,compute.log% V/ ~( M2 F2 U) P' C
4 \2 f1 q8 f' o9 o5 J
                               
登录/注册后可看大图

0 p6 L8 `: P2 X- d4 b# W# c7 ]5 Q% d' D/ Y1 u

, J. X' j; W3 O8 X% a6 }* T2 C7 }4 i5 T& H4 M
计算节点nova.conf的glance-api配错了:
4 ~. F5 [; O4 S0 w! O) p) ~
5 n8 n! |6 G% x0 Q# h
                               
登录/注册后可看大图
2 p* l# S3 e/ s( k# ?) l
  L& d  Y& N5 B
% ]$ d) g! H8 y# x
$ `6 Z3 [/ C" w" K
ironic-conductor节点ironic.conf中添加glance api version=1
: F+ N  N5 ?$ ^; v5 K. P
& ~( l; Z$ E% ~5 E) ~
                               
登录/注册后可看大图

; ?$ z4 C8 `6 o5 O9 F" P8 j0 P0 N& G' D1 e9 a8 J, d' n

$ b2 \: u, i# A9 z  X
) ~2 j' v/ ]" y0 r9 K9 |9 f# `; L# P* L! S  v/ ]' ?
0 j$ }% T* C; v, f$ u$ c! e- Y
glance_api_version=1
' T6 o8 M% v9 k. p1 z* W  E$ J. D4 w0 Y' x" ?' R2 L0 @
  • nova boot失败,ironic-conductor.log:0 S" S! X: d2 C( S/ B; l
0 |  M$ x; x, |! u5 [! j
                               
登录/注册后可看大图
: F: G% {$ \* }* K, i

) r" p+ r6 u7 _7 \7 w; F1 Z
. g" d1 P: i! z9 q  `9 C8 |- Z5 O) E8 o
命令行验证,可以在provisioning network d5a284c3-41d3-4eb3-a11f-58a99d3e2eb1上创建port+ W: \& B0 o: d) r2 u
& `& W: C: s& Q1 d; x& s) Y+ T
原因是没有enable LLDP。enable之后:! u0 z# J" V+ Q$ V8 D" ?/ I6 l7 c) `

# g3 w# L, u/ C7 L* d8 kironic port-list | awk '{print $2}' | egrep '[0-9]+' | xargs -I 'X' ironic port-delete 'X'$ p% B0 M( Z0 F0 G9 K, |  k
ironic portgroup-list | awk '{print $2}' | egrep '[0-9]+' | xargs -I 'X' ironic portgroup-delete ‘X') L0 |1 _% H' t/ `: `/ U1 x
重新Inspect:/ r/ y' a, z7 `+ X( b2 {( w# m
ironic node-set-provision-state baa519fc-7c06-40f8-8e5a-5fd3b6e97e01 manage% N1 A9 `1 s0 c2 J+ _4 Z
ironic node-set-provision-state baa519fc-7c06-40f8-8e5a-5fd3b6e97e01 inspect) `" J5 {: V3 I+ T  C- x& B) K
( H) Q4 f& ~" T' \% V- ~
                               
登录/注册后可看大图
5 h8 @* _  G0 L/ l( J
+ @+ n/ W! c0 i1 C

3 J3 s- V: h- L% H, q; @+ G) v$ g9 ~& ~
" _0 i' ]) r# D
1 h& y2 K) G2 X6 e& Z, `! u
                               
登录/注册后可看大图
! X1 t0 d! K: n2 o' }
$ Y, H* M& [) i7 L5 L  i9 q" ~  z

! E" a# k- i* G& y& k& D' e! [: I* W( A! Y# N6 K! s
3 c' |$ ?6 E* ]1 t  z
  • nova boot失败,找不到用户镜像
    % M7 `' A. x! N. @# r- F% o( p
原因是glance-registry.conf中的数据库写错了。' q. |3 g8 t  Y2 g* C& |: P

+ H1 ^, ?7 E/ f- T+ G
  • nova boot失败,找不到ramdisk
    ( X5 h6 v2 G# j" C* v' i
6 p" [6 s5 A1 P
# h4 j& t1 K, T7 T
                               
登录/注册后可看大图
# p2 D, u0 f2 f( m' z* g9 k4 r

, c% F" w( U7 S# k2 C5 A* H9 Y8 I$ Y6 K3 R

7 J0 p: d; S! X! Z) |$ c这个image UUID是配置在ironic node的driver_info里面的,image需要上传到glance% N/ V, e( e( O' e; S! Q) n& T. S! l% r

2 \: i! S; m% N+ t9 j上传镜像:- S5 i6 I+ D2 [# n( M- a# x3 \! Q0 q
2 ?6 }- ^- X) i5 ]2 `6 J7 |! {5 w* D  l
                               
登录/注册后可看大图

- M! f) o3 Z1 N7 I7 ~& g% B
4 n8 Z4 y% Q2 d5 P
, k1 J8 @# q  B% I; ^& I5 |
; V" j% O/ p+ `: D* B% i

; H+ a9 W7 t( h7 d                               
登录/注册后可看大图

6 K% W1 e' r: h7 k1 P
* V/ G2 o+ O8 p" b' }, n7 Y1 [( L
6 r* E- H! J/ }% j" n9 f
, R8 s2 j, n4 K' V6 @* L
* B% D: F5 O2 G$ d" C: H

. K# I6 P" f' V9 v4 @! {                               
登录/注册后可看大图
* q# K9 ]/ a" q! _( f, {% H6 f
% q' j( Q6 s9 k- r( d2 B; F

  }) D3 E/ @$ w$ Y. t& S3 O4 s2 L# v; {9 d- Y" P. u
更新Ironic node信息:
8 N9 e9 h0 `- A) b

. M4 F: X; ~: v% o- h# Y                               
登录/注册后可看大图

5 c# [9 w( K# R. N( V7 B2 O: Q8 H; r" [: O
2 |' s. F% V5 n6 L; x2 o' `+ ]

* [. g8 Y! Z4 d' i  f8 ], s
, @3 U# k' D: Q. E( K( A" D
  • nova boot失败,访问tftp权限不够
    9 P+ B" W$ p3 i: H% D  S( V+ R1 K

, M! _- L) N( S; V# H3 T                               
登录/注册后可看大图
" h' t2 g) Y* I" k8 u( s$ i% R6 B

* X. m, ^* d7 A9 [# w
( t, X1 [! v: ~
/ S2 e: l9 ?4 W( k1 n3 B0 L7 p) Y, Y& R3 x3 v! }
chown -R ironic:ironic /tftpboot/
+ X: N, [* s2 C' h0 B* O
( o% C1 k, }7 j7 d; m# T' `
! E' H& _- A& b/ G" |( P
                               
登录/注册后可看大图
, B' F; ?2 h5 V

; }- q& B' f) e& _5 Z; {+ m( v7 H0 a% S9 i0 u6 [# w/ @
8 s1 c3 t4 u! s. b

% y- A) p- n9 K! W+ ^5 c
  • nova boot失败,物理机DHCP请求被ironic-dhcp捕获了! h- Z6 l* g8 p4 b3 @
关闭ironic-dhcp
, f9 A: |5 U' d" T" d/ c9 K  f* z- A+ B! l+ ?/ f% C" |- J7 Z
  • nova boot失败,物理机DHCP时不能从neutron DHCP拿到IP
    7 i- q! p3 K; K. e+ H8 o# U2 @
在控制节点上,neutron dhcp在dnsmasq启动的namespace中。relay的目的地址是控制节点管理网IP(eno16777984),dnsmasq的监听设备为namespace的tap口,IP为20.26.34.91,他拿不到dhcp请求。' o: c* G- K5 f9 P
现在的方法是:在控制节点上手动启动一个dnsmasq,使用neutron dhcp一样的配置" z. e# e# N5 c  B
6 [9 l+ P: d( ^2 w# O( q9 X+ L
  • 拿到IP之后,进入ramdisk系统,但是重启之后不能进入用户镜像的操作系统) V7 o8 |8 \8 }! r) S* J
查看BIOS的启动设备顺序,发现是- Boot Device Selector : No override+ ^5 ]( m" y5 V" b/ l
查看ironic-conductor.log,发现连不上20.26.34.70:9999。这是IPA的地址和监听端口,需要保证ironic-conductor节点能连上,但是的确不通。9 Q, N1 M, Q3 U* V8 p! _  g1 K

( {6 Z5 O2 T0 p2 r. {& ~( b                               
登录/注册后可看大图
6 S5 p6 R% E; T- U% _3 ^
1 H5 ~; o5 H' x$ Y6 ?: G- J9 L

" t' Z+ v5 Z% |) Z, y4 W
3 F9 u) [# m2 B) g; ?. E% b) P% s
2 g* w' S6 n# S3 ?姚军说可能是ramdisk启动之后,有两个网口获取到了IP地址,引起路由错乱,建议我们ramdisk启动之后,删除第二个地址。
# d/ m/ d& ~" Z  y" e  `% {- x6 l- M# m* F5 E) {
05/04 update: 在provisioning network上加上静态路由:destination=控制节点网段,nexthop为provisioning network GW
' V6 N- `2 e* f. [( V. s05/11 update:neutron subnet-update aca03dd8-3d2a-4c54-99de-7a8a7bac4f53 --host-route destination=20.26.33.0/24,nexthop=20.26.34.1
8 F) E# p% V: c$ x3 NUpdated subnet: aca03dd8-3d2a-4c54-99de-7a8a7bac4f53
4 v6 n: m3 l; e" Z$ r2 t+ M

  c& t+ d+ V! X3 g                               
登录/注册后可看大图
; Y9 S- t# A: W$ F7 F7 `+ [! O% M- q
* o' u( n4 h1 p: \" U( x+ M8 R: Y
9 Q5 @2 F2 L  @5 N" l

5 _, r! }1 q1 r. g5 @; X2 ]! L6 F0 o# B) Q1 Y; \  l. W
验证可行,能连接这个端口并下载用户镜像: ==> 为啥会有多个网卡获取到IP,如何从代码层面解决?
# g$ T6 h- {: U8 I/ G9 k
1 J) c5 l7 a- C, X9 h; U7 L
                               
登录/注册后可看大图

1 k+ r/ q. A1 b  i4 h
& F. t' A5 P9 L: l  S! ^
: J1 Q  \2 T! [7 d) P, M! j2 N$ c; c! r7 p  A/ y

# Z7 A( H0 {4 e0 x+ c; X# J! v* X4 {" }
IPMI查询启动顺序:ipmitool -P Huawei12#$ -H 50.1.65.245 -U root -p 623 -I lanplus chassis bootparam get 57 h2 x5 T) q4 P9 |: ]' [/ P4 }9 G
设置硬盘启动:ipmitool -P Huawei12#$ -H 50.1.65.245 -U root -p 623 -I lanplus chassis bootdev disk
; {# M5 L, @2 d' K. y9 r. q
) {( j" r# D0 i6 k* E5 q
                               
登录/注册后可看大图
5 ^3 n* e2 _. \; H1 i: c& I

6 a1 {. Y3 }1 G% L( K6 S( ]0 B2 ?6 ^6 D2 C& y( q) [$ P4 k, Z

* h4 m! r1 O# h% V; e; T6 w% f6 P8 G3 U
  • 用户镜像下载到了/dev/sdl,没有下载到第一个硬盘,并且整个boot过程超时了: {! ?7 n1 |  i. f, _; F) o
6 j' t) \' c3 J
                               
登录/注册后可看大图
3 o' {( ~; D7 a; u0 o+ r( m/ h* A  H

1 W' u, V: {4 J/ C* T+ g2 ]) ?8 K% Q& c
& D% U- K) B0 a& {: X
a. 姚军修改了ramdisk,固定使用/dev/sda作为写入的硬盘
# s/ @7 o5 e& V& [( m* h b. 修改ironic.conf的deploy_callback_timeout=900. o# F$ Z6 a# {6 @
# a, J! O. J* m! D6 Y
Updat 05/04:
7 I; H/ Y" _7 V" T9 v4 a6 L! h李灏:ironic node-update 4fae2ae3-0935-4585-8be2-00298015f8f3 replace properties/root_device='{"name": "/dev/sda"}'
/ M- r# Q7 u2 |8 l& F+ i/ n8 p' K3 n" B8 j  y4 P7 ~
  • 写入了/dev/sda,但是ironic-conductor没有重启机器,导致boot hang死# o5 Z0 r. S2 \9 v) E8 c
journalctl -fu python-ironic-agent查看IPA内的日志  i$ C0 |: s, U* C, t, V
journalctl --no-pager
, ~; t6 \: c. e- A" F+ v2 z# Z9 t; @7 I* V* o
  • 镜像写入/dev/sda后,IPA执行partprobe /dev/sda失败) E0 p. N1 [, n% [
, m  x* h6 k& q; V
                               
登录/注册后可看大图
. }- F$ r8 h- v: P: X" W. r
. `" K7 ]" R1 P
$ y0 I6 t3 z4 L0 y0 C9 j
# t+ E5 Z# W) T0 c0 E; z
ramdisk中的ironic-lib需要打patch:https://review.openstack.org/#/c/444061/% |3 K8 ^+ l' _, T3 k* e$ C
1 V0 s" B( k: [2 ?

+ a2 I) [1 D9 j9 _
  • + M  f% g0 ~! J+ E
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:13 , Processed in 0.951601 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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