Contents
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ênkvm1
root@kvm1 ~# virsh list Id Name State ----------------------------------------------------
Trênkvm2
root@kvm2 ~# virsh list Id Name State ---------------------------------------------------- 1 centos7 running
Leave a Reply