【Linux】 Docker CRIU Live Migration
由于某些原因,代码暂不开源
代码参考:https://github.com/hixichen/docker_based_cloudlet
Docker checkpoint参考:https://www.jianshu.com/p/2b288415896c
Docker swarm参考:https://www.cnblogs.com/zhujingzhi/p/9792432.html
Criu参考:https://www.cnblogs.com/PPWEI/p/9591660.html
Docker checkpoint参考:https://criu.org/Docker
环境准备:
Ubuntu18.04 root/123456
Docker client 17.06.0
Criu 3.11
Python 2.7.17
Pip 9.0.1
代码在:/root/docker_based_cloudlet-master
Docker swarm集群:
10.211.55.13 manager
10.211.55.15 node1
10.211.55.14 node2
配置manager节点与其他节点的免密登陆。参考:https://blog.51cto.com/6666613/2456451
1.manager创建集群
docker swarm init --advertise-addr 10.211.55.13
2.node1和node2分别加入集群
docker swarm join --token SWMTKN-1-2ba1ole4efbwxrekxrq7cs81yxf2998ja7mayet9m0osa3as97-abusoel8n1ltgjglid8qqmd2i 10.211.55.13:2377
3.manager创建网络
docker network create -d overlay looper-net
4.node1节点运行容器looper
docker run -d --name looper --security-opt seccomp:unconfined busybox \
/bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'
5.node1节点的looper服务迁移到node2节点
(1) node2节点开启socket服务:
cd /root/docker_based_cloudlet-master/ && python cloudlet.py service -l
(2)node1节点执行:
cd /root/docker_based_cloudlet-master/ && python cloudlet.py migrate looper -t 10.211.55.15
6.设置频率自动迁移
cd /root/docker_based_cloudlet-master/ && python cloudlet.py cron looper 0
looper为容器名称
0为定时时间(min)
如果为0,则表示立即迁移,跟方面方法5一样,只不过是自动判断源服务器和目标服务器,无需手动输入
如果大于0,则表示每过多少分钟进行一边迁移。