1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OVN docker 構築テスト

Last updated at Posted at 2016-10-21

INSTALL

INSTALL.Docker.md を手引きに、Ubuntu 16.10 でインストールしてみた。192.168.0.40CENTRAL_IP で、192.168.0.41, 192.168.0.42 という docker host という構成にする。

ovn-northdovn-central package に入っている。ovn-central package を入れると ovn-northd も起動する。systemd での unit name は ovn-central だが、意味のあるログは /var/log/openvswitch 以下に出力される。

ovn-controllerovn-host package に入っている。ovn-host package を入れると ovn-controller も起動する。unit name は ovn-host だが、意味のあるログは /var/log/openvswitch 以下に出力される。次のコマンドを入れると ovn-central に繋がって、初期フローまで入る。

ovs-vsctl set Open_vSwitch . external_ids:ovn-remote="tcp:$CENTRAL_IP:6642" \
  external_ids:ovn-nb="tcp:$CENTRAL_IP:6641" \
  external_ids:ovn-encap-ip=$LOCAL_IP \
  external_ids:ovn-encap-type="$ENCAP_TYPE"
NXST_FLOW reply (xid=0x4):
 cookie=0x0, duration=1025.214s, table=0, n_packets=0, n_bytes=0, idle_age=1025, priority=100,in_port=1 actions=move:NXM_NX_TUN_ID[0..23]->OXM_OF_METADATA[0..23],move:NXM_NX_TUN_METADATA0[16..30]->NXM_NX_REG14[0..14],move:NXM_NX_TUN_METADATA0[0..15]->NXM_NX_REG15[0..15],resubmit(,33)
 cookie=0x0, duration=1025.215s, table=32, n_packets=0, n_bytes=0, idle_age=1025, priority=0 actions=resubmit(,33)
 cookie=0x0, duration=1025.215s, table=34, n_packets=0, n_bytes=0, idle_age=1025, priority=0 actions=load:0->NXM_NX_REG0[],load:0->NXM_NX_REG1[],load:0->NXM_NX_REG2[],load:0->NXM_NX_REG3[],load:0->NXM_NX_REG4[],load:0->NXM_NX_REG5[],load:0->NXM_NX_REG6[],load:0->NXM_NX_REG7[],load:0->NXM_NX_REG8[],load:0->NXM_NX_REG9[],resubmit(,48)
 cookie=0x0, duration=1025.215s, table=64, n_packets=0, n_bytes=0, idle_age=1025, priority=0 actions=resubmit(,65)

ovn-docker package を入れる。systemd ファイルは無い様子。ovn-docker-overlay-driver を起動させると、/etc/docker/plugins/openvswitch.spec が書き込まれる。これで docker から openvswitch プラグインとして認識される準備が整う。

ovn-docker-overlay-driver --detach

docker をクラスタリングさせるために consul package を入れる。いつも通り bootstrap-expect=3 で 3 台のクラスタを組んでみた。3 台それぞれで agent を起動させる。

consul agent -bind 192.168.0.40 -data-dir=/var/lib/consul/data -server -bootstrap-expect=3 | logger &
## 下は 192.168.0.40 で実行すれば事足りる。
consul join 192.168.0.41
consul join 192.168.0.42

docker.io package を入れる。/etc/defaults/dockerDOCKER_OPTS を書いて再起動しておく。

DOCKER_OPTS=--cluster-store=consul://127.0.0.1:8500 --cluster-advertise=192.168.0.41:0

動作確認

$ docker network create -d openvswitch --subnet=192.168.1.0/24 foo
ffbdc7c12ae8e885dcf87f12992e7c508de2b5073d071c9def78be56eba4cc21

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
9e8ac92d1448        bridge              bridge              local
ffbdc7c12ae8        foo                 openvswitch         global
80421cffc1f0        host                host                local
6219ee0ca5c9        none                null                local

INSTALL.Docker.md:6640 と書いてるけど、たぶん typo で、:6641 に問い合わせる。

ovn-nbctl --db=tcp:192.168.0.40:6641 ls-list

コンテナデプロイ

2 台の docker host でそれぞれ 1 コンテナデプロイさせた後のフローはこんな感じになった。

NXST_FLOW reply (xid=0x4):
 cookie=0x0, duration=5338.201s, table=0, n_packets=7, n_bytes=578, idle_age=4, priority=100,in_port=2 actions=move:NXM_NX_TUN_ID[0..23]->OXM_OF_METADATA[0..23],move:NXM_NX_TUN_METADATA0[16..30]->NXM_NX_REG14[0..14],move:NXM_NX_TUN_METADATA0[0..15]->NXM_NX_REG15[0..15],resubmit(,33)
 cookie=0x0, duration=41.260s, table=0, n_packets=8, n_bytes=648, idle_age=30, priority=100,in_port=4 actions=load:0x1->NXM_NX_REG13[],load:0x2->OXM_OF_METADATA[],load:0x1->NXM_NX_REG14[],resubmit(,16)
 cookie=0x0, duration=41.260s, table=16, n_packets=0, n_bytes=0, idle_age=41, priority=100,metadata=0x2,vlan_tci=0x1000/0x1000 actions=drop
 cookie=0x0, duration=41.260s, table=16, n_packets=0, n_bytes=0, idle_age=41, priority=100,metadata=0x2,dl_src=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
 cookie=0x0, duration=41.260s, table=16, n_packets=8, n_bytes=648, idle_age=30, priority=50,reg14=0x1,metadata=0x2 actions=resubmit(,17)
 cookie=0x0, duration=11.153s, table=16, n_packets=0, n_bytes=0, idle_age=11, priority=50,reg14=0x2,metadata=0x2 actions=resubmit(,17)
 cookie=0x0, duration=41.260s, table=17, n_packets=8, n_bytes=648, idle_age=30, priority=0,metadata=0x2 actions=resubmit(,18)
 cookie=0x0, duration=41.260s, table=18, n_packets=8, n_bytes=648, idle_age=30, priority=0,metadata=0x2 actions=resubmit(,19)
 cookie=0x0, duration=41.260s, table=19, n_packets=8, n_bytes=648, idle_age=30, priority=0,metadata=0x2 actions=resubmit(,20)
 cookie=0x0, duration=41.260s, table=20, n_packets=8, n_bytes=648, idle_age=30, priority=0,metadata=0x2 actions=resubmit(,21)
 cookie=0x0, duration=41.260s, table=21, n_packets=0, n_bytes=0, idle_age=41, priority=100,ip,reg0=0x1/0x1,metadata=0x2 actions=ct(table=22,zone=NXM_NX_REG13[0..15])
 cookie=0x0, duration=41.260s, table=21, n_packets=0, n_bytes=0, idle_age=41, priority=100,ipv6,reg0=0x1/0x1,metadata=0x2 actions=ct(table=22,zone=NXM_NX_REG13[0..15])
 cookie=0x0, duration=41.260s, table=21, n_packets=8, n_bytes=648, idle_age=30, priority=0,metadata=0x2 actions=resubmit(,22)
 cookie=0x0, duration=41.260s, table=22, n_packets=8, n_bytes=648, idle_age=30, priority=0,metadata=0x2 actions=resubmit(,23)
 cookie=0x0, duration=41.260s, table=23, n_packets=8, n_bytes=648, idle_age=30, priority=0,metadata=0x2 actions=resubmit(,24)
 cookie=0x0, duration=41.260s, table=24, n_packets=0, n_bytes=0, idle_age=41, priority=100,ipv6,reg0=0x2/0x2,metadata=0x2 actions=ct(commit,zone=NXM_NX_REG13[0..15],exec(load:0->NXM_NX_CT_LABEL[0])),resubmit(,25)
 cookie=0x0, duration=41.260s, table=24, n_packets=0, n_bytes=0, idle_age=41, priority=100,ip,reg0=0x2/0x2,metadata=0x2 actions=ct(commit,zone=NXM_NX_REG13[0..15],exec(load:0->NXM_NX_CT_LABEL[0])),resubmit(,25)
 cookie=0x0, duration=41.260s, table=24, n_packets=0, n_bytes=0, idle_age=41, priority=100,ip,reg0=0x4/0x4,metadata=0x2 actions=ct(table=25,zone=NXM_NX_REG13[0..15],nat)
 cookie=0x0, duration=41.260s, table=24, n_packets=0, n_bytes=0, idle_age=41, priority=100,ipv6,reg0=0x4/0x4,metadata=0x2 actions=ct(table=25,zone=NXM_NX_REG13[0..15],nat)
 cookie=0x0, duration=41.260s, table=24, n_packets=8, n_bytes=648, idle_age=30, priority=0,metadata=0x2 actions=resubmit(,25)
 cookie=0x0, duration=41.259s, table=25, n_packets=0, n_bytes=0, idle_age=41, priority=50,arp,metadata=0x2,arp_tpa=192.168.1.3,arp_op=1 actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],mod_dl_src:02:1b:5c:3e:66:87,load:0x2->NXM_OF_ARP_OP[],move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],load:0x21b5c3e6687->NXM_NX_ARP_SHA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],load:0xc0a80103->NXM_OF_ARP_SPA[],move:NXM_NX_REG14[]->NXM_NX_REG15[],load:0x1->NXM_NX_REG10[0],resubmit(,32)
 cookie=0x0, duration=10.820s, table=25, n_packets=0, n_bytes=0, idle_age=10, priority=50,arp,metadata=0x2,arp_tpa=192.168.1.4,arp_op=1 actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],mod_dl_src:02:3b:98:39:5c:70,load:0x2->NXM_OF_ARP_OP[],move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],load:0x23b98395c70->NXM_NX_ARP_SHA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],load:0xc0a80104->NXM_OF_ARP_SPA[],move:NXM_NX_REG14[]->NXM_NX_REG15[],load:0x1->NXM_NX_REG10[0],resubmit(,32)
 cookie=0x0, duration=41.260s, table=25, n_packets=8, n_bytes=648, idle_age=30, priority=0,metadata=0x2 actions=resubmit(,26)
 cookie=0x0, duration=41.260s, table=26, n_packets=8, n_bytes=648, idle_age=30, priority=0,metadata=0x2 actions=resubmit(,27)
 cookie=0x0, duration=41.260s, table=27, n_packets=8, n_bytes=648, idle_age=30, priority=0,metadata=0x2 actions=resubmit(,28)
 cookie=0x0, duration=41.260s, table=28, n_packets=8, n_bytes=648, idle_age=30, priority=100,metadata=0x2,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=load:0xffff->NXM_NX_REG15[],resubmit(,32)
 cookie=0x0, duration=41.260s, table=28, n_packets=0, n_bytes=0, idle_age=41, priority=50,metadata=0x2,dl_dst=02:1b:5c:3e:66:87 actions=load:0x1->NXM_NX_REG15[],resubmit(,32)
 cookie=0x0, duration=11.145s, table=28, n_packets=0, n_bytes=0, idle_age=11, priority=50,metadata=0x2,dl_dst=02:3b:98:39:5c:70 actions=load:0x2->NXM_NX_REG15[],resubmit(,32)
 cookie=0x0, duration=10.821s, table=32, n_packets=0, n_bytes=0, idle_age=10, priority=150,reg10=0x2/0x2 actions=resubmit(,33)
 cookie=0x0, duration=10.821s, table=32, n_packets=0, n_bytes=0, idle_age=10, priority=100,reg15=0xffff,metadata=0x2 actions=load:0x2->NXM_NX_TUN_ID[0..23],set_field:0xffff/0xffffffff->tun_metadata0,move:NXM_NX_REG14[0..14]->NXM_NX_TUN_METADATA0[16..30],output:2,resubmit(,33)
 cookie=0x0, duration=10.821s, table=32, n_packets=0, n_bytes=0, idle_age=10, priority=100,reg15=0x2,metadata=0x2 actions=load:0x2->NXM_NX_TUN_ID[0..23],set_field:0x2/0xffffffff->tun_metadata0,move:NXM_NX_REG14[0..14]->NXM_NX_TUN_METADATA0[16..30],output:2
 cookie=0x0, duration=8822.393s, table=32, n_packets=16, n_bytes=1296, idle_age=30, priority=0 actions=resubmit(,33)
 cookie=0x0, duration=41.260s, table=33, n_packets=0, n_bytes=0, idle_age=41, priority=100,reg15=0x1,metadata=0x2 actions=load:0x1->NXM_NX_REG13[],resubmit(,34)
 cookie=0x0, duration=41.260s, table=33, n_packets=15, n_bytes=1226, idle_age=4, priority=100,reg15=0xffff,metadata=0x2 actions=load:0x1->NXM_NX_REG13[],load:0x1->NXM_NX_REG15[],resubmit(,34),load:0xffff->NXM_NX_REG15[]
 cookie=0x0, duration=41.260s, table=34, n_packets=8, n_bytes=648, idle_age=30, priority=100,reg10=0/0x1,reg14=0x1,reg15=0x1,metadata=0x2 actions=drop
 cookie=0x0, duration=8822.393s, table=34, n_packets=7, n_bytes=578, idle_age=4, priority=0 actions=load:0->NXM_NX_REG0[],load:0->NXM_NX_REG1[],load:0->NXM_NX_REG2[],load:0->NXM_NX_REG3[],load:0->NXM_NX_REG4[],load:0->NXM_NX_REG5[],load:0->NXM_NX_REG6[],load:0->NXM_NX_REG7[],load:0->NXM_NX_REG8[],load:0->NXM_NX_REG9[],resubmit(,48)
 cookie=0x0, duration=41.260s, table=48, n_packets=7, n_bytes=578, idle_age=4, priority=0,metadata=0x2 actions=resubmit(,49)
 cookie=0x0, duration=41.260s, table=49, n_packets=7, n_bytes=578, idle_age=4, priority=0,metadata=0x2 actions=resubmit(,50)
 cookie=0x0, duration=41.260s, table=50, n_packets=0, n_bytes=0, idle_age=41, priority=100,ipv6,reg0=0x1/0x1,metadata=0x2 actions=ct(table=51,zone=NXM_NX_REG13[0..15])
 cookie=0x0, duration=41.260s, table=50, n_packets=0, n_bytes=0, idle_age=41, priority=100,ip,reg0=0x1/0x1,metadata=0x2 actions=ct(table=51,zone=NXM_NX_REG13[0..15])
 cookie=0x0, duration=41.260s, table=50, n_packets=7, n_bytes=578, idle_age=4, priority=0,metadata=0x2 actions=resubmit(,51)
 cookie=0x0, duration=41.260s, table=51, n_packets=7, n_bytes=578, idle_age=4, priority=0,metadata=0x2 actions=resubmit(,52)
 cookie=0x0, duration=41.260s, table=52, n_packets=7, n_bytes=578, idle_age=4, priority=0,metadata=0x2 actions=resubmit(,53)
 cookie=0x0, duration=41.260s, table=53, n_packets=0, n_bytes=0, idle_age=41, priority=100,ipv6,reg0=0x4/0x4,metadata=0x2 actions=ct(table=54,zone=NXM_NX_REG13[0..15],nat)
 cookie=0x0, duration=41.260s, table=53, n_packets=0, n_bytes=0, idle_age=41, priority=100,ip,reg0=0x4/0x4,metadata=0x2 actions=ct(table=54,zone=NXM_NX_REG13[0..15],nat)
 cookie=0x0, duration=41.260s, table=53, n_packets=0, n_bytes=0, idle_age=41, priority=100,ip,reg0=0x2/0x2,metadata=0x2 actions=ct(commit,zone=NXM_NX_REG13[0..15],exec(load:0->NXM_NX_CT_LABEL[0])),resubmit(,54)
 cookie=0x0, duration=41.260s, table=53, n_packets=0, n_bytes=0, idle_age=41, priority=100,ipv6,reg0=0x2/0x2,metadata=0x2 actions=ct(commit,zone=NXM_NX_REG13[0..15],exec(load:0->NXM_NX_CT_LABEL[0])),resubmit(,54)
 cookie=0x0, duration=41.260s, table=53, n_packets=7, n_bytes=578, idle_age=4, priority=0,metadata=0x2 actions=resubmit(,54)
 cookie=0x0, duration=41.260s, table=54, n_packets=7, n_bytes=578, idle_age=4, priority=0,metadata=0x2 actions=resubmit(,55)
 cookie=0x0, duration=41.260s, table=55, n_packets=7, n_bytes=578, idle_age=4, priority=100,metadata=0x2,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=resubmit(,64)
 cookie=0x0, duration=41.260s, table=55, n_packets=0, n_bytes=0, idle_age=41, priority=50,reg15=0x1,metadata=0x2 actions=resubmit(,64)
 cookie=0x0, duration=11.153s, table=55, n_packets=0, n_bytes=0, idle_age=11, priority=50,reg15=0x2,metadata=0x2 actions=resubmit(,64)
 cookie=0x0, duration=41.260s, table=64, n_packets=0, n_bytes=0, idle_age=41, priority=100,reg10=0x1/0x1,reg15=0x1,metadata=0x2 actions=push:NXM_OF_IN_PORT[],load:0->NXM_OF_IN_PORT[],resubmit(,65),pop:NXM_OF_IN_PORT[]
 cookie=0x0, duration=8822.393s, table=64, n_packets=7, n_bytes=578, idle_age=4, priority=0 actions=resubmit(,65)
 cookie=0x0, duration=41.260s, table=65, n_packets=7, n_bytes=578, idle_age=4, priority=100,reg15=0x1,metadata=0x2 actions=output:4
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?