ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

CentOS 7/Scientific Linux 7でOpenvSwitchを使う

CentOS 7/Scientific Linux 7でOpenvSwitchを使う方法を調べるとインストールまでしか書いていない記事を割と多く見つけるので、メモのために書いておこうと思います。

2つのサーバーを用意して、一方にはOpenvSwitch環境、一方は普通のLinux環境を同じL2ネットワークにつないで検証しました。前提として各サーバーに2つのNICを用意して、それぞれ別のL2ネットワークにつないだ構成を想定しています。なお、OVSでSELinuxはちょっと面倒くさいので、珍しくdisabledにしています。

インストールから利用までの流れは次の通りです。

サーバー側の設定

OVSのインストー

CentOS 7/Scientific Linux 7やベースとなっているRHEL 7はOpenvSwitchは標準リポジトリーに含まれないため、インストールするためにOpenStackリポジトリーを有効にしてOpenvSwitchをインストールします。

OpenStack Newtonまでは2.5系のOVSが、Ocataでは2.6.1系のOVSをインストールできます。今回はOcataのリポジトリーにある2.6.1系をインストールするため、次のように実施しました。

# yum install -y https://repos.fedorapeople.org/repos/openstack/openstack-ocata/rdo-release-ocata-2.noarch.rpm
# yum install -y centos-release-openstack-ocata

あとは次の通りです。

  • OpenvSwitchをインストールする
# yum install openvswitch

# systemctl enable openvswitch 
# systemctl start openvswitch 

そもそも使う気が無ければさっさとぬっころします。クライアント側はこの設定は不要です。

# setenforce 0
# sed -i "s/\(^SELINUX=\).*/\1disabled/" /etc/selinux/config

ちなみにsetenforce 0はある書籍で「SELinuxを一時的に無効化するための設定」とか「SELinuxをコマンドで無効化」するためのコマンドだとか書かれているのを目にしたことがありますが、SELinuxによる強制アクセス制御を実施しないようにするための設定です。このコマンドを実行してもSELinuxは無効化されません。適用された場合はログに記録されます。

OVSの設定

  • ブリッジの作成

2つのブリッジを作って、別々のNICを割り当てるのを想定しているため、ブリッジを作ります。

# ovs-vsctl add-br ovsbr0
# ovs-vsctl add-br ovsbr1

これはコマンドを見ればわかりやすいですね。

# ovs-vsctl add-port ovsbr0 eth0
# ovs-vsctl add-port ovsbr1 eth1

それぞれのブリッジにIPアドレスを割り当てます。 このままだと再起動後に消えてしまうので、永続化するようにしてください。今回は省略します。

# ip addr add 192.168.0.101/24 dev ovsbr0
# ip addr add 192.168.1.101/24 dev ovsbr1
  • ポート割り当ての確認

想定したポートをブリッジに割り当てたか確認します。

# ovs-vsctl list-ifaces ovsbr0
# ovs-vsctl list-ifaces ovsbr1
  • ポートのUp

なぜかポートがDOWNのままなのでUpします。 ちょっと腑に落ちませんが、ifconfigコマンドを使うため、事前にnet-toolsをインストールします。

# ifconfig ovsbr0 up
# ifconfig ovsbr1 up

こんなシェルスクリプトを作っておくと便利かもしれません。

#!/bin/bash

ip addr add 192.168.0.101/24 dev ovsbr0
ip addr add 192.168.1.101/24 dev ovsbr1
ifconfig ovsbr0 up
ifconfig ovsbr1 up

クライアント側の設定

クライアント側は特に設定することはありませんが、同じネットワークからアクセスできるように最低限の構成(同じL2ネットワークに接続、IPアドレスの設定)はしておきます。

# ip addr add 192.168.0.102/24 dev eth0
# ip addr add 192.168.1.102/24 dev eth1

あとはOVSブリッジポートに対してpingを飛ばすだけです。きちんとネットワークがツナがているかはサーバー側にtcpdumpコマンドを入れて確認しましょう。

# ping -c4 192.168.0.101
# ping -c4 192.168.1.101