找回密码
 注册
查看: 4720|回复: 2

使用命令迁移虚机 nova live-migration

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-12-2 00:56:28 | 显示全部楼层 |阅读模式
# nova live-migration --block-migrate d8db2011-217b-433d-aa80-06230203a834 compute2 //控制节点执行迁移" t" u# L- N! f/ g( S2 V. A, |! U
2 J# F: C. k, F4 F- n& t0 L; A# r
tail -f /var/log/nova/nova-compute.log //当前计算节点日志
: j! c" m5 {  o# a# l1 o; I  q, G
6 m, @! z) C% T5 |! M- i2016-02-17 11:31:15.179 11959 ERROR nova.virt.libvirt.driver [-] [instance: d8db2011-217b-433d-aa80-06230203a834]
3 @1 h- e- \/ ]2 B' F  Live Migration failure: operation failed: Failed to connect to remote libvirt URI qemu+tcp://compute2/system:
$ U2 n: D. ?/ n6 h% k- Y/ ]  unable to connect to server at 'compute2:16509': Connection refused5 B9 {: Z( E2 w4 E( l! \

& B8 p- }) y8 _: E& B$ G2 l1 w2 O+ x$ `
tail -f /var/log/nova/nova-compute.log //目标计算节点日志
. r1 B9 \& L# m" R6 s2016-02-17 11:31:14.250 46026 WARNING nova.virt.disk.vfs.guestfs [req-fa8c2e70-9679-493d-b0ba-170a9a0343d5 None]
' z$ a5 w0 S9 ?' j  Failed to close augeas aug_close: do_aug_close: you must call 'aug-init' first to initialize Augeas  z; f( u/ d  U: E2 G
2016-02-17 11:31:15.442 46026 WARNING nova.virt.libvirt.driver [-] [instance: d8db2011-217b-433d-aa80-06230203a834] 5 u, I' c% w! a4 D" K6 L% @
  During wait destroy, instance disappeared.. d6 t, D. H: X# x6 K
2016-02-17 11:31:16.056 46026 INFO nova.virt.libvirt.driver [req-fa8c2e70-9679-493d-b0ba-170a9a0343d5 None]
' }, E1 }0 O) z/ c  [instance: d8db2011-217b-433d-aa80-06230203a834] Deleting instance files /var/lib/nova/instances/d8db2011-217b-433d-aa80-06230203a834_del
+ @% D5 N/ H! l8 K2016-02-17 11:31:16.057 46026 INFO nova.virt.libvirt.driver [req-fa8c2e70-9679-493d-b0ba-170a9a0343d5 None]
6 @+ B% V/ M% p4 ~$ T  [instance: d8db2011-217b-433d-aa80-06230203a834] Deletion of /var/lib/nova/instances/d8db2011-217b-433d-aa80-06
- H: s9 z4 z" Y* j
  |0 |4 n- T  n5 s3 g

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-9-10 16:49:47 | 显示全部楼层
热迁移
7 v' J# G, t+ U. |" Q& N! O
) h* b/ l. k9 a, o0 `; E6 l热迁移(Live Migration,又叫动态迁移、实时迁移),即虚拟机保存/恢复(Save/Restore):将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上。恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。
' \4 k9 N/ b7 _4 u
8 s# e' H# K+ Z2 O( j1 b* U& oopenstack热迁移
3 s4 ?9 N* d- n6 q3 Q5 C; g' v4 [  |; V$ u6 o. ^
OpenStack有两种在线迁移类型:live migration和block migration。Livemigration需要实例保存在NFS共享存储中,这种迁移主要是实例的内存状态的迁移,速度应该会很快。Block migration除了实例内存状态要迁移外,还得迁移磁盘文件,速度会慢些,但是它不要求实例存储在共享文件系统中。( B& e3 F8 r& A' C
* NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
5 {5 u! [) z( w& V+ d( h0 e/ T. N4 J* z; t' _/ G1 B; m

. M/ e) F+ |; aLive Migration 的实现5 D( J& ^; c$ A

) m; M1 w( x/ M: x; ~  |9 W' b1.机器:0 W8 ^" g! }. W1 X% P
jovi-controller 是控制节点 192.168.3.10
* J4 h6 H- {& F2 @9 Pjovi-compute1 是计算节点 192.168.3.12& N/ Z) D: J( }# p* j
jovi-compute3 是计算节点 192.168.3.14
# K2 x) q8 P& e" h+ i实验阶段,为了避免不必要的麻烦,请用命令service ufw stop关闭各个节点的防火墙,同时修改/etc/hosts文件,确定节点之间能互相ping通主机名。利用id nova命令查看下控制节点nova的uid和gid,并记录,在两个计算节点同样利用id nova查看uid和gid是否和控制节点保持一致,如果不一致则利用usermod -u 控制节点的uid nova和gropumod -g 控制节点的gid nova 两条命令进行修改,同时在所有计算节点运行如下命令,保证所有nova相关文件使用新的uid和gid+ n# |( k' v) P+ `
[root@vmcom1-mn ~]#service nova-api stop
+ H- S, y( y/ a# K0 B[root@vmcom1-mn ~]#service libvirt-bin stop; m7 y2 z8 |, u' h
[root@vmcom1-mn ~]#find / -uid 106 -exec chown nova {} \; # note the 106 here is the old nova uid before the change% }: @8 l7 O; |7 `" H5 V
[root@vmcom1-mn ~]# find / -gid 107 -exec chgrp nova {} \; #note the 107 here is the old nova uid before the change
7 Q; d2 C& S9 i5 o/ ^6 p! b[root@vmcom1-mn ~]#service nova-api restart, u" N* g) r+ y0 T
[root@vmcom1-mn ~]#service libvirt-bin restart! `( d1 W! S, x2 p! O

) D9 m* v% p8 i- s& F! |2.修改各个节点的nova.conf
+ A( @1 _! x+ G% {7 fvncserver_proxyclient_address=本机ip
5 k$ z* @( L* q5 rvncserver_listen=0.0.0.0
0 b. X$ u0 P" J9 z# x3 {) p
5 \, l6 l1 z+ Z6 P3.控制节点,配置nfs+ a( Q; V+ `" z- @) |/ M

' I4 h$ B8 H& m6 ?- h* N; ^apt-get install nfs-kernel-server portmap
0 I" d2 ~4 @( D% s% i2 R在/etc/exports中加入/var/lib/nova/instances *(rw,sync,fsid=0,no_root_squash)
( z2 n! Z7 @0 G1 K# U重新启动nfs服务,portmap服务$ l5 ~) F% A1 b; H& z9 j4 ]) }
1 h, S/ |6 X4 C+ P; ?
4.计算节点,配置nfs和挂载' ], h! z$ i7 K' r- l/ w0 ?: m
* Z6 |0 h: W  }! m9 s
apt-get install nfs-common portmap2 g9 B0 Y3 U& |' L6 h% S4 M0 p
chmod o+x /var/lib/nova/instances,确保节点有执行和查找目录的权限2 z1 S8 ~4 ?" [6 H6 D. k# w
在计算节点的/etc/fstab的目录中加入
) ?* J8 e% L' f控制节点ip:/var/lib/nova/instances /var/lib/nova/instances nfs defaults 0 0
6 G7 k+ g1 T4 k挂载目录,执行; i- ^+ z$ l0 p# |* u, h# \
mount -a -v1 p. B$ I, J, a4 _& P
df -k 查看已挂在目录,可以在最后看到远程控制节点的目录已被挂在0 ?: L, ~* z+ j( q+ z2 n; d1 C

/ ^8 N! l( k7 v0 m! M) ^5.修改计算节点的相关的四个配置文件,可以手工如下修改; d% E( ?* F" ]" k' @
& \4 [5 m' H; k- W2 c
附修改脚本:
/ b0 g9 a% \6 u. v- v8 T" Jsed -i '/vncserver_proxyclient_address/d' /etc/nova/nova.conf
/ l2 C! N. U/ ^  o" Vsed -i '/vncserver_listen/d' /etc/nova/nova.conf
7 L. Y1 }# {; a- _sed -i '$a\vncserver_listen=0.0.0.0' /etc/nova/nova.conf7 g% V, t2 {7 a" ], C4 W$ }3 L' A
sed -i 's/#listen_tls = 0/listen_tls = 0/g' /etc/libvirt/libvirtd.conf
* Y/ m9 U2 S6 d7 I& @6 Vsed -i 's/#listen_tcp = 1/listen_tcp = 1/g' /etc/libvirt/libvirtd.conf5 T% S. c! Y6 r6 G8 O
sed -i '$a\auth_tcp="none"' /etc/libvirt/libvirtd.conf
6 u1 i& }; a5 i$ V3 M! V7 Hsed -i 's/env libvirtd_opts="-d "/env libvirtd_opts="-d -l"/g' /etc/init/libvirt-bin.conf  o! |( ^7 U+ S
sed -i 's/libvirtd_opts=" -d"/libvirtd_opts=" -d -l"/g' /etc/default/libvirt-bin) ~# |& `1 @( k# m
sed -i 's/#vnc_listen = “0.0.0.0″/vnc_listen = “0.0.0.0″/g' /etc/libvirt/qemu.conf
( u  O& U) n8 B" @8 V5 _, Fsed -i 's/#user = "root"/user = "root"/g' /etc/libvirt/qemu.conf
( g0 M& I9 k7 v" B3 ysed -i 's/#group = "root"/group = "root"/g' /etc/libvirt/qemu.conf
  d1 _, J" `& c1 k1 T& u9 s& M# {, }+ S7 ^( w6 \8 P* G' p, A
3 i8 }# C5 N: ]" L
6.重新启动libvirt-bin
# A9 _, ]- k* W3 Q5 e, s
# b# N& x/ e" l* H& L" T; W4 Gservice libvirt-bin restart
8 w- `+ X# L- B0 r确定进程已启动。
% ]* g( g2 b2 W  ~ps -ef | grep libvirt- W  `9 Y, D. n
确定有libvirtd -d -l进程存在
, H" y+ S7 Z3 \! x0 Proot 5277 1 004:06 ? 00:00:01/usr/sbin/libvirtd -d -l1 D' V# ^+ W& S2 @# I  b+ j
4 N2 B4 b* J2 W; e9 T, V, J' w
7.重新启动nova-compute服务,portmap服务) O, d; B: B1 [8 O
/ k) R7 {  Y: D
service nova-compute restart
0 W4 F# I+ b7 y- x) Yservice portmap restart
7 s+ t# i+ S! V# D. r. F
6 o0 z0 F" r. P% l: X4 n( q' f3 U8.测试$ e% c$ U* s* @% U2 A

1 {$ N2 o; a* Q  j9 Q2 J* qroot@jovi-controller:~# nova list 查看实例
& a6 R) ~0 i8 H8 t4 V5 xroot@jovi-controller:~# nova show 11fd9622-a948-4cdb-94d0-d8f2558cf179 查看需要迁移的实例$ k* @% P8 Z. @  z( j
root@jovi-controller:~# nova-manage service list查看可用的计算节点
0 R, S! o0 ~7 A$ P6 A# Droot@jovi-controller:~# nova-manage service describe_resource compute-node2查看目标节点资源
1 W  B2 u  P5 [root@jovi-controller:~#nova live-migration 11fd9622-a948-4cdb-94d0-d8f2558cf179 jovi-compute3 迁移成功,应该没有输出。
) H: }6 D- x" T* p% _+ E
5 m& t% ]4 C% P  i6 M' X- I5 C相关问题的总结:  `; l' _8 ]1 a5 ^8 T& D/ C! _

2 `+ q0 v( T5 n( n部署过程中曾遇到两个导致无法迁移成功的错误,一个是在日志文件中发现cpu info incapable,另外一个问题是在日志文件中发现failed to connect remote host uri,经过与最后实验成功的环境相对照,发现实际上导致这两个问题的最终原因是计算节点的计算资源不匹配,例如之前失败的情况是compute1节点 cpu 4核心,8g内存,compute3节点 cpu 2核心,内存4g,所以提示出现上述错误。
; l- Q; o) @9 R& Z) E  _7 g! q/ i$ q6 }" g
本质是因为在openstack源码中,有一段针对热迁移时节点计算资源检测的函数,该函数的作用检测迁移的源节点和目的节点的计算资源是否匹配,从而判断能否承载实例的运行。9 w2 p: R( `# g, y: R$ q- F

0 z. d4 B" g! }, }; l因此后来将两个计算节点都调整为双核,4g内存,按之前方案配置后,即可成功实现迁移。; O8 B) F: ~! W5 |
/ i3 q0 U0 j! Q
另外网上的部署方案都提到了要修改nova.conf中vncserver_proxyclient_address=127.0.0.1,笔者经过测试,这这种方法只适用于单网卡的计算节点,多网卡情况下应该注意填写的是与控制节点以及其他计算节点互联网口的ip,这样dashboard中的vnc才可以成功运行,否则会提示faild to connect to server错误。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-11-28 14:22:26 | 显示全部楼层
2023-11-28 14:29:18.480 7214 INFO nova.compute.resource_tracker [req-0c72b186-8bf1-4121-867a-992b278b9792 5cb9ad243e8a47cba223f287f1c449b8 ed7bb7f0687a4e39bdcaf0893b268727 - - -] Final resource view: name=computen05 phys_ram=515395MB used_ram=94208MB phys_disk=98GB used_disk=300GB total_vcpus=68 used_vcpus=116 pci_stats=<nova.pci.stats.PciDeviceStats object at 0x553db90>+ L$ W) @' k' Q, {0 {  E
2023-11-28 14:29:18.499 7214 INFO nova.scheduler.client.report [req-0c72b186-8bf1-4121-867a-992b278b9792 5cb9ad243e8a47cba223f287f1c449b8 ed7bb7f0687a4e39bdcaf0893b268727 - - -] Compute_service record updated for ('computen05', 'computen05')- n4 S4 P  r6 W. [1 t& \$ l
2023-11-28 14:29:18.500 7214 INFO nova.compute.resource_tracker [req-0c72b186-8bf1-4121-867a-992b278b9792 5cb9ad243e8a47cba223f287f1c449b8 ed7bb7f0687a4e39bdcaf0893b268727 - - -] Compute_service record updated for computen05:computen054 H' a+ k+ l' v# h( u6 ]( _
2023-11-28 14:29:39.921 7214 INFO nova.compute.manager [req-2246c1bb-04b0-4986-b784-2c03ffcd7fbb - - - - -] [instance: 8e1d8050-c042-4182-8213-fe5ed176b022] VM Started (Lifecycle Event)) U, E5 z1 r5 {& G7 U: U
2023-11-28 14:29:40.003 7214 INFO nova.compute.manager [req-2246c1bb-04b0-4986-b784-2c03ffcd7fbb - - - - -] [instance: 8e1d8050-c042-4182-8213-fe5ed176b022] During the sync_power process the instance has moved from host computen01 to host computen05
- w- P" F9 z2 j$ D$ s2023-11-28 14:30:07.393 7214 INFO nova.compute.manager [req-2246c1bb-04b0-4986-b784-2c03ffcd7fbb - - - - -] [instance: 8e1d8050-c042-4182-8213-fe5ed176b022] VM Resumed (Lifecycle Event); p# d0 h' M+ b5 M
2023-11-28 14:30:07.470 7214 INFO nova.compute.manager [req-2246c1bb-04b0-4986-b784-2c03ffcd7fbb - - - - -] [instance: 8e1d8050-c042-4182-8213-fe5ed176b022] During the sync_power process the instance has moved from host computen01 to host computen05. l! p: j( @/ j( ~: L: {
2023-11-28 14:30:07.470 7214 INFO nova.compute.manager [req-2246c1bb-04b0-4986-b784-2c03ffcd7fbb - - - - -] [instance: 8e1d8050-c042-4182-8213-fe5ed176b022] VM Resumed (Lifecycle Event)
$ k1 V: a2 N0 e: |+ g1 ^  M" ~2023-11-28 14:30:07.552 7214 INFO nova.compute.manager [req-2246c1bb-04b0-4986-b784-2c03ffcd7fbb - - - - -] [instance: 8e1d8050-c042-4182-8213-fe5ed176b022] During the sync_power process the instance has moved from host computen01 to host computen05
' S* Q7 T7 T+ `$ h2 X5 N2023-11-28 14:30:08.641 7214 INFO nova.compute.manager [req-b60105aa-e8b4-4e4f-81e8-a8596d1c29af 1e1454d784f945a69d29bef4c246a28d ddaa149332864b669fb166a375c58cac - - -] [instance: 8e1d8050-c042-4182-8213-fe5ed176b022] Post operation of migration started# Y/ E9 C% ^$ ?+ k
2023-11-28 14:30:09.063 7214 INFO nova.virt.libvirt.config [req-b60105aa-e8b4-4e4f-81e8-a8596d1c29af 1e1454d784f945a69d29bef4c246a28d ddaa149332864b669fb166a375c58cac - - -] cpu_type: x86.6 n- E  N8 [) p: M" z* f+ R8 J
2023-11-28 14:30:18.766 7214 INFO nova.compute.resource_tracker [req-0c72b186-8bf1-4121-867a-992b278b9792 5cb9ad243e8a47cba223f287f1c449b8 ed7bb7f0687a4e39bdcaf0893b268727 - - -] Auditing locally available compute resources for node computen05
1 C+ m) D0 T2 n. O8 B2 L* r7 k+ Z2023-11-28 14:30:19.478 7214 WARNING nova.compute.resource_tracker [req-0c72b186-8bf1-4121-867a-992b278b9792 5cb9ad243e8a47cba223f287f1c449b8 ed7bb7f0687a4e39bdcaf0893b268727 - - -] [instance: f6ca6233-fc8e-4e07-8c61-6a7962e7a3af] Instance not resizing, skipping migration.
0 I/ e) i+ j6 ~8 f, j$ W2023-11-28 14:30:19.516 7214 WARNING nova.compute.resource_tracker [req-0c72b186-8bf1-4121-867a-992b278b9792 5cb9ad243e8a47cba223f287f1c449b8 ed7bb7f0687a4e39bdcaf0893b268727 - - -] [instance: 09f3551f-8c46-4a22-a534-de169ff8ff36] Instance not resizing, skipping migration., ^% X! F/ S" `8 z; ^/ @8 S! {
2023-11-28 14:30:19.516 7214 INFO nova.compute.resource_tracker [req-0c72b186-8bf1-4121-867a-992b278b9792 5cb9ad243e8a47cba223f287f1c449b8 ed7bb7f0687a4e39bdcaf0893b268727 - - -] Total usable vcpus: 68, total allocated vcpus: 1200 P& U& Y5 s, J" N& ]3 a
2023-11-28 14:30:19.517 7214 INFO nova.compute.resource_tracker [req-0c72b186-8bf1-4121-867a-992b278b9792 5cb9ad243e8a47cba223f287f1c449b8 ed7bb7f0687a4e39bdcaf0893b268727 - - -] Final resource view: name=computen05 phys_ram=515395MB used_ram=102400MB phys_disk=98GB used_disk=350GB total_vcpus=68 used_vcpus=120 pci_stats=<nova.pci.stats.PciDeviceStats object at 0x553db90>/ g; U  T6 P1 Z/ Z9 o7 \: ]
2023-11-28 14:30:19.533 7214 INFO nova.scheduler.client.report [req-0c72b186-8bf1-4121-867a-992b278b9792 5cb9ad243e8a47cba223f287f1c449b8 ed7bb7f0687a4e39bdcaf0893b268727 - - -] Compute_service record updated for ('computen05', 'computen05')
" ]# z; j/ O( F5 M2023-11-28 14:30:19.533 7214 INFO nova.compute.resource_tracker [req-0c72b186-8bf1-4121-867a-992b278b9792 5cb9ad243e8a47cba223f287f1c449b8 ed7bb7f0687a4e39bdcaf0893b268727 - - -] Compute_service record updated for computen05:computen058 p( `. V8 n, w+ F
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:05 , Processed in 0.016172 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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