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

推薦する

Windows はリモート デスクトップが長時間自動的に切断されるのを防ぎます

Windows リモート デスクトップを使用してサーバーに接続したことがある人なら、リモート デスク...

16進カラーコード(完全版)

赤とピンク、およびそれらの 16 進コード。 #990033 #CC6699 #FF6699 #FF...

WMLタグの概要

構造関連タグ--------------------------------------------...

ES6 配列のコピーおよびフィルメソッド copyWithin() および fill() の具体的な使用法

目次バッチコピー copyWithin()配列を埋めるメソッド fill()指数の計算方法については...

Linux でリモートから MySQL を自動的にバックアップする方法

序文:基本的に、自社で使用する場合でも、顧客向けにサーバーを展開する場合でも、MySQL のバックア...

CentOS 7 環境でソースコードから MySQL 5.7 をインストールする方法

この記事では、CentOS 7 環境でソース コードから MySQL 5.7 をインストールする方法...

MySQLクエリキャッシュの簡単な使い方の詳細な説明

目次1. クエリキャッシュの実装プロセス2. クエリキャッシュを構成する3. クエリキャッシュを有効...

CentOS7 で docker を使用して Apollo 構成センターをデプロイする実装

Apollo オープンソース アドレス: https://github.com/ctripcorp/...

Tomcatのサーバーオプションの詳細な説明

1. 構成デフォルトでは、最初の 2 つはチェックされていないので、チェックする必要があります。 (...

MySQLデータベースに接続し、クエリ操作を実行するためのIDEAの完全なコード

1.まずMysqlリンク設定ページを書く パッケージ com.wretchant.fredis.me...

MySQLでトリガーを作成する方法

この記事の例では、参考のためにMySQLトリガーを作成するための具体的なコードを共有しています。具体...

重複したMySQLテーブルをマージして削除する簡単な方法

シナリオ:クロールされたデータは、別のメインテーブルと同じ構造を持つデータテーブルを生成するため、マ...

JavaScript による省・市連携効果の実現

この記事では、省と都市間の連携効果を実現するためのJavaScriptの具体的なコードを参考までに共...

ログインと登録を実現するSpringboot+VUE

この記事の例では、ログインと登録を実装するためのspringboot+VUEの具体的なコードを参考ま...

CSS における要素の表示モード

CSS では、要素タグは、要素の表示モードの違いに応じて、インラインレベル要素とブロックレベル要素の...