TenForward

技術ブログ。はてなダイアリーから移転しました

lxd を使ったライブマイグレーション (2)

このエントリの情報はおそらく古いです

前のエントリ はネットワークの設定なしで行いましたが、そこに 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