スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | --:--:--
CentOS 6.4 で openvswitch を使ってみる

CentOS 6.4 の openvswitch 対応

CentOS 6.4 では openvswitch が組み込まれていて、以下のように openvswitch のカーネルモジュールの存在が確認できる。

# ls /lib/modules/`uname -r`/kernel/net/openvswitch
openvswitch.ko

一方、なぜかユーティリティが存在しないので、普通に使うことが出来ない状態になっている。libvirt は 0.10.0 以降で openvswitch に対応しているので、こちらは問題なく使えるようになっている。

openvswitch のコンパイル

ということで CentOS 6.4 用の openvswitch は自分でコンパイルする必要がある。ソースは現時点で最新の 1.9.0 を使った。

INSTALL.RHEL が CentOS (RHEL) に対応するドキュメントなので、その通りにすればOK。今回動作させようとしているマシンにはコンパイル環境を置いていないので、別マシンで rpm を作ってインストールした。

wget http://openvswitch.org/releases/openvswitch-1.9.0.tar.gz
tar xzf openvswitch-1.9.0.tar.gz
cd openvswitch-1.9.0
mv ../openvswitch-1.9.0.tar.gz ~/rpmbuild/SOURCES/
rpmbuild -bb rhel/openvswitch.spec

openvswitch の有効化

openvswitch を動作させるマシンに rpm をインストールし、openvswitch を起動させてみる。openvswitch は bridge を置き換えて動作するため、openvswitch を起動する前に bridge を消しておく必要がある。

# rpm -i openvswitch-1.9.0-1.x86_64.rpm
# /sbin/rmmod bridge
# service openvswitch start
/etc/openvswitch/conf.db does not exist ... (warning).
Creating empty database /etc/openvswitch/conf.db           [  OK  ]
Starting ovsdb-server                                      [  OK  ]
Configuring Open vSwitch system IDs                        [  OK  ]
Inserting openvswitch module                               [  OK  ]
Starting ovs-vswitchd                                      [  OK  ]
Enabling gre with iptables                                 [  OK  ]

続けてネットワークの設定を書き換えて openvswitch を使えるようにする必要がある。rhel/README.RHEL に CentOS での利用方法が書かれているので参考にする。

/etc/sysconfig/network-scripts/ifcfg-eth0 を以下のように書き換えた。

DEVICE="eth0"
DEVICETYPE="ovs"
BOOTPROTO="none"
ONBOOT="yes"
TYPE="OVSPort"
OVS_BRIDGE="ovsbr0"
HOTPLUG="no"
NM_CONTROLLED="no"

bridge の定義を /etc/sysconfig/network-scripts/ifcfg-ovsbr0 に記述。

DEVICE="ovsbr0"
DEVICETYPE="ovs"
BOOTPROTO="static"
BROADCAST="192.168.1.255"
DNS1="192.168.1.1"
IPADDR="192.168.1.11"
NETMASK="255.255.255.0"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="OVSBridge"

忘れずに iptable の定義を元の eth0 から obsbr0 に変更する必要がある。(これに気づかずにハマってしまった・・・)

KVM(libvirt) で openvswitch を使う

いろいろ openvswitch の利用方法はあるのだろうが、まずは KVM(libvirt) で openvswitch を使えるようにすることにした。

virt-install で openvswitch による bridge を指定して、VM を作成しようとしたが、bridge 互換の brcompat を使わないとダメだった。でも、標準ではないカーネルモジュールは入れたくなかったので、非ブリッジでインストールした後、openvswitch を使うように変更することにした。

libvirt の VM 設定を以下のように書き換えるだけで問題なく動作した。

<!--
    <interface type='user'>
      <mac address='52:54:00:19:34:d6'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
-->
    <interface type='bridge'>
      <mac address='52:54:00:19:34:d6'/>
      <source bridge='ovsbr0'/>
      <virtualport type='openvswitch'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

VM を再起動させて bridge の状態を確認。

# ovs-vsctl show
a34b6403-7500-4f76-907a-05288630d9fc
    Bridge "ovsbr0"
        Port "vnet0"
            Interface "vnet0"
        Port "eth0"
            Interface "eth0"
        Port "ovsbr0"
            Interface "ovsbr0"
                type: internal
    ovs_version: "1.9.0"


続きを読む >>
スポンサーサイト

テーマ:Linux - ジャンル:コンピュータ

Linux | 22:41:03 | トラックバック(0) | コメント(0)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。