找回密码
 注册
查看: 26|回复: 0

openstack 云计算卷热扩容相关文档

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2023-12-15 11:00:17 | 显示全部楼层 |阅读模式
openstack 云计算卷热扩容相关文档1 w" C+ t6 S- B5 T7 b0 U
[toc], S# V- i% R5 a9 ~/ S. z, c
/ `7 z. w  @8 j. |1 ]# l' w
指令. B4 v6 ~$ |8 j, M; U2 r
usage: cinder extend <volume> <new_size>
$ C) ?+ H3 C# H( a0 T6 S; [2 _Attempts to extend size of an existing volume." b' n: V0 N9 [) M3 k: A
Positional arguments:5 i9 Z% E& @* k+ H& z  v( F
  <volume>    Name or ID of volume to extend.* D& j4 y& `2 ~+ ]) T
  <new_size>  New size of volume, in GiBs.
# _3 Y- v3 H4 D" X. C+ n6 I# L功能说明
+ {, ^8 U8 R. L. W
. Z6 Y! t  h: d! L, I, d% y8 w最新的openstack()代码支持了热扩容功能:8 G. Q8 F9 D5 m: ^  @% i5 o

: X4 D- k  m8 V# O/ DAdd ability to extend 'in-use' volume. User should be aware of the1 i1 o- t* t# Q: h* n5 i
whole environment before using this feature because it's dependent
. Z- s2 b/ ]( f! D5 a. |on several external factors below:' V/ o  z% N$ d, x0 D% K
1. nova-compute version - needs to be the latest for Pike.9 n: C2 l0 w" ~
2. only the libvirt compute driver supports this currently.: P' u2 l0 Q; O. W: a( U
3. only iscsi and fibre channel volume types are supported
/ ]- V  `2 t/ A. ^5 t7 q; non the nova side currently.3 T& y2 _: @' h6 g6 v
Administrator can disable this ability by updating the# A, z. w/ l2 S' d7 s4 t
'volume:extend_attached_volume' policy rule. Extend in reserved9 n9 y- Z+ R5 V1 V
state is intentionally NOT allowed.
$ O0 \3 E- J" W8 a4 q
) X. s0 r, B5 R5 a* ]+ H. Q% X注意:/ ]% g& O. `1 k; q2 x) f
6 V: ^3 c( _5 t5 s' S
目前只有 libvirt 驱动能支持,且只有 iscsi 和 fibre channel 协议的卷类型能支持!
# ]& }$ _' B% w! Fcinder、nova做完热扩容后,fdisk -l查看可以看到磁盘大小变大,但是之前做的文件系统的大小是不会变化的,df -h 的结果跟扩容前一样。用户还必须用resize2fs 指令自行resize文件系统!& N7 n( D1 L( w3 K0 @7 C9 |# @4 d
《openstack 官网对于热扩容在 CINDER 方面的说明》
; p' g4 C+ A' a  I3 F  u8 z! F: _3 M, f
《openstack 官网对于热扩容在 NOVA 方面的说明》
5 s! L7 p. M+ R& _! f. O6 m4 |, G/ A+ a% T% y  @
Cinder方面代码
! ^6 l' q! I, H! S2 JCinder 方面其实没有什么改动,跟冷扩容做的事一样,扩容后的size必须是整数GB且大于扩容前size。核心实现是调用卷驱动里的方法,如netapp,调用的是cinder.volume.drivers.netapp.dataontap.client.client_base.Client#do_direct_resize实现。唯一的区别是,扩容后,会调用nova api。
" k9 n2 Z( _* ]1 J. Q' M% L, _" n6 H9 C4 P4 x3 E1 n5 i
cinder.api.contrib.volume_actions.VolumeActionsController#_extend:& d3 z8 w3 S; I3 c& f/ K
# 如果版本是  且 卷状态是in-use,则走热扩容4 E: ~' @& `3 Z8 h2 Z
if req_version.matches("3.42") and volume.status in ['in-use']:/ O- Y; E0 K/ O- h2 k' E6 i% F
    self.volume_api.extend_attached_volume(context, volume, size)
2 h1 t9 M1 D) {6 M5 a& f! o' _else: # 否则,冷扩展
! m7 C, o: h+ a' e, X" B    self.volume_api.extend(context, volume, size)
7 A4 j0 a- s& j% W5 R$ e  a( R8 ~( q% p. w8 ^  A" {
cinder/volume/manager.py里调用nova api,通知nova要扩展卷:" T' J  B. l- Z2 d
if orig_volume_status == 'in-use':/ k. W. f0 {6 \$ g6 m" u
        nova_api = compute.API()/ _6 _* Z% a& i3 t: M; X9 _
        instance_uuids = [attachment.instance_uuid2 K( D. J4 v/ }3 e/ x9 S
                          for attachment in attachments]( l) Y8 ^; y" _. z3 X2 b
        nova_api.extend_volume(context, instance_uuids, volume.id), w. }; @# C3 s: R: v; a" [: _
这里调用nova client 里的:
! U# S$ @% F9 J$ M7 R2 |novaclient.v2.server_external_events.ServerExternalEventManager#create:% M. Z: I; P( [6 E

4 n; T; L9 v1 c# @class ServerExternalEventManager(base.Manager):& B0 Q# w/ J3 ^
    resource_class = Event
9 x/ q! ]; o1 y" m* M: K1 E+ B# |& }, E, l
    def create(self, events):
0 ]& [8 b4 h4 A# N# ~        """Create one or more server events.
/ F' A9 A: I* Y6 A5 w; M7 A+ {. I5 Y4 r2 v7 I
        :param:events: A list of dictionaries containing 'server_uuid', 'name',
/ A+ _3 I$ A9 ~9 N+ m                       'status', and 'tag' (which may be absent)$ N* e5 j. R, o# u" y7 a
        """2 ?0 \9 }& W9 H2 J; w, ^6 r

5 x& {, M. N4 q2 z2 N% l1 z        body = {'events': events}
0 K" G6 C( n9 V! K/ @. M( B        return self._create('/os-server-external-events', body, 'events',% k& C1 [# p+ V/ {! `; S
                            return_raw=True)
3 m" P( L; P; T) e8 z/ j" Z9 k" }; `; q2 V7 b  P3 U/ y$ b
'events':+ d: `" q; A8 M1 g5 U
$ i: g# {6 r* t6 v" ^6 Z% A  p
{'name': 'volume-extended'," j/ j7 U1 f  @5 d  X. B6 z4 p8 X
'server_uuid': server_id,
* Q6 G  D3 K: F# o5 ^# J! i1 }'tag': volume_id}
; f" A" N2 L; |2 E* h$ lNova方面代码; `9 _% [/ ?& |
Nova将使用现有的外部事件API端点监听来自Cinder的附加卷扩展通知。收到通知后,Nova将使用os-brick触发主机上的设备重新扫描,以发现卷大小的变化。
. e( X# ~- T) S. C% _$ c7 Q6 _& i3 ]
3 z7 M) B  Z2 Z1 Nnova api '/os-server-external-events':. J& _" P) }, [) i' b7 f5 Z2 M5 v

- a( d% e4 |- g0 k1 W0 g& O! Jrequest:: S6 d3 Z* q# C' K1 b
    {8 F9 g* O$ T# p1 ?& _2 R
        "events": [5 r4 a, e2 J) r" b/ x- e
            {
5 u1 z6 U7 x( \& F: y. y                "name": "volume-extended",! n8 ?3 U, S3 g: [) y7 N" M
                "server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3"," [1 V; r1 |% K  X# W, {  A
                "tag": "0e63d806-6fe4-4ffc-99bf-f3dd056574c0"
5 n8 Q9 v3 S* x8 l# ?6 M            }3 z8 y$ ^; z' o  h6 i6 S+ B
        ]2 s: P3 {! Y3 M/ U! O6 l6 |( y- ^
    }, Y& q4 i6 g3 o$ X$ y$ F$ J
response:2 i. o6 _9 W( m
    {0 b" @  I; E; B- O) z7 G
        "events": [
/ [4 J; E7 W- F, ~- B6 L            {; i" f* H8 v, j3 o# E
                "name": "volume-extended",
' z  w1 H0 g- G! h0 \, n                "status": "completed",) C* p0 d- X. T: \4 [8 E0 H1 h
                "code": 200,
3 a, u0 y( `' @; Q& E* l& m                "server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3",- K  c0 ]% D' @% N, u  W) F
                "tag": "0e63d806-6fe4-4ffc-99bf-f3dd056574c0"
- f+ L( `) d5 W% a7 }            }
2 R4 L9 R9 x# P0 N8 _2 q1 d2 |        ]
! x# A; o+ B" n: {2 ]    }, D, J* e0 R: ?  c# w. b
检查nova驱动compute_driver = libvirt.LibvirtDriver是否能支持卷扩展 "supports_extend_volume": True! |- x+ m" J2 V. |, h9 _
驱动的支持功能定义在nova.virt.libvirt.driver.LibvirtDriver:
/ i- v/ }6 J) K* Yclass LibvirtDriver(driver.ComputeDriver):
' U; f" V& Z: \1 ^. t  g# {. E    capabilities = {
( k0 c# T8 ^5 O' }. P" l2 G1 r" C        "has_imagecache": True,% j9 h9 q0 |# G
        "supports_recreate": True,) }7 Z5 B$ }7 z9 e
        "supports_migrate_to_same_host": False,, x6 v3 `2 j( A' l3 Y
        "supports_attach_interface": True,. p' J: O; z! y
        "supports_device_tagging": True,$ b( U2 w! r8 z6 g* l1 _: U- W8 P
        "supports_tagged_attach_interface": True,$ m7 W0 J9 V( L' T
        "supports_tagged_attach_volume": True,
" {9 Z1 G; l( P% E/ [! n        "supports_extend_volume": True,
& g! N9 n5 Q7 X9 ?1 B, R    }- F; ^) |8 Y2 T) K

9 d" e) A: N9 x/ {+ T2 `根据卷connection_info找对应的驱动,然后调用驱动的extend_volume方法。& i$ I& o0 C' R' U/ d
    def _extend_volume(self, connection_info, instance):
0 X# X9 I. F; ~! L, p3 T( T6 v+ [# G        vol_driver = self._get_volume_driver(connection_info): I/ Z' N6 v" w$ Z; k
        return vol_driver.extend_volume(connection_info, instance)
4 t. Y- Q+ r- @* F$ h比如Iscsi,就会找nova.virt.libvirt.volume.iscsi.LibvirtISCSIVolumeDriver#extend_volume:" X* a8 q, C* O& P
        new_size = self.connector.extend_volume(connection_info['data'])
; s& o/ s5 \$ r* d/ N7 L在调用ISCSIConnector的extend_volume" h- u2 \$ h" b) o6 L
os_brick.initiator.connectors.iscsi.ISCSIConnector#extend_volume:: z9 G( U, E9 A5 }; t% ~/ h! _: j
        volume_paths = self.get_volume_paths(connection_properties)# G* M: H  Z4 w6 O# k
        if volume_paths:) P( c1 U$ w( A7 ^; ?% s1 a3 e
            return self._linuxscsi.extend_volume(volume_paths), L- X9 F9 Z# Q  z# N0 x/ Z
调用linuxscsi的extend_volume+ e0 }6 U- g; S8 l- F( ~
os_brick.initiator.linuxscsi.LinuxSCSI#extend_volume:/ ^: i% ]( d/ R1 O* \) h
   def extend_volume(self, volume_paths):
2 x0 l  l+ q, Q& E; t  r  ^        """Signal the SCSI subsystem to test for volume resize.1 s! U9 m' P1 Z0 }! P/ c% |6 Z! r

* k& F: \  Q1 H! R1 s6 o: F        This function tries to signal the local system's kernel+ g& ~  z" M/ M6 o# n! n
        that an already attached volume might have been resized.! |  O0 z& g( H0 l5 e0 s9 H
        """
- t* I! j, ?, U4 i; {        LOG.debug("extend volume %s", volume_paths)
7 u' o$ W6 x) ]
5 B5 O: q7 l; s, T        for volume_path in volume_paths:
* x$ Y9 R) ^! g            device = self.get_device_info(volume_path)& e1 p8 E! r$ p
            LOG.debug("Volume device info = %s", device)
. V1 c& x6 K# U1 S            device_id = ("%(host)s:%(channel)s:%(id)s:%(lun)s" %
* M) Y, y9 @& Q- ~                         {'host': device['host'],
! K  p5 c8 P2 I; O, b. l) E                          'channel': device['channel'],& M0 d% q5 s) T: C" m$ y9 d# y: A) O
                          'id': device['id'],6 X* }; C. {6 g4 Q2 v. ~, t
                          'lun': device['lun']})  {% C9 n  m7 k; [5 d$ p# B

/ }* i# c4 P7 g% H/ P            scsi_path = ("/sys/bus/scsi/drivers/sd/%(device_id)s" %; F6 n% q; _8 l$ c2 q
                         {'device_id': device_id})  # a# e' t- j5 M) g
            # 如:scsi_path = u'/sys/bus/scsi/drivers/sd/3:0:0:3'
; I  ]* b, D6 j, H+ `6 a0 p4 d$ B4 `2 P# K9 e0 P( r
            # 获取设备大小
! J0 v9 @0 y$ `* j6 l# C' E! P0 S; m            size = self.get_device_size(volume_path)
3 l' M, K3 c$ z: H6 M; U2 U& ]            LOG.debug("Starting size: %s", size)+ S, F; I) x& k

: b$ [4 Q+ D" Q% ~1 E            # now issue the device rescan) N* I2 q! D5 b; o
            rescan_path = "%(scsi_path)s/rescan" % {'scsi_path': scsi_path}
: Q, d2 R3 S; i            # 如:rescan_path = u'/sys/bus/scsi/drivers/sd/3:0:0:3/rescan'4 b/ \. H. `. E0 O' d* _2 U
3 H1 L8 D, `$ B6 a- I  a
            # 在rescan_path文件里写入1。3 w" j( B% \9 P8 r
            # 对于SCSI设备,对 rescan 文件设置为1 可以使SCSI设备重新扫描。7 K: F5 n) z7 i  F/ Q  B
            self.echo_scsi_command(rescan_path, "1")
  \4 P2 g( _3 ]( f+ t+ n# E. u0 ?            new_size = self.get_device_size(volume_path)1 m  h; X& s, p# D$ h/ I
            LOG.debug("volume size after scsi device rescan %s", new_size)9 f5 W) f7 L4 w; U

" }* A# V( ?: l4 v: z3 C- M, d        # 通过指令`/lib/udev/scsi_id --page 0x83 --whitelisted /dev/disk/by-path/ip-12.24.3.10:3260-iscsi-iqn.1992-08.com.netapp:sn.2d72abb030d511e7875800a098ac0ce9:vs.24-lun-3 `拿到wwnid
( F/ P, N9 v7 x$ F2 i; \3 R        scsi_wwn = self.get_scsi_wwn(volume_paths[0])  e  |$ a5 m. t) a( A2 ~0 {4 f
        # 如:scsi_wwn = u'3600a09803830387461244a62344f6b52'
% s+ E* g3 a" ?6 ^        mpath_device = self.find_multipath_device_path(scsi_wwn)
) q' v, F# y, ~, h2 F. Z& N        # 如果mpath_device非空,说明是多路径磁盘。8 e' z  e8 Y& a- v4 V1 h! S
        if mpath_device:8 V7 d' Z! F1 X
            # Force a reconfigure so that resize works
7 p7 Q- k- _" K            # 执行 `multipathd reconfigure` 重新获取 multipath.conf 配置中变化。* ?6 P* w. Q( [+ @2 x' g% c
            self.multipath_reconfigure()6 e/ I2 o: b" r1 J1 }( s
            # 获取设备大小+ M3 O+ \, T' q: J  k' H: }
            size = self.get_device_size(mpath_device)
; k2 q1 D- k9 e. J            LOG.info("mpath(%(device)s) current size %(size)s",
2 _& E$ P  ]9 E8 T                     {'device': mpath_device, 'size': size})
5 W; p. M+ n0 z1 j& V3 t! z# {+ I
4 a0 R! N4 u0 p+ M            # 调用指令 multipathd resize map multipath_device 重置多路径磁盘的大小
9 X; q+ ]3 e; i7 u! J            result = self.multipath_resize_map(scsi_wwn)
" N% z( s4 [3 \2 J3 V3 Y            if 'fail' in result:
3 y. m. A( J9 I7 [( B* z5 _+ r( H                LOG.error("Multipathd failed to update the size mapping of "% x; E2 ~( i0 m% U: _, l
                          "multipath device %(scsi_wwn)s volume %(volume)s",
% \1 u9 z+ `- t2 _$ J                          {'scsi_wwn': scsi_wwn, 'volume': volume_paths})
' s9 j( I/ R% {; S: e. `                return None
, r1 J: C2 y  A! _' Z5 G# F: [" ~
            # 获取设备大小* b4 u2 T* V( b- V5 ~/ p
            new_size = self.get_device_size(mpath_device)9 Q$ p  [. X! e
            LOG.info("mpath(%(device)s) new size %(size)s",
8 X0 h5 i, w- R7 k  \& ?                     {'device': mpath_device, 'size': new_size})4 V( ~3 N4 t7 A$ L' d: H  p. r. U

  ~# b% J8 K3 W1 v/ f        return new_size) w8 s4 X- ]7 b4 Y
流程简要:
) X+ d" v9 a) p# Q向scsi扫描文件写入 1:tee -a 1 "%(scsi_path)s/rescan",对于SCSI设备,对 rescan 文件设置为1 可以使SCSI设备重新扫描。
$ W* w) y$ S6 |2 p- n  {% D) n& Q4 `% T0 G0 \7 T
/lib/udev/scsi_id --page 0x83 --whitelisted 得到scsi_wwn" t; t' Y# z: p  q+ v

. e2 m& ?6 B3 p. s' R2 N检查多路径设备,先检查/dev/disk/by-id/dm-uuid-mpath-%(wwn)s是否存在,存在则返回路径;如果不存在,则检查/dev/mapper/%(wwn)s,存在则返回路径,不存在返回none。
/ g  ^/ Y$ k" x! _9 C* P
% ~* P. M) n6 k1 S- g如果第3部结果为none,流程结束。  H8 \3 A. c4 @7 C7 H8 v+ u& U, m

* N4 W0 F0 `, A如果第3步查到路径,则需要执行 multipathd reconfigure 重新获取 multipath.conf 配置中变化。
( {( `( U" ^. A' W2 |
, N" f1 N  j7 g8 L8 f- c. r执行multipathd resize map scsi_wwn 重新设置设备大小。多路径磁盘流程结束。. I" N( d4 a) l8 f. L
$ L9 E, t6 }" J% Q, ?/ Q( K
FC和Iscsi驱动都是这样流程。
& j% P6 w5 g1 j  d6 u) H- e5 n) [4 a- ]
' X( e3 ]3 `- [附:
# r/ i4 k! q' Z' J* d' hcentos 如何使用多路径磁盘
/ J( L# b7 V! e1.安装multipath工具
0 i7 c# D' g2 B; k/ h; l# 安装multipath工具% P$ ~/ i9 T7 P" t) \/ ]" |
yum -y install device-mapper device-mapper-multipath
! P# F0 D1 k; _7 P. }! z. A* T& c+ e% O# d) K8 k
#加载multipath内核模块; r7 M' ?" K# R  R8 n
modprobe dm-multipath7 I' j0 S8 `( l9 [* A
modprobe dm-round-robin/ T1 H8 d* A' w7 l! t! a
& P  q' N; _( S! _8 \7 K; ?" l# g
# 拷贝默认配置文件3 v- i0 J  {4 ?- t, {
cat /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf > /etc/multipath.conf, d3 L4 c) z$ R* t, X% y: o
$ F( Z4 Q4 l4 V( V  b
#启动服务% H# B9 Q9 ~0 E# b* u1 P
service multipathd start 或者 /bin/systemctl start  multipathd.service
" e5 m' G% w; V* X/ |: L! T* s; S* ^2.配置nova_compute的配置文件
* ^0 ^; I7 P# g[libvirt]8 H/ U9 {. g1 E
#  iscsi磁盘是否开启多路径,True为开启
$ o( y5 S2 J6 ^: @volume_use_multipath=True; i/ g4 C2 x& Q# s( s

3 o3 e! @- G0 f# V0 `# 建立连接时的rescan次数
* [! K0 ?) K/ L- j+ \: n- P6 tnum_iscsi_scan_tries=5
8 i" t. D3 h2 ]7 N6 J
& F) o0 I5 o/ \- d# 创建iscsi连接使用的iface名称
  s9 ~' C! M: Q" }iscsi_iface=default
. c/ K1 b; a; r2 u修改在线多路径设备容量的方法- g8 H% h, ~& p+ a# x1 |& }6 C
redhat官网上介绍了修改在线多路径设备容量的方法:$ L" _, i! }" T, l1 ~) {

+ B7 I  ~* W* J$ V. sRESIZING AN ONLINE MULTIPATH DEVICE
* y- _, q' g: o+ Q1 U0 YIf you need to resize an online multipath device, use the following procedure., Y! N: [0 [1 d

( v2 \1 f, N! HResize your physical device.6 I. ~2 y7 b% j9 J9 D+ `2 F  T" H
Execute the following command to find the paths to the LUN:
' d# ?9 l9 O2 J# multipath -l
; y5 A8 c; x& a8 t) F* n, b  h* ^/ a7 J
Resize your paths. For SCSI devices, writing a 1 to the rescan file for the device causes the SCSI driver to rescan, as in the following command:- w. `! f% _) O: r# e" i+ d0 g+ ~
# echo 1 > /sys/block/path_device/device/rescan- Z; U2 t+ a4 |: Z9 c0 x7 a
9 V) w5 X& z8 {8 i  @0 o
Ensure that you run this command for each of the path devices. For example, if your path devices are sda, sdb, sde, and sdf, you would run the following commands:+ C" b. a9 f0 r" z
, J6 U( S% f2 `$ ]: ?. a
# echo 1 > /sys/block/sda/device/rescan
  F2 |2 S4 [* M4 Q
; q1 T" C- H; x  y% w  G# echo 1 > /sys/block/sdb/device/rescan
- F) [/ D+ H; U
9 H7 B- h8 `- B; z# L+ E1 K. V# echo 1 > /sys/block/sde/device/rescan
6 i8 p0 h) B+ ~  I$ U3 Q7 P2 l$ a5 @! o( V4 v& d2 U9 g8 {, J5 l
# echo 1 > /sys/block/sdf/device/rescan" p7 G2 N9 L$ p- R: V8 ^

" p3 h( W6 h- C) bResize your multipath device by executing the multipathd resize command:6 G8 |; v# q( O  ]  W4 I
# multipathd resize map multipath_device
+ v( p* B  M. U. f& @) j( z2 h
9 s8 @9 a1 k9 l0 B9 v  L! ], ~5 NResize the file system (assuming no LVM or DOS partitions are used):  v* w" [, H) w2 }/ h. [
# resize2fs /dev/mapper/mpatha: ]# r1 ^* v" {0 m" J

( y$ o/ l9 I/ c5 S看的出,跟nova的处理流程差不多,主要少了resize2fs一步。
% F. R) j4 S3 p+ I0 N
8 x/ E3 S3 \3 e) Z测试过程遇到问题
) L  f! w1 W9 S5 I! s9 e问题: 创建虚机时提示"Host 'localhost.localdomain' is not mapped to any cell"4 H9 B# c. I1 [4 I

3 ~4 j  z( B0 Z8 K+ |7 K7 o1 C* k1 ^解决: 执行 nova-manage cell_v2 simple_cell_setup& G- m, l7 q) f9 i: h4 X' W# ~' I
9 ~: [, t$ Z6 D: g' ^* C6 ^
问题: n-cpu日志提示libvirt 版本过低
* ~9 i- U% d+ X9 @: j# F+ \! F
# U! `0 B- K' s* s( Y解决: 按照以下步骤升级8 A+ G% {% q6 Q; ~/ j( O( O# d$ @# b
$ rpm -qa|grep kvm
7 b  [: W2 G2 Y& g( o  }7 y- D2 j$ rpm -qa|grep qemu-system
! Z' o  R, x2 q  j, \& W+ d$ sudo virsh -c qemu:///system version --daemon" t& A- x% i) g6 N$ k( Z
$ sudo yum remove qemu-system-x86/ W2 ]' }/ x6 C2 P7 V/ q
$ sudo service libvirtd restart4 N; h  P$ h* m. I1 k
$ sudo virsh -c qemu:///system version --daemon& g! g- ?1 i" W) c# J
; b$ A& z; y3 u5 H* Y
问题: c-vol 提示:ERROR oslo_messaging.rpc.server ConnectionFailedError: HTTPConnectionPool(host='12.24.2.18', port=2379):$ ~/ @1 o& r* V: A& U! c% z
Max retries exceeded with url: /v3alpha/lease/grant (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x718cc10>:( a7 v8 o% g1 R' m7 U( c2 j
Failed to establish a new connection: [Errno 111] ECONNREFUSED',))
3 x, z3 b" x" O* b6 SERROR oslo_messaging.rpc.server) ]) C- W5 D, C! X
& K8 ~0 z0 s. y5 [
解决: 配错了coordination。在cinder.conf里吧[coordination]的backend_url注释掉即可。
& x+ n2 w5 h+ e5 ]6 `3 ^8 o/ O4 ?( z' A% i9 v( v# i
! q3 B( w, k3 q" b5 I. v
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 00:57 , Processed in 0.016762 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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