function Geek()

技術的な備忘録が多くなってる。

NICの冗長化しちゃおうぜ?

いま現在ネットワーク関連の業務を進めています。

 

冗長化構成へのリプレイスに向け、ansibleのplaybook検証などを進めておます。

最近ネットワークのお頭からポートトランキングの設定を纏めておいて

との事で依頼を受けました。

 

f:id:LoliCom:20150709194724j:plain

 

ポートトランキング...?

という事で、やってみました!

ポートトランキング!

 

 目次

1.ポートトランキングについて

2.ボンディングの設定(ココらへんから設定開始)

2-1.Bondingモジュールの設定ファイルの作成

2-2.NICの設定

2-3.マスターとなるNICの設定

2-4.ネットワークの再起動

2-5.bond0の確認方法

2-6.冗長化の確認

2-7.eth0をdownさせた状態

ポートトランキング

まずポートトランキングについてですが

ネットワーク機器において、複数の物理ポートを束ねて使用すること。ポートトランキングを使用することで、複数の物理ポートが論理的に1本として扱われ、 帯域幅を増やすと同時に、物理リンクの何本かに障害が発生しても残りのリンクによって通信することができる。VLANからも単一ポートとして認識される。

ポートトランキングとは- IT単語帳 - IT、IT製品の情報なら【キーマンズネット】

 

メーカーさんなどにより

ボンディングであったり、チーミングであったり、トランキングであったりと

名称は違うみたいですが意味合いなどは同じ感じですかね。

こちらのブログを参考にしました!

bibo-log.blog.so-net.ne.jp

今回の目的としては

サーバ側のNIC冗長化でしたので、ボンディングになりますね!

別のボンディングの用途としては、

スループットの増強にも使えるようです。

 

なんとなく理解は出来ましたが、イメージしにくいので画像がありました。

f:id:LoliCom:20150709114401j:plain

参考画像元

意外と知らない?NICを冗長化するボンディング(bonding) - うさぎ文学日記

 

これならイメージがしやすいかと!

サーバ側のeth0とeth1をlinuxのBondingモジュールにより

ひとつのNICとして認識させ、スイッチからの通信を冗長化してる感じですね!

 

ボンディングの設定を行う

実際に設定を行っていきます。

まずはBondingモジュールの設定から

■使用OS

CentOS6.6

Bondingモジュールの設定ファイルの作成

create bonding module file

 

ここで気を付けるのが 「mode=x」です。

設定値を適宜入れるのですが

Mode No. Mode Name description
0 balance-rr 耐障害性とロードバランシングのためラウンドロビンポリシーを設定します。利用可能な第 1 のインターフェースからそれぞれのボンディングされたスレーブインターフェースで送受信が順次行われます。
1 active-backup 耐障害性のためアクティブなバックアップポリシーを設定します。利用可能な第 1 のボンディングされたスレーブインターフェースにより送受信が行われます。別のボンディングされたスレーブインターフェースは、アクティブなボンディング されたスレーブインターフェースが失敗した場合にのみ使用されます。
2 balance-xor 耐障害性とロードバランシングのため XOR (排他的論理和) ポリシーを設定します。この方法を使用すると、インターフェースによって受信要求の MAC アドレスとスレーブ NIC の 1 つの MAC アドレスが一致します。このリンクが確立すると、利用可能な第 1 のインターフェースから送信が順次行われます。
3 broadcast 耐障害性のためブロードキャストポリシーを設定します。すべての送信は、すべてのスレーブインターフェースで行われます。
4 802.3ad  IEEE 802.3ad 動的リンクアグリゲーションのポリシーを設定します。同一の速度とデュプレックス設定を共有するアグリゲーショングループを作成します。アクティブなアグ リゲーターのすべてのスレーブで送受信を行います。802.3ad に対応するスイッチが必要です。
5 balance-tlb 耐障害性とロードバランシングのため送信ロードバランシング (TLB) ポリシーを設定します。発信トラフィックは、各スレーブインターフェースの現在の負荷に従って分散されます。受信トラフィックは、現在のスレーブにより受 信されます。受信しているスレーブが失敗すると、別のスレーブが失敗したスレーブの MAC アドレスを引き継ぎます。
6 balance-alb 耐障害性とロードバランシングのためアクティブロードバランシング (ALB) ポリシーを設定します。IPV4 トラフィック用の送受信ロードバランシングが含まれます。ARP ネゴシエーションにより、受信ロードバランシングが可能です。

http://ja.community.dell.com/techcenter/b/weblog/archive/2014/05/16/linux-bonding-mode-0

自分の設定する意図に合わせて、設定値を決めてください。

今回は冗長化ですので、「mode=1」としました。

NICの設定

次はサーバのNICの設定をします。

「ifcfg-eth0」と「ifcfg-eth1」それぞれスレーブ化させる設定をします。

the ifcfg-eth0 and ifcfg-eth1 file is edit

マスターとなるNICの設定

「ifcfg-eth0」と「ifcfg-eth1」をスレーブ化させたので

お次はマスター的な設定ファイルを作成します。

create nic-bond file

ネットワークの再起動

設定ファイルの作成などが完了したので、再起動をかけます。

network restart command

bond0の確認方法

再起動後に設定を確認します。

bond0 check ifconfig

 設定は問題なさそうです。

 

冗長化の確認

では、冗長化出来ているかどうかを確認していきます。

 

確認方法は色々あります。

実際にLANを抜き差しして、pingを打って確認したり

eth0とeth1を交互にdownさせてみたり。

その作業の中で状態を確認するのが以下のコマンド

the NIC status check

 

eth0をdownさせた状態

the NIC eth0 status down

この状態でもpingが通ったので、冗長化は成功してますね!

逆にeth1をdownさせてもpingは通りました。

 

次はこれを複数台に設定するために

ansibleを使用してplaybookでやってみます。