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 を主キーとして使用することを推奨しない理由の詳細な分析

推薦する

Docker-compose インストール yml ファイルの設定方法

目次1. オフラインインストール2. オンラインインストール3. アンインストール4. ymlファイ...

Linux の特別な権限 SUID、SGID、SBIT の詳細な説明

序文Linux のファイルまたはディレクトリの権限については、通常の rwx 権限についてすべて知っ...

Filebeat を使用して Nginx ログを収集する方法

Nginx ログは、ユーザーの住所の場所や行動プロファイルなどを分析するために使用できます。Elas...

jQuery はテーブルのページング効果を実装します

この記事では、テーブルのページング効果を実現するためのjQueryの具体的なコードを参考までに紹介し...

VScode設定のリモートデバッグLinuxプログラムの問題を解決する

VScode リモートデバッグ Linux プログラムの問題について見てみましょう。具体的な内容は以...

Webフロントエンド開発CSS関連チームコラボレーション

フロントエンド開発部門は成長し、スタッフも増加し、技術も向上しています。 CSSer はフロントエン...

TomcatコンポーネントはWebサーバーのアーキテクチャの進化を示しています

1. tomcat とは誰ですか? 2. Tomcat は何ができますか? Tomcat は Web...

MySQLを閉じることができない問題を解決する方法

mysql が閉じない場合の解決策:コンピュータのタスクバーを右クリックしてタスクマネージャーを開き...

Windows Server 2016 標準キー アクティベーション キー シリアル番号

Windows Server 2016 アクティベーション キーを皆さんと共有したいと思います。wi...

テキストエリアをレイアウトしたときにテキストが左下にあり、サイズを変更できない問題の解決策

2つの小さな問題ですが、長い間私を悩ませていました。最初の質問テキストエリアの左側のテキストは常にテ...

MySql 8.0.16 バージョンのインストールでは、「UTF8B3」ではなく「UTF8B4」が使用されるように求められます。

MySQL 8.0.16 にインストールする場合、「UTF8B3」ではなく「UTF8B4」が使用さ...

MySQL のテーブルリターンとインデックスカバレッジの例の詳細な説明

目次インデックスタイプインデックス構造非クラスター化インデックスクエリインデックスカバー要約するイン...

Linux で Apache を使用してファイル サーバーを構築する手順

1. ファイルサーバーについてプロジェクトでは、公開ソフトウェアやデータをプロジェクト チーム メン...

中国語でのNginx設定パラメータの詳細な説明(負荷分散とリバースプロキシ)

PS: 最近、nginx を詳細に紹介している <<High-Performance ...

JSはスネークゲームを実装する

目次1. 初期化構造2. 蛇の色のレンダリング3. ヘビの動き4. ヘビの死を判定する方法 ヘビの死...