最近は用途にもよるけど、サーバ仮想化の検討が当たり前になっている。
1仮想化基盤の中に、別のネットワークセグメントが存在したりすることもよくある。
その場合には、仮想化基盤を分けるべきなんだけど金と仮想化対象サーバの数によっては
1台に収めたい場合もあるだろう。
4ネットワークセグメントが混在する場合の設定を。
KVMとCatlyst2950を使ってやってみた。
■作るもの 画像はみ出た
bondingの設定とcatlyst側のEtherChannelの設定いらないんじゃない?と
疑問に思った人がいるかもしれない。
bondingを組まずに各仮想ブリッジ(br)にVLANつけたサブインターフェイスを
そのまま割り当ててればいいと思うかもしれない。
しかしそれだとパケットの流れがだいぶ変わる。
ほんとにスイッチの動きとなってしまい
仮想マシンからのパケットを転送するだけの動きとなる。
L2ブロードキャストやMACテーブルに覚えていない場合、
「eth0 - eth3」の全部のポートからパケットが出て行くのだ。
いらんだろ。
画像ではcatlyst同士繋がっていないが
それをするとL2ループがおきちゃうこともある。
仮想スイッチでSTPは組むのはネットワークが複雑になりすぎるし嫌だ。
(各メーカーや技術者も「仮想ネットワークでSTPを組むな」と言っている。)
↑これに関して技術的な観点でなく管理的な面で言っている。
仮想スイッチでSTPを有効にしてやればできないことも無い。
いらんだろ。
bonding mode 0 でEtherchannelを組んで、
そのポートを仮想ブリッジに参加させた場合は
ちゃんと使えるインターフェイスを判断して
そこからパケットを転送してくれる。
※設定するときは通信が途切れないように工夫せよ
■いるもの
# yum install bridge-utils
■VLAN有効
# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hostname
NETWORKING_IPV6=no
GATEWAY=xxx.xxx.xxx.xxx
LVAN=yes
■VLANタグのついたサブインターフェイス作成
# vi /etc/sysconfig/network-script/ifcfg-eth0.10
DEVICE="eth0.10"
MASTER="bond10"
SLAVE="yes"
BOOTPROTO="none"
ONBOOT="yes"
# vi /etc/sysconfig/network-script/ifcfg-eth0.20
DEVICE="eth0.20"
MASTER="bond20"
SLAVE="yes"
BOOTPROTO="none"
ONBOOT="yes"
# vi /etc/sysconfig/network-script/ifcfg-eth0.30
DEVICE="eth0.30"
MASTER="bond30"
SLAVE="yes"
BOOTPROTO="none"
ONBOOT="yes"
# vi /etc/sysconfig/network-script/ifcfg-eth0.40
DEVICE="eth0.40"
MASTER="bond40"
SLAVE="yes"
BOOTPROTO="none"
ONBOOT="yes"
~長いし省略~
他のインターフェイスにもVLANタグのついたサブインターフェイスを
同じように作っていく。
■仮想ブリッジの設定
# vi /etc/sysconfig/network-script/ifcfg-br10
DEVICE=br10
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
DELAY=0
# vi /etc/sysconfig/network-script/ifcfg-br20
DEVICE=br20
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
DELAY=0
# vi /etc/sysconfig/network-script/ifcfg-br30
DEVICE=br30
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
DELAY=0
# vi /etc/sysconfig/network-script/ifcfg-br40
DEVICE=br40
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
DELAY=0
■bondingのalieas設定
# vi /etc/modprobe.d/bonding.conf
alias bond10 bonding
alias bond20 bonding
alias bond30 bonding
alias bond40 bonding
■bondインターフェイスの作成
# vi /etc/sysconfig/network-scripts/ifcfg-bond10
DEVICE="bond10"
ONBOOT="yes"
BOOTPROTO=static
TYPE="Ethernet"
BRIDGE="br10"
BONDING_OPTS="mode=0 miimon=100"
~長いし省略~
bond40まで作成しよう。
ここまできたら勇気をもって/etc/init.d/network restart だ。
※eth0にでもIP振っておいたほうがいいぞ。
■確認しとこう
# brctl show
# ifconfig
あとは仮想マシンのNIC設定でどの仮想スイッチ(br)の中に属するかを設定すればOKだ。
設定はややこしいかもしれない、
もっと設定を簡単にして「動く」だけのものを作っても
思うように転送速度が出なかったり、障害時の原因特定が困難になったり
良いことは無いだろう。
以上
0 件のコメント:
コメントを投稿