このエントリの情報はおそらく古いです
前のエントリ はネットワークの設定なしで行いましたが、そこに veth でホストと通信可能なネットワークの設定を行って試しました。一度で書けよって内容ですが :-p
まず非特権コンテナで veth が使える設定を行います (多分必要)。LXC の設定です。/etc/lxc/lxc-usernet で "ubuntu" ユーザが 10 個 veth ペアを作成可能なようにしました (lxcbr0 を使用)。両方のホストで行っています。
$ cat /etc/lxc/lxc-usernet # USERNAME TYPE BRIDGE COUNT ubuntu veth lxcbr0 10
前のエントリ で作成した profile である "criu" にネットワーク設定を追加します。両方のホスト共変更します。
name: criu config: raw.lxc: | lxc.tty = 0 lxc.console = none lxc.cgroup.devices.deny = c 5:1 rwm security.privileged: "true" devices: eth0: nictype: bridged parent: lxcbr0 type: nic
これでコンテナを起動し、コンテナにアドレスを割り当てます。
$ lxc start ct01 $ lxc exec ct01 -- /sbin/dhclient eth0 $ lxc list +------+---------+-----------+------+ | NAME | STATE | IPV4 | IPV6 | +------+---------+-----------+------+ | ct01 | RUNNING | 10.0.3.77 | | +------+---------+-----------+------+
割り当たったのでマイグレーションします。
$ lxc move lxd01:ct01 lxd02:ct01 $ lxc list +------+-------+------+------+ | NAME | STATE | IPV4 | IPV6 | +------+-------+------+------+ +------+-------+------+------+ $ lxc list lxd02: +------+---------+-----------+------+ | NAME | STATE | IPV4 | IPV6 | +------+---------+-----------+------+ | ct01 | RUNNING | 10.0.3.77 | | +------+---------+-----------+------+
移動しましたね。
(追記)
lxd02 上で
$ lxc exec ct01 -- apt-get install micro-httpd $ lxc exec ct01 -- sh -c 'echo "LXD Test" | tee /var/www/index.html' $ curl http://10.0.3.77/ LXD Test
としておいて、lxd01 上で以下のように実行すると、ちゃんとマイグレーションされてますね。
$ lxc move lxd02:ct01 lxd01:ct01 $ curl http://10.0.3.77/ LXD Test
一度、まずマイグレーションした後である程度コンテナイメージが同期された状態で、特に何もファイルを更新しない状態でマイグレーションしてもそれなりにダウンタイムありますね。
(さらに追記) 1秒おきに date コマンドの結果を出力するスクリプトを回してマイグレーションするとこんなことも。結構時間かかりますね。それほどコンテナ上のファイルは (手では) 変更していません。
Wed Apr 15 10:06:12 UTC 2015 Wed Apr 15 10:06:13 UTC 2015 Wed Apr 15 10:07:31 UTC 2015 Wed Apr 15 10:07:32 UTC 2015
Wed Apr 15 10:09:53 UTC 2015 Wed Apr 15 10:09:54 UTC 2015 Wed Apr 15 10:10:14 UTC 2015 Wed Apr 15 10:10:15 UTC 2015