由於qemu-kvm 版本不一致導致openstack遷移失敗
背景: 由於openstack雲平臺壓力過大,擴容了3臺計算節點。基礎環境略。
因以前擴容過計算節點,有現成的指令碼,本以為這次擴容so easy,但過程卻很坎坷,所以記錄以下,以備後患。
流程:
上架、裝機、聯網,非常順利,接下來輪到我裝了,按照指令碼跑了一遍,發現系統升級到centos7.5 了,這裡我偷了懶(沒有做本機yum 源,生產環境不可輕易升級版本,所以一定要做本地yum 源),升級就升級吧,安裝openstack-nova-compute、neutron-linuxbridge-agent,順利進行著。
測試:
先來個cirros 測試一下,可以正常建立例項
熱遷移一下,
1.在dashboard 上面進行,從舊計算節點遷移到新計算節點,成功
2.新節點遷回舊節點發現報錯
查nova-compute的log ,發現沒有任何報錯,很奇怪。
3.在新節點之間做熱遷移,是可以遷移成功的。
這下詭異了,開始排查問題
1.對比配置,一致
2.系統的kernel 不一致,centos 7.5 、centos7.4
3.nova 版本 不一致,一個9.1.2,一個是9.1.1
4.neutron版本一致
5.libvirtd 版本不一致,一個3.9 一個是3.2
改吧:
1.先對kernel 進行降級,這個不費事,下載舊節點kernel 版本,安裝也順利,
結果
測試熱遷移,結果報錯,
2.nova 版本 升級,把舊版本升級到新版本9.1.2,直接yum update openstack-nova-compute 即可,不用擔心配置檔案,是不會覆蓋的
結果
測試還是報錯
3.libvirtd 版本升級到3.9 測試還是報錯
在上述3個過程中,遷移失敗的時候都沒有任何報錯,這就很奇葩,搞得也很無從下手。
去google 尋找靈感,也沒有找到合適的方法。
上述經歷了一次重灌機器,真心這麼人( ⊙ o ⊙ )啊!
去各種openstack qq群把問題丟擲來,有個qq 好友讓我看看,系統messages 的日誌,有沒有記錄以下錯誤
看messages 的時候發現自己遺漏一個日誌,那就是libvirtd的日誌,以前報錯就查nova 、neutron或者是controler節點的日誌,忘記了openstack 最底層就是libvirtd,找到這個例項的libvirtd 日誌,如下:
tailf /var/log/libvirt/qemu/instance-0000057
instance-00000570.log instance-00000573.log
[[email protected] qemu]# tailf /var/log/libvirt/qemu/instance-00000573.log
2018-11-14 03:41:26.879+0000: starting up libvirt version: 3.9.0, package: 14.el7_5.8 (CentOS BuildSystem <http://bugs.centos.org>, 2018-09-26-18:30:11, x86-01.bsys.centos.org), qemu version: 2.10.0(qemu-kvm-ev-2.10.0-21.el7_5.7.1), hostname: bjyz-compute27.jkabc.com
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin QEMU_AUDIO_DRV=none /usr/libexec/qemu-kvm -name guest=instance-00000573,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-10-instance-00000573/master-key.aes -machine pc-i440fx-rhel7.4.0,accel=kvm,usb=off,dump-guest-core=off -cpu Skylake-Client-IBRS,ss=on,hypervisor=on,tsc_adjust=on,pdpe1gb=on,mpx=off,xsavec=off,xgetbv1=off -m 64 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid d5b6f7c0-c07f-455a-99c6-c9e288c7f387 -smbios 'type=1,manufacturer=RDO,product=OpenStack Compute,version=16.1.1-1.el7,serial=aef6ab5e-d517-4838-bfc8-26c8c523d939,uuid=d5b6f7c0-c07f-455a-99c6-c9e288c7f387,family=Virtual Machine' -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-10-instance-00000573/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=delay -no-hpet -no-shutdown -boot strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x4 -object secret,id=scsi0-0-0-0-secret0,data=w3czKMHbDQ+MJgLid+T/N5/dMNk3y3G6sCqQHdktWyE=,keyid=masterKey0,iv=UqhyBquz88C33+Y5oInq5A==,format=base64 -drive 'file=rbd:vms/d5b6f7c0-c07f-455a-99c6-c9e288c7f387_disk:id=cinder:auth_supported=cephx\;none:mon_host=192.168.200.20\:6789\;192.168.200.21\:6789\;192.168.200.22\:6789\;192.168.200.23\:6789\;192.168.200.24\:6789,file.password-secret=scsi0-0-0-0-secret0,format=raw,if=none,id=drive-scsi0-0-0-0,cache=writeback,discard=unmap' -device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0,bootindex=1 -netdev tap,fd=33,id=hostnet0,vhost=on,vhostfd=35 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=fa:16:3e:ee:e3:a1,bus=pci.0,addr=0x3 -add-fd set=2,fd=37 -chardev pty,id=charserial0,logfile=/dev/fdset/2,logappend=on -device isa-serial,chardev=charserial0,id=serial0 -device usb-tablet,id=input0,bus=usb.0,port=1 -vnc 0.0.0.0:5 -k en-us -device cirrus-vga,id=video0,bus=pci.0,addr=0x2 -incoming defer -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 -msg timestamp=on
2018-11-14 03:41:26.879+0000: Domain id=10 is tainted: high-privileges
2018-11-14T03:41:26.935254Z qemu-kvm: -chardev pty,id=charserial0,logfile=/dev/fdset/2,logappend=on: char device redirected to /dev/pts/6 (label charserial0)
2018-11-14T03:41:27.308111Z qemu-kvm: warning: TSC frequency mismatch between VM (2099998 kHz) and host (2099997 kHz), and TSC scaling unavailable
2018-11-14 05:20:08.325+0000: initiating migration
2018-11-14 05:20:08.584+0000: shutting down, reason=migrated
2018-11-14T05:20:08.584976Z qemu-kvm: terminating on signal 15 from pid 137281 (/usr/sbin/libvirtd)
發現有個warning:qemu-kvm: warning: TSC frequency mismatch between VM (2099998 kHz) and host (2099997 kHz), and TSC scaling unavailable
艹,這個是qemu-kvm 版本不匹配啊,對比了一下新舊節點的qemu-kvm版本,確實不一樣,
新節點:
qemu]# qemu-img --version qemu-img version 2.10.0(qemu-kvm-ev-2.10.0-21.el7_5.7.1)
舊節點:
qemu-img --version qemu-img version 2.9.0(qemu-kvm-ev-2.9.0-16.el7_4.14.1) Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers 應該是這個問題了,底層版本不一樣,日誌肯定到不來 nova 那,這個估計也是pike 社群版的一個Bug 。
先升級節點: ##不用擔心 該節點上的例項是否down ,直接
yum update qemu-img
重啟systemctl restart openstack-nova-compute libvirtd ,
再次測試,openstack -nova-compute 的log 日誌開始列印了,例項也順利遷移。
此次排查經歷2個工作日,血的教訓,升級需謹慎,自己的坑自己填。