Tính năng Live Migrate trên KVM

0
3575

Tính năng Live Migrate trên KVM

1. Tổng quan

Migration là quá trình di chuyển máy ảo từ host vật lí này sang một host vật lí khác. Migration được sinh ra để làm nhiệm vụ bảo trì nâng cấp hệ thống. Ngày nay tính năng này đã được phát triển để thực hiện nhiều tác vụ hơn:

  • Cân bằng tải: Di chuyển VMs tới các host khác kh phát hiện host đang chạy có dấu hiệu quá tải.
  • Bảo trì, nâng cấp hệ thống: Di chuyển các VMs ra khỏi host trước khi tắt nó đi.
  • Khôi phục lại máy ảo khi host gặp lỗi: Restart máy ảo trên một host khác.
  • Trong OpenStack, việc migrate được thực hiện giữa các node compute với nhau hoặc giữa các project trên cùng 1 node compute.

2. Hướng dẫn Live Migrate giữa 2 host KVM

2.1 Chuẩn bị

  • 2 máy chủ có cùng cấu hình
  • Đã cài đặt KVM <Hướng dẫn trên CentOS 7>
    • Máy chủ 1: Cài 1 VM và sẽ Migrate máy đó sang Máy chủ 2
    • Máy chủ 2: Nhận VM từ Máy chủ 1
  • Tắt SELinux trên cả 2 máy
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforce 0
  • Khai báo thông tin các máy chủ KVM vào file /etc/hosts
10.10.0.68 kvm1
10.10.0.69 kvm2
  • Cấu hình cho phép giao thức TCP trong dịch vụ libvirt
    • Sửa file /etc/libvirt/libvirtd.conf
listen_tls = 0  
listen_tcp = 1
tcp_port = "16509"
listen_addr = "0.0.0.0"
auth_tcp = "none"
mdns_adv = 0
  • Giải thích :
    • listen_tls: tắt TLS, mặc định được mở.
    • listen_tcp: bật chức năng kiểm duyệt TCP
    • tcp_port: cấu hình cổng TCP, mặc định là 16509
    • auth_tcp: bật hoặc tắt việc kiểm duyệt bằng mật khẩu
    • mdns_adv: bật/tắt tính năng mdns multicast, mặc định là tắt.
  • Khởi động lại dịch vụ libvirtd:
service libvirtd restart

* Cấu hình iptables cho phép các cổng 16509 và 49152:

#ACCESS kvm
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5909 -j ACCEPT
iptables -A INPUT -p tcp --dport 16509 -j ACCEPT
iptables -A INPUT -p tcp --dport 49152 -j ACCEPT
  • Nếu muốn sử dụng quyền user root để migrate thì sửa file sau:
vi /etc/libvirt/qemu.conf
  • Bỏ comment
user = "root"
group= "root"
  • Cấu hình KVM lắng nghe các kết nối
vi /etc/init/libvirt-bin.conf
exec /usr/sbin/libvirtd -d -l
vi /etc/sysconfig/libvirtd

Bỏ comment dòng

LIBVIRTD_ARGS="--listen"

Khởi động lại và kiểm tra libvirt đã hoạt động

ps -ef | grep libvirt
root@kvm1:~# ps -ef | grep libvirt
root      1180     1  0 14:55 ?        00:00:00 /usr/sbin/libvirtd -d -l
libvirt+  1355     1  0 14:55 ?        00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt libvirt_leaseshelper
root      1356  1355  0 14:55 ?        00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt libvirt_leaseshelper
root      1597  1468  0 15:38 pts/0    00:00:00 grep --color=auto libvirt
  • Kiểm tra kết nối từ kvm1 đến kvm2:
root@kvm1:~# virsh -c qemu+tcp://root@kvm2/system

2.2 Tiến hành Migrate

  • Bước 1: Chọn VM cần Migrate trên máy chủ 1

Liệt kê các VM đang chạy trên Máy chủ 1

root@kvm1 ~# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     centos7                        running

Kiểm tra dung lượng disk mà VM đang sử dụng

virtual size: 20G (21474836480 bytes)
[root@kvm1 ~]# qemu-img info /var/lib/libvirt/images/centos7.qcow2
image: /var/lib/libvirt/images/centos7.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 3.0G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         snapshot1              315M 2018-05-17 23:23:46   00:00:48.415
Format specific information:
    compat: 1.1
    lazy refcounts: false
  • Bước 2: Tạo file image cho VM trên kvm2

Tạo file image cho máy ảo thông tin giống trên kvm1

[root@kvm2 ~]# qemu-img create -f qcow2 -o preallocation=metadata centos7.qcow2 21474836480
  • Bước 3: Tiến hành Migrate VM từ kvm1
[root@kvm1 ~]# virsh migrate --live --copy-storage-all --persistent centos7 qemu+tcp://root@kvm2:16509/system
  • Thông báo:
  • Thành công khi Migration: [100 %]
  • error: Unsafe migration: Migration may lead to data corruption if disks use cache != none
    • Tiến hành tắt VM
    • Chỉnh sửa lại cấu hình của ổ cứng IDE:
      • Vào phần Advance Setting > Performance Option chọn none ở mục Cache mode
    • Tiến hành khởi động lại máy ảo và migrate bình thường.
  • Bước 4: Kiểm tra
Trên kvm1
root@kvm1 ~# virsh list
 Id    Name                           State
----------------------------------------------------
Trên kvm2
root@kvm2 ~# virsh list
 Id    Name                           State
----------------------------------------------------
 1     centos7                        running

3.Tham khảo

Leave a Reply

avatar
  Subscribe  
Notify of