LoginSignup
7
10

More than 5 years have passed since last update.

KVMで使うブリッジをOpenvSwitchにしてみた

Last updated at Posted at 2018-07-06

KVMで使用するスイッチをLinux標準のブリッジからOpenvSwitchに変更して、外部と接続してみました。
その手順を備忘録として記します。
また、KVMの環境で1つ以上のVMが存在していることを前提とし、VM作成の説明は省きます。VMの作成方法がわからない方はこちら→CentOS7でKVMを使って仮想マシンをつくってみたを参考にしてみてください。

完成イメージ

ovs-kvm.jpg

環境

  • Host CentOS 7.5
  • openvswitch 2.0.0

手順

パッケージのインストールと起動

まずは、OpenvSwtichのインストールとデーモンの起動をさせましょう。
最新版のものを触りたのであれば、ソースからインストールするんのがいいでしょう。方法はネット上に転がっていると思うので、ここでは説明しません。

# yum install -y openvswitch python-openvswitch
# systemctl start openvswitch
# systemctl enable openvswitch

ブリッジの作成

ブリッジの作成はovs-vsctl add-brコマンドでもできますが、ここではスクリプトに直接書き込みます。
xxの部分は自身の環境に合わせてください。

# vi /etc/sysconfig/network-scripts/ifcfg-ovsbr0  // 以下のように書き込みます

DEVICE=ovsbr0
NAME=ovsbr0
ONBOOT=yes
BOOTPROTO=none
DEVICETYPE=ovs
TYPE=OVSBridge
IPADDR=192.168.0.1
NETMASK=255.255.255.0
GATEWAY=xx.xx.xx.xx
DNS1=xx.xx.xx.xx

# systemctl restart network  // 設定を反映させる

ブリッジとホストのインターフェースを結びつける

# ovs-vsctl add-port ovsbr0 eno1

ブリッジとホストのインターフェースがちゃんと結びついていれば、以下のような出力が得られます。

# ovs-vsctl show
2dc06fcd-3735-4498-a963-3642d7e662d4
    Bridge "ovsbr0"
        Port "ovsbr0"
            Interface "ovsbr0"
                type: internal
        Port "eno1"
            Interface "eno1"
    ovs_version: "2.0.0"

VMのネットワーク設定を編集

既存のVMのネットワーク設定を変更して、ovsbr0に接続して、外部と通信できるようにしましょう。
編集する部分は、先頭に「+」がついている部分です。
ちなみに、vinanoで直接ファイルを編集しても変更は反映されません。

# virsh edit vm
+ <interface type='bridge'>
     <mac address='52:54:00:6c:4a:50'/>
+    <source bridge='ovsbr0'/>
+    <virtualport type='openvswitch'>
     <model type='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> 
 </interface>

一旦保存終了してから、また開くと以下のようにパラメータが追加されています。

 <interface type='bridge'>
     <mac address='52:54:00:6c:4a:50'/>
     <source bridge='ovsbr0'/>
     <virtualport type='openvswitch'>
+       <parameters interfaceid='97233b2f-b55a-4a48-b6f0-cb254854ed39'/>
+     </virtualport>
     <model type='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> 
 </interface>

確認

以上で設定が終わったので、vmがovsbr0と接続されているか、確認してみましょう。

# virsh start vm  // vmの起動
# ovs-vsctl show
2dc06fcd-3735-4498-a963-3642d7e662d4
    Bridge "ovsbr0"
        Port "ovsbr0"
            Interface "ovsbr0"
                type: internal
        Port "eno1"
            Interface "eno1"
        Port "vnet0"             // ←が追加されているので成功!
            Interface "vnet0"
    ovs_version: "2.0.0"

参考

7
10
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
7
10