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系をインストールするため、次のように実施しました。
- Scientific Linux 7やRHEL7の場合
# yum install -y https://repos.fedorapeople.org/repos/openstack/openstack-ocata/rdo-release-ocata-2.noarch.rpm
- CentOS 7の場合
# yum install -y centos-release-openstack-ocata
あとは次の通りです。
- OpenvSwitchをインストールする
# yum install openvswitch # systemctl enable openvswitch # systemctl start openvswitch
- SELinuxをアレする
そもそも使う気が無ければさっさとぬっころします。クライアント側はこの設定は不要です。
# 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アドレスを割り当てます。 このままだと再起動後に消えてしまうので、永続化するようにしてください。今回は省略します。
# 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