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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2023-12-15 11:00:17 | 显示全部楼层 |阅读模式
openstack 云计算卷热扩容相关文档
' y; w( d0 W1 Y2 @; x* n3 ?9 m[toc]
) j" s( x/ q7 P' W; U+ t9 u- x5 Z, Q
指令
+ q2 b, `' y9 d2 P7 wusage: cinder extend <volume> <new_size>
  p2 p* y& h0 U- w6 CAttempts to extend size of an existing volume.
- o5 s$ {  Y7 n" U( I9 RPositional arguments:, W# n9 R& ?; r
  <volume>    Name or ID of volume to extend.
1 m5 Q4 x2 z( C9 N0 `8 Q4 F" f  <new_size>  New size of volume, in GiBs.
( K* m: @  u/ z4 W/ S% I6 D* U" k功能说明) A" [2 q7 H2 P' n6 ^( n$ [

6 a. L! w5 j, c/ ]最新的openstack()代码支持了热扩容功能:
* w6 c  j7 p, X/ L
4 i6 `' P5 @; M7 P4 o% c9 YAdd ability to extend 'in-use' volume. User should be aware of the
& o: w1 P9 m2 J. ewhole environment before using this feature because it's dependent
+ n; a, P3 B2 u9 K+ Eon several external factors below:' B6 ^5 a" {9 q- `5 b7 t
1. nova-compute version - needs to be the latest for Pike.1 B- R' R; r, i8 `3 {" Z$ E: [2 ?% g
2. only the libvirt compute driver supports this currently./ V! M3 D& ]3 @2 D1 _' u
3. only iscsi and fibre channel volume types are supported
; j0 M  Y0 i" r( Hon the nova side currently.0 Z% Z% U8 f' A. f/ Q
Administrator can disable this ability by updating the
& K) l# @7 j' I  z- z'volume:extend_attached_volume' policy rule. Extend in reserved
: f9 l/ _$ E; U, H$ \8 Lstate is intentionally NOT allowed.
+ }% ?: M- N6 k* o! ?) U7 t% ?+ M( l' B0 p& E
注意:
  k" ^! W$ D% e1 n, f; U0 V  f  m' \* D  W+ O) z
目前只有 libvirt 驱动能支持,且只有 iscsi 和 fibre channel 协议的卷类型能支持!0 L- ~' d" j. G  a& [( T) u
cinder、nova做完热扩容后,fdisk -l查看可以看到磁盘大小变大,但是之前做的文件系统的大小是不会变化的,df -h 的结果跟扩容前一样。用户还必须用resize2fs 指令自行resize文件系统!
6 Y  }8 c3 U8 _+ I/ C0 v《openstack 官网对于热扩容在 CINDER 方面的说明》
' ^2 T. Q# [; l
& l9 O( n$ R0 w: ?, \《openstack 官网对于热扩容在 NOVA 方面的说明》
% E5 O# r1 U- P" k+ @$ J2 f, ^3 Q) }: t. Z7 p
Cinder方面代码4 p* H2 W8 H( q" T( C% V! s
Cinder 方面其实没有什么改动,跟冷扩容做的事一样,扩容后的size必须是整数GB且大于扩容前size。核心实现是调用卷驱动里的方法,如netapp,调用的是cinder.volume.drivers.netapp.dataontap.client.client_base.Client#do_direct_resize实现。唯一的区别是,扩容后,会调用nova api。
  C$ C3 v( [* Z: Y1 t' y" `, Y2 I. O+ Z# d9 N
cinder.api.contrib.volume_actions.VolumeActionsController#_extend:3 }8 E- M8 B5 K2 a9 R# T- b
# 如果版本是  且 卷状态是in-use,则走热扩容
3 y4 e# _  y) }8 X! \- g- ^) Pif req_version.matches("3.42") and volume.status in ['in-use']:
0 f+ J$ ^+ ~( _# B    self.volume_api.extend_attached_volume(context, volume, size)* b& u. e( K  j5 [
else: # 否则,冷扩展7 z! J- Z7 g( Z3 R, M
    self.volume_api.extend(context, volume, size)
) A" V& R; t9 R
- r# }4 ~. H9 c- O/ acinder/volume/manager.py里调用nova api,通知nova要扩展卷:' }& P' K4 Q3 q% I, E# a( W
if orig_volume_status == 'in-use':$ a% V# F7 q3 J! [) {7 E) f5 N8 Q
        nova_api = compute.API()
' o0 m/ Q- J+ G0 d( O        instance_uuids = [attachment.instance_uuid6 `9 O  }! F* {* t
                          for attachment in attachments]% @: i/ s, s+ m6 }4 G& t- y
        nova_api.extend_volume(context, instance_uuids, volume.id)) w% U1 E! v% j) Y2 m
这里调用nova client 里的:3 m& s3 M* Q/ J- z" C/ E5 w1 K
novaclient.v2.server_external_events.ServerExternalEventManager#create:0 j1 n/ |% C% `5 ^( J

0 |0 f7 _9 X$ a0 T! mclass ServerExternalEventManager(base.Manager):5 M$ F$ I7 u& u- I; b3 o% q9 }- H
    resource_class = Event
. i1 H/ s% z- u7 |6 S
0 U, s& A) i. N/ Y2 `    def create(self, events):
  M. L2 k5 E/ j- E+ h: X, q        """Create one or more server events.
8 Z8 S9 O% I* p/ H2 n/ a/ l7 \4 I# p% L1 W$ B1 Z! A
        :param:events: A list of dictionaries containing 'server_uuid', 'name',: B& t" i1 d; M  o1 j5 D4 Q
                       'status', and 'tag' (which may be absent)" d% N8 W$ j/ g! P" h3 d0 C
        """
. I" ]# T  y! C' @0 Y1 N( |- Y
# @5 P' F6 l1 e2 p. C4 N- x6 W        body = {'events': events}! @( e; a) ?0 z9 k. @" }
        return self._create('/os-server-external-events', body, 'events',
/ n2 V* X# ]- J) z, O! W7 w: R1 K                            return_raw=True)
7 y, n' W! \$ }4 e0 m" f' @" }- D$ g  ]8 N
'events':
$ B$ w6 k) ~% E9 v! A3 J% Z0 W) z) ]  e% u9 |( e+ G
{'name': 'volume-extended',8 H( ]+ f$ g* z+ {
'server_uuid': server_id,
, p' j% V2 S3 E* n5 ~'tag': volume_id}
* s& `- s) [: T5 q0 KNova方面代码. @" ?  G" t+ x1 a9 t( t
Nova将使用现有的外部事件API端点监听来自Cinder的附加卷扩展通知。收到通知后,Nova将使用os-brick触发主机上的设备重新扫描,以发现卷大小的变化。
8 A; O% M! R" R0 H1 n3 P+ Q- \0 M1 h2 g' [) w: H  B* u$ B1 I
nova api '/os-server-external-events':, a7 o0 L3 Q& l4 `9 _, H: P% w
; X# j) G& h7 }2 h2 S
request:
. ]. O& R" ?( ?: {; `) A  {4 }    {
7 g; g( t. I# o5 y8 h7 S7 Y        "events": [8 i* f. f2 t& s# D) I
            {- W" Y4 `- A' c& ]* y. B* ?& B1 X; \
                "name": "volume-extended",
7 {" r* p5 M- u8 a# b6 v, f                "server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3",
: p% I+ b8 K( X+ t" Y, u                "tag": "0e63d806-6fe4-4ffc-99bf-f3dd056574c0"
+ @6 d9 n6 i) m' V            }
' _! ^8 @& }9 G4 N0 S! R3 H        ]
5 q+ l( @% b1 D5 c" x, A+ |% o    }
' M( d: L/ j2 B; S7 {! J( O" }response:
1 \* O3 X) B0 ^6 z/ E    {8 r& c, z/ K# I2 |$ \. |  b
        "events": [
( J# [3 M+ p+ E# H( {& ~# j" A) V            {( H+ R* v4 j: _" A/ h9 l" {7 t
                "name": "volume-extended",6 l0 h) Z9 J* d! F0 P
                "status": "completed",
2 z3 r, e& x* q6 X" s                "code": 200,9 _% E* z7 {$ X/ b( N
                "server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3",
0 s( E2 q' E  ~8 F4 K$ D                "tag": "0e63d806-6fe4-4ffc-99bf-f3dd056574c0"
/ c3 d) v% U1 z; t            }* |$ [/ N/ m( l" X8 N' o4 p
        ]
, U8 s( ~1 b1 n    }3 \1 g. _! J5 Z) ^! K
检查nova驱动compute_driver = libvirt.LibvirtDriver是否能支持卷扩展 "supports_extend_volume": True  l6 z1 o1 \3 A
驱动的支持功能定义在nova.virt.libvirt.driver.LibvirtDriver:
- G6 A0 k; i( tclass LibvirtDriver(driver.ComputeDriver):
) ^# z! J" ?1 h5 F4 G    capabilities = {+ t- m* J. Y0 S, g& d# e: P+ z7 k
        "has_imagecache": True,' n+ h" I1 [) @2 G+ U1 Q! f* b
        "supports_recreate": True,
6 X& v6 A6 h  K, P" n6 I0 E        "supports_migrate_to_same_host": False,
6 O! y4 ?$ h5 q. D2 o        "supports_attach_interface": True,! P& M% |- S; q4 A% M+ y
        "supports_device_tagging": True,
# M7 R/ n0 H* p  L( f1 T; R        "supports_tagged_attach_interface": True,3 B" J6 u# c% t- y) Q
        "supports_tagged_attach_volume": True,& }# v! k) {6 m& V
        "supports_extend_volume": True,
' ^- a  t" U' Z' q' S0 l: ~% k    }
4 d& i8 p1 L6 J. P  I5 U
' R# f( T. W! Q% C1 M1 U根据卷connection_info找对应的驱动,然后调用驱动的extend_volume方法。
  D$ R/ U9 @" ^& s    def _extend_volume(self, connection_info, instance):
9 n' Z  I+ P, A4 r. n        vol_driver = self._get_volume_driver(connection_info)
- |+ W  Q& ]# g0 M# ~7 m        return vol_driver.extend_volume(connection_info, instance)
/ e8 w, a0 U# r! D# T* s; p比如Iscsi,就会找nova.virt.libvirt.volume.iscsi.LibvirtISCSIVolumeDriver#extend_volume:
9 U+ X( q2 ?! T8 b& @3 M        new_size = self.connector.extend_volume(connection_info['data'])1 m3 v, g0 C' P" i! E0 F# O
在调用ISCSIConnector的extend_volume  G! j. H8 D$ g6 I* T6 d
os_brick.initiator.connectors.iscsi.ISCSIConnector#extend_volume:
  ^& M% Y0 o7 L6 ^9 C        volume_paths = self.get_volume_paths(connection_properties)
- Z5 b( o( ?/ {( ~        if volume_paths:$ x6 ~: p; r* q$ A
            return self._linuxscsi.extend_volume(volume_paths)
. U7 i2 [! Y! J. s( }& a' O0 M调用linuxscsi的extend_volume: [5 Q- ?! D. _
os_brick.initiator.linuxscsi.LinuxSCSI#extend_volume:
, [( O6 G2 c- h1 i   def extend_volume(self, volume_paths):# h; }$ A- q% R* {1 ]
        """Signal the SCSI subsystem to test for volume resize.6 ]+ o2 {3 r- v& t  d! I3 n
; `7 Z, h7 N+ x% B4 F" I4 k2 l* P
        This function tries to signal the local system's kernel% w- M/ P, P- j" ^6 X
        that an already attached volume might have been resized.4 Z, |% k/ T& B) m" V* V" f- x
        """
0 r7 V  i% k3 q* t3 e/ p: \8 H        LOG.debug("extend volume %s", volume_paths), v0 r  ]- O0 B# i1 L, s  n
. K, q9 w! d0 E6 v: \5 U
        for volume_path in volume_paths:' d: c$ b- V3 N( X9 P* n* S- M. {
            device = self.get_device_info(volume_path)
5 ~$ g* [0 f' S" z& s9 V            LOG.debug("Volume device info = %s", device)
- S2 v, n3 i/ `5 r            device_id = ("%(host)s:%(channel)s:%(id)s:%(lun)s" %
; f# X! _$ q% c' @                         {'host': device['host'],& F4 Z: z# M; N; j6 s$ O2 A
                          'channel': device['channel'],
. W+ P- l( ~+ Q' T9 K; n: e" r                          'id': device['id'],( v' D( r5 t5 V- l1 M% w
                          'lun': device['lun']})
, o4 f+ b9 n# E6 @( S# P
$ w) Y# L3 `+ a! w1 Z            scsi_path = ("/sys/bus/scsi/drivers/sd/%(device_id)s" %
1 C& o! O2 m0 G. a5 D! d                         {'device_id': device_id})  
# ^- q( Z0 }# I! O8 u& y            # 如:scsi_path = u'/sys/bus/scsi/drivers/sd/3:0:0:3'
4 t+ }* ~5 w2 E* J: s8 @$ L, e  J5 Q4 ~" d! D3 g6 b
            # 获取设备大小
; B; ]( g& r" F3 @# X            size = self.get_device_size(volume_path)
( C# B1 y: e) g$ w. ~4 E            LOG.debug("Starting size: %s", size)5 p5 o0 [5 g. Q8 ]: O4 p8 _

! O. z: y/ ]  [# T/ a8 k5 y            # now issue the device rescan1 |  ?5 @$ t% F' C  v9 h; A
            rescan_path = "%(scsi_path)s/rescan" % {'scsi_path': scsi_path}
# o' |  l- C( A. a" U  l            # 如:rescan_path = u'/sys/bus/scsi/drivers/sd/3:0:0:3/rescan'
" G6 ~1 E1 J5 Y6 D) O# u! J) L& P& e$ [; u
            # 在rescan_path文件里写入1。
, H2 [  A' F- Z0 \# W: n$ z% I            # 对于SCSI设备,对 rescan 文件设置为1 可以使SCSI设备重新扫描。! s2 S$ Q: L& h
            self.echo_scsi_command(rescan_path, "1")+ e) _& w5 o+ X2 X9 y
            new_size = self.get_device_size(volume_path)
8 K4 b7 P1 {+ z, w6 F5 F$ P4 M            LOG.debug("volume size after scsi device rescan %s", new_size)  v. Q7 A3 l4 v8 v3 N
5 L8 r5 q1 f. ^  e) ^
        # 通过指令`/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 `拿到wwnid6 z6 |1 q2 F$ E# y0 L
        scsi_wwn = self.get_scsi_wwn(volume_paths[0])
1 q+ Q& o4 o9 @        # 如:scsi_wwn = u'3600a09803830387461244a62344f6b52'
1 y: [- w, F% f5 Q& Q        mpath_device = self.find_multipath_device_path(scsi_wwn)
! l% W/ u! i5 d& E        # 如果mpath_device非空,说明是多路径磁盘。
+ A8 V  |5 d$ B3 V8 X        if mpath_device:
; W$ F! [! b+ Y+ @& i5 D- }7 H! _            # Force a reconfigure so that resize works5 E& v  }" u8 w! t
            # 执行 `multipathd reconfigure` 重新获取 multipath.conf 配置中变化。" s3 Y$ n8 l% ?5 O/ F* a
            self.multipath_reconfigure()
! J0 n# o# {( D( s- y9 |7 |: p            # 获取设备大小' J& O. ~0 B) [/ n- j/ ~
            size = self.get_device_size(mpath_device)$ _5 _. b/ h) H4 ?
            LOG.info("mpath(%(device)s) current size %(size)s",
- R3 k' K. Z8 ~7 b; N! ]0 S" V                     {'device': mpath_device, 'size': size})
8 G- `! V  r7 e- `$ G
! Y0 f. w; H' p: b            # 调用指令 multipathd resize map multipath_device 重置多路径磁盘的大小
( i2 \7 d8 g; ~3 T1 h            result = self.multipath_resize_map(scsi_wwn)3 A! ?) E2 g) X- z; P, Y4 V1 f/ d
            if 'fail' in result:# d- @' B- |5 N) h% a  H. s2 f
                LOG.error("Multipathd failed to update the size mapping of "
) U% r' h! b# a                          "multipath device %(scsi_wwn)s volume %(volume)s",
- n( I/ b) l4 m* F                          {'scsi_wwn': scsi_wwn, 'volume': volume_paths})
$ W* B8 z# ?! q! Y* x/ J                return None
) s7 I: ^0 m. q8 @+ T3 G( G9 B% g; z) R0 }$ k- e' d
            # 获取设备大小
. S( `& L$ w8 G* ?: e            new_size = self.get_device_size(mpath_device)
( U# ?$ P' Y; l$ L# _- X- r! f: S            LOG.info("mpath(%(device)s) new size %(size)s",
9 ~9 J( t2 Q; {  a5 T                     {'device': mpath_device, 'size': new_size})- k2 V# I2 K1 d$ j
/ j; L9 }4 J$ P+ V: S- K
        return new_size, W, |0 w1 s& h+ A0 s
流程简要:* ^2 ?/ H. ?" w* g& L
向scsi扫描文件写入 1:tee -a 1 "%(scsi_path)s/rescan",对于SCSI设备,对 rescan 文件设置为1 可以使SCSI设备重新扫描。
% ?* v- s5 d% R$ c3 w. w  j; O
' L% }7 z: ^% y! a3 `5 d- s+ L/lib/udev/scsi_id --page 0x83 --whitelisted 得到scsi_wwn: a) z1 @  w* X' I- D7 B0 {
" e& [" \: j5 Y' a9 r8 S
检查多路径设备,先检查/dev/disk/by-id/dm-uuid-mpath-%(wwn)s是否存在,存在则返回路径;如果不存在,则检查/dev/mapper/%(wwn)s,存在则返回路径,不存在返回none。
* p) @# n! z/ H3 B% V1 c2 y5 ]: q( z* d! Y
如果第3部结果为none,流程结束。2 z2 _# ?9 L  {: m( Z( R* n

9 O: Z  P( @: Q如果第3步查到路径,则需要执行 multipathd reconfigure 重新获取 multipath.conf 配置中变化。
4 x5 W5 _8 O9 O* h/ n0 Q
% X# s9 Y1 T& t& c执行multipathd resize map scsi_wwn 重新设置设备大小。多路径磁盘流程结束。
( g5 j$ f" i' y
( e9 J8 N! P3 }: u( {' Y* }; d' }FC和Iscsi驱动都是这样流程。& p# t3 q; ?* Y9 u# c; G3 X
0 C0 I7 Y: z8 }: N& A8 R
附:8 o* c% y6 f  P, c+ j, n0 \
centos 如何使用多路径磁盘7 n  b7 b; i$ ?+ `5 _) K- C' y
1.安装multipath工具
0 C6 w" W" g: J# 安装multipath工具% `' d! L7 J  x& _+ \/ y) Q- h
yum -y install device-mapper device-mapper-multipath( l& B, r  |$ R2 M. @4 w, S

8 ]( y, J4 i& I) O' G5 ?#加载multipath内核模块
, [, X# c0 ?& _1 ~7 {9 y) u4 h* Imodprobe dm-multipath
0 {7 J/ T  L$ |, F, R. A- h9 Imodprobe dm-round-robin
; y. G  N, A( G+ b( I7 U$ @( e; W/ `" Y
# 拷贝默认配置文件
: v; V' _; Q1 ~) [- ccat /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf > /etc/multipath.conf7 a! I; S" a1 ]; s5 {* W' P
( V& Q4 K2 b7 l
#启动服务
5 W7 H2 C! i9 ?$ Kservice multipathd start 或者 /bin/systemctl start  multipathd.service
8 b& s0 N3 A) V% N  C: q$ _2.配置nova_compute的配置文件
3 V" }/ @( r3 ]  k* W( y! @[libvirt]
2 ?# Q, n2 C* T+ E. i#  iscsi磁盘是否开启多路径,True为开启
; C% F# K) q) A# U( qvolume_use_multipath=True) q+ O, }+ z3 c
7 f- N( n( v  u( Q, I- ^
# 建立连接时的rescan次数& O6 K: i8 U" h' s1 u
num_iscsi_scan_tries=5- C" N+ e  |/ X, N3 X5 k' C9 v

2 b3 S: Y, M& h5 M' n9 ]# 创建iscsi连接使用的iface名称
9 s9 d% J7 w% r5 [7 giscsi_iface=default( r( A3 l& X% z
修改在线多路径设备容量的方法
+ e" _( g0 X7 b8 v/ u1 e9 Q4 v3 C; qredhat官网上介绍了修改在线多路径设备容量的方法:
/ J+ Z+ Z7 R/ P0 x4 ~
: Z0 A/ k: o6 H4 X% H7 wRESIZING AN ONLINE MULTIPATH DEVICE
+ L8 n- F4 F2 l8 u! y4 }8 ]If you need to resize an online multipath device, use the following procedure.
% Z" S# R, o& d6 Z' b/ D' T, ~5 x% b4 C7 _1 C
Resize your physical device.! L; P) Y5 x, ]7 C9 }1 a0 D
Execute the following command to find the paths to the LUN:, i  Q; |6 o' R
# multipath -l) C5 Q: }* B6 Z% Q1 i

& q  w9 `# d9 t: aResize 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:6 k$ I1 h( |3 m  \9 K2 E6 H% I
# echo 1 > /sys/block/path_device/device/rescan
1 ]; C2 P& w& f0 k9 V( o3 S) S& `( N- c4 F! {
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:0 U3 p' G+ V+ k7 J1 F1 |9 k3 `
  y1 d) `: K# I3 R8 _' K
# echo 1 > /sys/block/sda/device/rescan
  g8 I5 V/ K. u% O, H! ?# `! k0 P7 C4 F# J) r
# echo 1 > /sys/block/sdb/device/rescan
) c( X) y- Y6 C, S! g2 p' W2 H" z$ K. @: R) X
# echo 1 > /sys/block/sde/device/rescan
* T. k6 d7 U0 @4 i( q- G6 a2 k, F1 ^9 F
- p5 n" k' R1 ~' _2 o6 Y# echo 1 > /sys/block/sdf/device/rescan
4 s9 @9 R$ X! P) R! s" e9 E6 R$ O4 d) h' E" N) C; c8 I" d, r
Resize your multipath device by executing the multipathd resize command:2 Y$ ~3 ]7 B: T0 n
# multipathd resize map multipath_device7 Q' z5 [; X( L; B9 [
' }# V1 I2 Q) |/ ~. u: ?
Resize the file system (assuming no LVM or DOS partitions are used):
' k4 p1 y4 {3 ~; N# resize2fs /dev/mapper/mpatha
1 [3 k# N! x5 I  D4 i7 \
# I' c7 Q* `6 c& g- u看的出,跟nova的处理流程差不多,主要少了resize2fs一步。
6 [; m0 O. w) R& M) A0 I# c% u. x3 ?7 V* C; ^8 \
测试过程遇到问题
- a% m, E' G0 _2 N7 f! b( J问题: 创建虚机时提示"Host 'localhost.localdomain' is not mapped to any cell"* e1 r5 W& Q' ?5 U1 Z6 M. ?
" g( y$ @* j" M/ Q2 s7 @
解决: 执行 nova-manage cell_v2 simple_cell_setup! ~% ]7 L; F+ i7 e7 v) V' A( @7 j
: \5 _; S. l, a6 Y  B: ^
问题: n-cpu日志提示libvirt 版本过低# x' J! J# ?1 m# h

& k2 Z: |7 g- Q' H3 k& s解决: 按照以下步骤升级+ N; q0 o1 C5 u1 u; A
$ rpm -qa|grep kvm5 u6 s- @0 J& K5 u
$ rpm -qa|grep qemu-system
) ?& X3 h$ d, D! o$ sudo virsh -c qemu:///system version --daemon
* ?$ a. u1 G$ ]5 k7 a6 }0 y$ sudo yum remove qemu-system-x86
6 e' E' R  t9 @$ sudo service libvirtd restart
; ?, j0 ^. `9 u5 t6 o" t4 L- B$ sudo virsh -c qemu:///system version --daemon, p2 }0 M, c: k; H0 P) B

9 {+ @1 ?$ w( d问题: c-vol 提示:ERROR oslo_messaging.rpc.server ConnectionFailedError: HTTPConnectionPool(host='12.24.2.18', port=2379):
! {2 p- f+ N, G3 \Max retries exceeded with url: /v3alpha/lease/grant (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x718cc10>:4 Z  F' a& ?9 l) \' G3 }
Failed to establish a new connection: [Errno 111] ECONNREFUSED',)), ~6 i- Z. I! h$ T" U
ERROR oslo_messaging.rpc.server
% ]9 ?+ @- ^: A1 I2 I+ R* r# Q$ y! v/ u9 V
解决: 配错了coordination。在cinder.conf里吧[coordination]的backend_url注释掉即可。
/ f& O( |% o" h0 `: i, o7 Z4 u) K9 ?

$ l& e) U( w0 W+ G' S! G
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:01 , Processed in 0.016626 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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