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 を使用して GitLab をデプロイする方法

Docker-compose は GitLab をデプロイします1. Dockerをインストールする...

シェルスクリプトを使用して CentOS7 に python3.8 環境をインストールする (推奨)

ワンクリック実行仮想マシンに Python 3.8 をインストールするには、ネットワーク アダプター...

MySQL の遅いクエリを見つける方法

序文誰もが日常業務で SQL の最適化を経験したことがあると思います。したがって、最適化の前に、遅い...

シンプルなHTMLとCSSの使い方の詳細な説明

HTML と CSS を含む JD.com のホームページの静的ページ効果を 3 日間で完成させます...

MySQL でのインデックスの追加と削除に関連する操作

目次1. インデックスの役割2. インデックスの作成と削除(1)ALTER TABLE文を使用して、...

Portainer を使用して Docker のビジュアル インターフェースを構築する方法

ポーテナーの紹介Portainer は、ステータス表示パネル、アプリケーション テンプレートの迅速な...

ウェブサイトはいつ広告を掲載すべきでしょうか?

最近、インターネットのベテランと「広告」について議論したのですが、彼から非常に興味深い意見を聞きまし...

MySQL でストリーミングクエリを使用してデータ OOM を回避する

目次1. はじめに2. JDBCはストリーミングクエリを実装する3. パフォーマンステスト3.1. ...

HTML コードの書き方に関する提案のまとめ

リソースファイルのプロトコルを省略する画像、メディアファイル、スタイル、スクリプトの URL では、...

CSS が複数のクラスに一致する方法のサンプルコード

CSSは複数のクラスにマッチする次の HTML タグ li、クラスはオープン スタイルです。私の要件...

Tomcat プロセスの CPU 使用率が高い場合の解決策

目次場合コンテキスト切り替えのオーバーヘッド?要約するCPU は多くの場合、システム パフォーマンス...

MySQL で重複レコードをクエリして削除する方法の完全なガイド

序文この記事では主に、MySQL で重複レコードをクエリして削除する方法を紹介します。参考と学習のた...

LinuxでRPMを使用してmysql5.7.17をインストールする

LinuxでのMySQL5.7 rpmのインストール方法を参考までに記録します。具体的な内容は以下の...

フロントエンド JavaScript におけるリフレクションとプロキシ

目次1. 反射とは何ですか? 2. JavaScriptで反映する2.1 Reflect.get(タ...