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

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

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

チャネルボンディング英 : 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 チャンネルの記述をすれば良さそうです。それを念頭に入れて検索したら

https://atsushinotes.com/bonding-setting_proxmox_ubuntu/
ありました。ありがとうございました。

ありました。このページで設定されているのは、アクティブ・バックアップというモードでして、私がやりたかったのはラウンドロビン方式です。それを考慮して次のように /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 サーバーが思った通りの動きをしてくれていないのが判明。ウ〜ン、困った。

投稿者プロフィール

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA