Linuxは、単一のIPをバインドするためにデュアルネットワークカードを実装するためにボンドを使用します。サンプルコード

Linuxは、単一のIPをバインドするためにデュアルネットワークカードを実装するためにボンドを使用します。サンプルコード

ネットワークの高可用性を実現するには、複数のネットワーク カードを仮想ネットワーク カードにバインドして外部サービスを提供し、物理ネットワーク カードの 1 つに障害が発生しても接続が中断されないようにする必要がある場合があります。
Bond は、Linux では bond、IBM では etherchanel、Broadcom では team と呼ばれますが、名前がどのように変わっても、その効果は 2 枚以上のネットワーク カードを 1 つとして使用することで、帯域幅を増やし、冗長性を向上させることです。

デュアルネットワークカードボンディングを実装するには、ボンドとチームの2つの方法があります。
ここではまず結合法を書き留めます

ボンド対応モード

合計7つの結合モード[0-6]がサポートされており、そのうち次の3つが一般的に使用されます。

  • mode=0: デフォルト、負荷分散モード、自動バックアップ付きですが、スイッチ構成が必要です。
  • mode=1: アクティブ/スタンバイ モード。1 つの回線が切断された場合、他の回線が自動的に引き継ぎます。スイッチの設定は必要ありません。
  • mode=6: 自動バックアップ付きの負荷分散モード。スイッチ構成は不要です。

その他のモードについては、以下の通りです。

mode=2: ネットワーク カードのシリアル番号 = (送信元 MAC アドレス XOR ターゲット MAC アドレス) % スレーブ ネットワーク カードの数を選択します。その他の送信戦略は、xmit_hash_policy 構成項目を通じて指定できます。
mode=3: ブロードキャスト戦略を使用し、データパケットはすべてのスレーブネットワークカードにブロードキャストされて送信されます。
mode=4: ダイナミック リンク アグリゲーション戦略を使用します。起動時に、アグリゲーション グループが作成されます。すべてのスレーブ ネットワーク カードは同じ速度とデュプレックス設定を共有します。ただし、mode4 には 2 つの必須条件があります。

1. ethtool を使用して各スレーブ ネットワーク カードの速度とデュプレックス設定を取得することをサポートします。
2.スイッチはIEEE 802.3adダイナミックリンクアグリゲーションモードをサポートしている必要があります。
mode=5: 各スレーブ ネットワーク カードの速度に基づいて送信ネットワーク カードを選択します。必要条件: ethtool を使用して各スレーブ ネットワーク カードのレートを取得できることをサポートします。

ボンドの設定

ネットワークカードボンド1 IP絆モード
ens33、ens36 192.168.171.111モード1

注: IPアドレスはbond1に設定されており、物理ネットワークカードにIPアドレスを設定する必要はありません。

# ボンディングモジュールをロードし、ロードされたことを確認します [root@web01 ~]# modprobe --first-time bond
[root@web01 ~]# lsmod | grep 結合
結合 141566 0 
#bond1設定ファイルを編集する [root@web01 ~]# cat > /etc/sysconfig/network-scripts/ifcfg-bond1 << EOF
> デバイス=ボンド1
> TYPE=絆
>IPADDR=192.168.171.111
> ネットマスク=255.255.255.0
> ゲートウェイ==192.168.171.2
> DNS1=114.114.114.114
> DNS2=8.8.8.8
> USERCTL=いいえ
> BOOTPROTO=なし
>ONBOOT=はい
> 終了
#ens33 設定ファイルを変更する [root@web01 ~]# cat > /etc/sysconfig/network-scripts/ifcfg-ens33 << EOF
> デバイス=ens33
> タイプ=イーサネット
>ONBOOT=はい
> BOOTPROTO=なし
> DEFROUTE=はい
> IPV4_FAILURE_FATAL=いいえ
> NMAE=ens33
> MASTER=bond1 # 上記の ifcfg-bond0 設定ファイルの DEVICE 値と一致する必要があります > SLAVE=yes
> 終了
#ens36 設定ファイルを変更する [root@web01 ~]# cat > /etc/sysconfig/network-scripts/ifcfg-ens33 << EOF
> デバイス=ens36
> タイプ=イーサネット
>ONBOOT=はい
> BOOTPROTO=なし
> DEFROUTE=はい
> IPV4_FAILURE_FATAL=いいえ
> 名前=ens36
> マスター=bood1
> スレーブ=はい
> 終了

# ボンディングの設定
[root@web01 ~]# cat >> /etc/modules-load.d/bonding.conf << EOF
> エイリアス bond1 結合
> options bonding mode=1 miimon=200 # ボンディングモジュールをロードし、外部仮想ネットワークインターフェースデバイスはbond1です
> 終了

#設定を有効にするためにネットワークカードを再起動します[root@web01 ~]# systemctl restart network

注意: 構成が完了した後、ネットワーク カード サービスが起動に失敗し、ログにエラーが見つからない場合、NetworkManager を閉じて、ネットワーク カードを再起動してみてください。

ネットワークを再起動した後、各ネットワークカードの情報を確認します

[root@web01 ~]# ip a show ens33
2: ens33: <BROADCAST、MULTICAST、SLAVE、UP、LOWER_UP> mtu 1500 qdisc pfifo_fast マスター bond1 状態 UP グループ デフォルト qlen 1000
  リンク/イーサ 00:0c:29:9f:33:9f brd ff:ff:ff:ff:ff:ff
[root@web01 ~]# ip a show ens36
3: ens36: <BROADCAST、MULTICAST、SLAVE、UP、LOWER_UP> mtu 1500 qdisc pfifo_fast マスター bond1 状態 UP グループ デフォルト qlen 1000
  リンク/イーサ 00:0c:29:9f:33:9f brd ff:ff:ff:ff:ff:ff
[root@web01 ~]# ip a show bond1
7: bond1: <BROADCAST、MULTICAST、MASTER、UP、LOWER_UP> mtu 1500 qdisc noqueue 状態 UP グループ デフォルト qlen 1000
  リンク/イーサ 00:0c:29:9f:33:9f brd ff:ff:ff:ff:ff:ff
  inet 192.168.171.111/24 brd 192.168.171.255 スコープ グローバル noprefixroute bond1
    valid_lft 永久 preferred_lft 永久
  inet6 fe80::20c:29ff:fe9f:339f/64 スコープ リンク 
    valid_lft 永久 preferred_lft 永久

bond1関連情報を見る

# bond1 のインターフェースステータスを表示します [root@web01 ~]# cat /proc/net/bonding/bond1        
イーサネット チャネル ボンディング ドライバー: v3.7.1 (2011 年 4 月 27 日)

ボンディング モード: 負荷分散 (ラウンドロビン) # ボンディング モード MII ステータス: アップ # インターフェイス ステータス MII ポーリング間隔 (ミリ秒): 100
アップ遅延(ミリ秒): 0
ダウン遅延 (ms): 0

スレーブインターフェース: ens33 # バックアップインターフェース: ens33
MII ステータス: アップ # インターフェース ステータス 速度: 1000 Mbps # ポート レート デュプレックス: フル
リンク失敗回数: 0
永続的な HW アドレス: 00:0c:29:9f:33:9f # インターフェースの永続的な MAC アドレス スレーブ キュー ID: 0

スレーブインターフェース: ens36 # バックアップインターフェース: ens36
MII ステータス: アップ
速度: 1000 Mbps
デュプレックス:フル
リンク失敗回数: 0
永続的な HW アドレス: 00:0c:29:9f:33:a9
スレーブキュー ID: 0

このステップが達成されると、ens33またはens36のネットワークカードのいずれかがダウンしても、通信には影響しません。

注意: テストに VMware Workstation 仮想マシンを使用している場合は、テストに ifdown ens33 または ifdown ens36 コマンドを直接実行しないでください。この方法では、仮想マシンが原因でテストが機能しません。ネットワーク アダプタで接続をキャンセルできます。

Linux で bond を使用してデュアル ネットワーク カードを単一の IP にバインドするサンプル コードに関するこの記事はこれで終わりです。Linux でデュアル ネットワーク カードを単一の IP にバインドする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux システムのデュアル ネットワーク カード バインディング構成の実装
  • Linux デュアル ネットワーク カード バインディング スクリプト メソッドの例
  • Linuxはデュアルネットワークカードボンドとドライバーインターフェースを使用する
  • Linux でのデュアル ネットワーク カードの Firewalld の設定プロセス (推奨)
  • 負荷分散を実現するための Linux デュアル ネットワーク カード バインディングの詳細な説明
  • Linux でデュアル ネットワーク カードを設定する方法
  • Linux システムでのデュアル ネットワーク カード構成の実践の概要

<<:  Electronで不規則な形状の透明部分をクリックする実装

>>:  MySQL が uuid または snowflake id を主キーとして使用することを推奨しない理由の詳細な分析

推薦する

jsはカスタムドロップダウンボックスを実装します

この記事の例では、カスタムドロップダウンボックスを実装するためのjsの具体的なコードを参考までに共有...

HTML チュートリアル: 順序なしリスト

<br />原文: http://andymao.com/andy/post/102.h...

ミニプログラムは左スライドのドロワーメニューをネイティブに実装します

目次WXS レスポンス イベントプランAページ構造とスタイルWXS イベントコールバック関数WXS ...

MySQLデータのグループ化の詳細な説明

グループを作成グループ化は、SELECT ステートメントの GROUP BY 句で設定されます。例:...

Vueリクエストインターセプターの設定方法の詳しい説明

以下の手順に従ってください1. request.jsコンテンツ: http リクエスト インターセプ...

CSS での配置の使用方法の詳細な研究 (要約)

CSS における位置指定の概要position属性は英語で位置を意味し、 CSSでの主な機能は要素...

設定ファイルを書いてMyBatisを簡単に使う方法

設定ファイルを書いてMyBatisを簡単に使う方法マイバティス3.xここでは MyBatis につい...

js キャンバスはランダムなパーティクル効果を実現します

この記事の例では、参考のためにjsキャンバスランダムパーティクルエフェクトの具体的なコードを共有して...

el-table のテーブルを最適化するために仮想リストを使用する方法についての簡単な説明

目次序文解決具体的な実装満たすべき前提条件質問序文テーブルをよく使用します。データ量が多い場合は直接...

MySQL 8.0.18 はクローンプラグインを使用して MGR 実装を再構築します

3 ノード MGR 内の 1 つのノードに異常があり、MGR クラスターに再度追加する必要があるとし...

ウィンドウの中央にブロック要素の位置を設定する方法

ウィンドウの中央にブロック要素の位置を設定する方法ブロック要素をウィンドウの中央に配置する上記の方法...

ZabbixはPSK共有キーを使用してサーバーとエージェント間の通信を暗号化します。

Zabbix バージョン 3.0 以降、Zabbix サーバー、Zabbix プロキシ、Zabbi...

Linux カーネル デバイス ドライバー カーネル デバッグ テクニカル ノート集

/****************** * カーネルデバッグ技術 ****************...

Angularの親子コンポーネント通信の詳細な説明

目次使用されるAPI簡単な例人.ts親コンポーネントサブコンポーネント効果要約する使用されるAPI ...

Zen Coding 簡単で素早いHTMLの書き方

禅コーディングテキストエディタプラグインです。 Zen Coding を使用するテキスト エディター...