CentOS7でOpen vSwitchブリッジ化
Open vSwitchのブリッジのポートにIPアドレスを割り振る方法について備忘録。
備忘録のため、ざっくりしか書いていませんことはご了承願います。
また、作業中ネットワークの寸断がなんども起きるため、sshなどによるリモートの設定ではなく、ローカルでの設定を行ってください。
Open vSwitchの導入
Open vSwitchをインストールする。 ここではOpenStackのPackStackを利用してインストールする。
# yum install https://repos.fedorapeople.org/repos/openstack/openstack-icehouse/epel-7/rdo-release-icehouse-4.noarch.rpm
# yum install openvswitch
Open vSwitchを起動する。
# systemctl start openvswitch.service
# systemctl enable openvswitch.service
ブリッジの構成
ブリッジbr-exを作成する。
# ovs-vsctl add-br br-ex
ブリッジbr-exにたいしてポートenp3s0を付与する。
# ovs-vsctl add-port br-ex enp3s0
ネットワーク関連の設定
ifcfg-enp3s0を編集する。
# vi /etc/sysconfig/network-scripts/ifcfg-enp3s0
以下の通り編集する。
DEVICE=enp3s0
NAME=enp3s0
BOOTPROTO=none
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
HWADDR=xx:xx:xx:xx:xx:xx
ONBOOT=yes
NM_CONTROLLED=no
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex
ifcfg-br-exを編集する。
# vi /etc/sysconfig/network-scripts/ifcfg-br-ex
以下の通り編集する。
DEVICE=br-ex
NAME=br-ex
BOOTPROTO=none
IPADDR0=10.1.0.1
PREFIX0=8
GATEWAY0=10.255.0.1
DNS1=10.255.0.1
DEFROUTE=yes
NM_CONTROLLED=no
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBridge
NetworkManagerの停止、無効化とnetworkの起動、有効化を行う。
# systemctl stop NetworkManager.service
# systemctl disable NetworkManager.service
# systemctl start network.service
# systemctl enable network.service
ちょっとしたTips
この状態でrebootを行うと、br-exにIPアドレスが割り振られない状態で起動される。
原因はSystemdによる起動順序の指定がnetwork.service→openvswitch.serviceの順序になっているために、ブリッジが構成される前にIPの割り振りが行われてしまうことに起因する(と思われる)。
この現象に対する対応の1つとして、br-exインターフェイスの停止→起動を行うことでも対応は可能。
そのため、br-exに対してIPアドレスが割り振られているかをチェックし、割り振られていなければbr-exインターフェイスの停止→起動を行うという処理をcronにて毎分行うという方法で一時的に回避を試みる。
(この方法による回避が妥当かどうかは現段階ではまったく考慮しません)
インターフェイスへのIP割り振りのチェックと再起動のスクリプトを作成する。
# vi /shell/if_check.sh
以下の通り編集する。
#!/bin/bash
INTERFACE_NAME=br-ex
INTERFACE_IP=10.1.0.1
if [[ -z $(/sbin/ip addr show ${INTERFACE_NAME} | grep "inet ${INTERFACE_IP}") ]]; then
/sbin/ifdown ${INTERFACE_NAME}
/sbin/ifup ${INTERFACE_NAME}
fi
crontabを編集する。
# crontab -e
以下の通り編集する。
* * * * * /shell/if_check.sh
参考サイト
この記事の内容を構成するにあたって参考にさせていただいたサイトを以下に挙げておきます。
- OpenStack Icehouse on Fedora 20 using packstack on home PC
- CentOS6.4 の network-scripts で Open vSwitch のインターフェースを管理する
- Using Open vSwitch Bridges
- VM NOT ABLE TO PING EXTERNAL NETWORK@RDO
また、参考になるし有益ではあるが、自分の状況と照らし合わせて採用しなかったサイトの情報も挙げておきます。