メニュー ホーム

手探りでチャネルボンディング

まるっきり初めての言葉です。チャネルボンディング。単純にもったいないの精神で始めました。うまくいくでしょうか。

そもそもチャネルボンディングとは?

チャネルボンディング: Channel Bonding)とは、一台のコンピュータの複数のネットワークインタフェースを組み合わせて、冗長化またはスループット増強を行うコンピュータネットワークの技法。

イーサネットでのチャネルボンディングでは、ホストコンピュータのオペレーティングシステムとイーサネットのスイッチングハブの両者がそれをサポートしている必要があり、ちょうど RAID のディスクアレイのI/Oが複数のディスク装置に分散されて行われるように、フレームの送受信を複数のインタフェースに分散させるようにしなければならない。このため、チャネルボンディングを RAIN (Redundant Array of Independent Network interfaces) とも呼ぶ。

チャネルボンディングは、POTS におけるダイヤルアップ接続でも行われ、負荷分散によってスループットを増強するのに使われる。

チャネルボンディング – Wikipedia

MacProには二つのイーサーネットコネクタがあります。macOSでは利用が可能ですが、Linuxではどうなんでしょう。Ubuntuインストールの際にどちらのインターフェイスを有効にするのか尋ねられました。あまり意識せずに選択したのをうっすら覚えています。私は浪費症の割に、ケチなので何となく二つあるイーサーネットコネクタがもったいなく思っていました。片方のみをアクティブにしているため、もう一方のコネクタにはラインをつないでも使えません。まず、こちらをアクティブにすることから始めました。

インアクティブになっているイーサーネットをアクティブにする

結論からいきます。ここに至るまでガッツリ時間がかかっていますが、無視します。

sudo nano /etc/network/interfacesでファイルを開きます。eth0(Ethernetの0番)がアクティブになっているので、それに続いてeth1(もう片方のEthernet)をアクティブにする用に記述します。

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp
#--- ここから下を追記する ---
# The secondary network interface
auto eth1
iface eth1 inet dhcp

さて、この記述を施した後で、実際にイーサーネットをアクティブにしていきます。

sudo ifup eth1

これで、DHCPからIPアドレスを取得してイーサーネットeth1がアクティブになったと思います。IPアドレスは固定しておいた方がいいですね。私は多分邪道だと思うのですが、ネットルーターの方をいじってMACアドレスとIPアドレスを結びつけて固定しています。

ifconfig -aで確認して、eth0だけでなくeth1もアクティブになっているのを確認します。

チャネルボンディングの設定のその前に…

ここまでは別室にセットアップしているMacProには触らずにSSHを使って設定していますが、ここからは直接MacPro(2006)で設定します。理由は後で述べます。

試行錯誤をするんですが、困ったのはこの画面。

これは設定画面ではありませんが、何が何だか…(号泣

文字化けの嵐。エラーが出てもさっぱりわかりません。実はイーサーネットをいったんオフにしないといけない部分があって、SSHでは問題なく表示されるターミナル画面も本体に画面をつなげてやってみるとこの有様。この文字化けのおかげでどれだけ時間をロスしたか。ロケールを変更してもダメでした。普通のシステムであれば、いっそインストールをやり直してやれば良いのですが、なんせ変態システムのMacPro(2006)。そう簡単にはいきません。

Ubuntuサーバーの日本語化-文字化けに対処する! | 経済的自由を得てセミリタイヤ-悠々自適生活!

このリンクにあるfbtermとunifontを使った方法でエラーメッセージを日本語表示させて何とか泥沼から脱出できました。長かった。

今度こそ本当に設定の話

文字化けがとりあえず解消した状態で見えてきたエラーは「そんなチャンネルありませんよ」という内容でした。要するに設定がないということですね。/etc/network/interfaces にbondingチャンネルの記述をすれば良さそうです。それを念頭に入れて検索したら

ありました。ありがとうございました。

ありました。このページで設定されているのは、アクティブ・バックアップというモードでして、私がやりたかったのはラウンドロビン方式です。それを考慮して次のように/etc/network/interfacesを修正しました。

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
        iface lo inet loopback

# The primary network interface
auto eth0
        iface eth0 inet manual
        bond-master bond0

# The secondary network interface
auto eth1
        iface eth1 inet manual
        bond-master bond0

auto bond0
        iface bond0 inet static
        address 192.168.1.100
        netmask 255.255.255.0
        gateway 192.168.1.1
        bond-mode balance-rr
        bond-miimon 100
        bond-slaves none

修正後、

sudo ifdown eth0
sudo ifdown eth1
sudo ifenslave bond0 eth0
sudo ifenslave bond0 eth1

ifdownは一旦インアクティブにするコマンド。ifenslaveはbond0にEthernetを参加させるコマンドですね。

一応、他のサイトではサービスを再起動させると言うことになっているのですが、なぜかエラーが出たのでサービスだけではなく、システムもまとめて再起動させました。その結果、上手くいったみたいですね。

kaizawa@ubuntu ~ ❯❯❯ ifconfig -a
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 2400:4052:83c0:d00:217:f2ff:fe04:80ee  prefixlen 64  scopeid 0x0<global>
        inet6 2400:4052:83c0:d00:24bf:6caa:e4ee:850f  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::217:f2ff:fe04:80ee  prefixlen 64  scopeid 0x20<link>
        ether 00:17:f2:04:80:ee  txqueuelen 1000  (イーサネット)
        RX packets 9075  bytes 698922 (698.9 KB)
        RX errors 0  dropped 1634  overruns 0  frame 0
        TX packets 1635  bytes 204209 (204.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:17:f2:04:80:ee  txqueuelen 1000  (イーサネット)
        RX packets 117645  bytes 152583721 (152.5 MB)
        RX errors 0  dropped 497  overruns 0  frame 0
        TX packets 57956  bytes 4338154 (4.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 18  memory 0xf2c20000-f2c40000  

eth1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:17:f2:04:80:ee  txqueuelen 1000  (イーサネット)
        RX packets 1213  bytes 161388 (161.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1257  bytes 144603 (144.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 19  memory 0xf2c00000-f2c20000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (ローカルループバック)
        RX packets 154393  bytes 9265585 (9.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 154393  bytes 9265585 (9.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

最近差別用語だとしてLinuxなんかでも削除の動きがあるMaster/Slaveがここでは動いている証になっています。bond0がMaster、eth0/1がSlaveになっているのが確認できます。ここまで来るのに丸一日かかってます。疲れました。


テストをして終了。と思ったら、DNSサーバーが思った通りの動きをしてくれていないのが判明。ウ〜ン、困った。

投稿者プロフィール

會澤 賢一
新潟県在住。1964年生まれ、東京オリンピックの年ですね。
突然燃え上がったり、鎮火したり興味の波が激しいので注意が必要です。

カテゴリー:Linux

タグ:

會澤 賢一

新潟県在住。1964年生まれ、東京オリンピックの年ですね。
突然燃え上がったり、鎮火したり興味の波が激しいので注意が必要です。

お気軽にコメントを残していってください