COLO-FT试用

COLO-FT

原理

架构

试用

创建虚拟机先主后备,执行命令先备后主
Primary Node: 10.3.6.10
Secondary Node: 10.3.6.11
qemu版本为4.0.0-rc3

qemu-ifup

#!/bin/sh
switch=br0
if [ -n "$1" ]; then
        ip link set $1 up
        brctl addif ${switch} $1
fi

qemu-ifdown

#!/bin/sh
switch=br0
if [ -n "$1" ]; then
        brctl delif ${switch} $1
fi
  1. 创建镜像
# mkdir /mnt/ramfs
# qemu-img create -f qcow2 /mnt/ramfs/active_disk.img 10G
# qemu-img create -f qcow2 /mnt/ramfs/hidden_disk.img 10G
  1. 编译COLO
# ./configure --target-list=x86_64-softmmu --enable-debug
# make –j$(nproc)
  1. 执行命令
Primary Node
# /root/COLO-FT/qemu-4.0.0-rc3/x86_64-softmmu/qemu-system-x86_64 -enable-kvm -m 8192 -smp 4 -boot c -qmp stdio -name primary \
-machine pc-i440fx-4.0,accel=kvm,usb=off,dump-guest-core=off -vnc :7 -cpu qemu64,+kvmclock -S -device piix3-usb-uhci \
-device usb-tablet -netdev tap,id=hn0,vhost=off \
-device virtio-net-pci,id=net-pci0,netdev=hn0 \
-drive if=virtio,id=primary-disk0,driver=quorum,read-pattern=fifo,vote-threshold=1,children.0.file.filename=/home/centos7.6.qcow2,children.0.driver=qcow2 \
-chardev socket,id=mirror0,host=10.3.6.10,port=9003,server,nowait \
-chardev socket,id=compare1,host=10.3.6.10,port=9004,server,nowait \
-chardev socket,id=compare0,host=10.3.6.10,port=9001,server,nowait \
-chardev socket,id=compare0-0,host=10.3.6.10,port=9001 \
-chardev socket,id=compare_out,host=10.3.6.10,port=9005,server,nowait \
-chardev socket,id=compare_out0,host=10.3.6.10,port=9005 \
-object iothread,id=iothread1 \
-object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0 \
-object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out \
-object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0 \
-object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0,iothread=iothread1


Secondary Node
# /home/COLO-FT/qemu-4.0.0-rc3/x86_64-softmmu/qemu-system-x86_64 -enable-kvm -m 8192 -smp 4 -boot c -qmp stdio -name secondary \
-machine pc-i440fx-4.0,accel=kvm,usb=off,dump-guest-core=off -vnc :7 -cpu qemu64,+kvmclock -device piix3-usb-uhci \
-device usb-tablet -netdev tap,id=hn0,vhost=off \
-device virtio-net-pci,id=net-pci0,netdev=hn0 \
-drive if=none,id=secondary-disk0,file.filename=/home/centos7.6.qcow2,driver=qcow2,node-name=node0 \
-drive if=virtio,id=active-disk0,driver=replication,mode=secondary,file.driver=qcow2,top-id=active-disk0,file.file.filename=/mnt/ramfs/active_disk.img,file.backing.driver=qcow2,file.backing.file.filename=/mnt/ramfs/hidden_disk.img,file.backing.backing=secondary-disk0 \
-incoming tcp:0:8889 \
-chardev socket,id=red0,host=10.3.6.10,port=9003 \
-chardev socket,id=red1,host=10.3.6.10,port=9004 \
-object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0 \
-object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1 \
-object filter-rewriter,id=f3,netdev=hn0,queue=all
========================================================================================================
On Secondary VM's QEMU monitor, issue command
{'execute':'qmp_capabilities'}
{'execute': 'nbd-server-start','arguments': {'addr': {'type': 'inet', 'data': {'host': '10.33.41.106', 'port': '9000'}}}}
{'execute': 'nbd-server-add', 'arguments': {'device': 'secondary-disk0', 'writable': true}}

On Primary VM's QEMU monitor, issue command
{'execute':'qmp_capabilities'}
{'execute': 'human-monitor-command','arguments': {'command-line': 'drive_add -n buddy driver=replication,mode=primary,file.driver=nbd,file.host=10.3.6.11,file.port=9000,file.export=secondary-disk0,node-name=nbd_client0'}}
{'execute':'x-blockdev-change', 'arguments':{'parent': 'primary-disk0', 'node': 'nbd_client0'}}
{'execute': 'migrate-set-capabilities','arguments': {'capabilities': [ {'capability': 'x-colo', 'state': true}]}}
{'execute': 'migrate', 'arguments': {'uri': 'tcp:10.3.6.11:8889'}}
{"execute": "migrate-set-parameters" , "arguments":{ "x-checkpoint-delay": 2000}}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值