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

推薦する

HTML4とHTML5の違い: 入力にフォーカス実装コードを追加する方法

html4:コードをコピーコードは次のとおりです。 <フォーム> <p>&l...

ウェブページのメモリ使用量とCPU使用量を削減する方法

一部の Web ページは大きく見えなくても開くのに非常に時間がかかる場合があります。一方、他の We...

MySQLテーブルシャーディングとパーティショニングの具体的な実装方法

縦型テーブル垂直テーブル分割とは、多数の列を持つテーブルを複数のテーブルに分割することを意味します。...

Nginx の構成と HTTP 実装コード分析との互換性

OpenSSL を使用して SSL キーと CSR ファイルを生成するHTTPS を設定するには、秘...

CentOS 上での MySQL 5.6 のコンパイルとインストール、および複数の MySQL インスタンスのインストールの詳細な説明

--1. mysql用の新しいグループとユーザーを作成する # ユーザー追加 -M -s /sbin...

Linux gzip コマンドのファイル圧縮実装原理とコード例

gzip は、Linux システムでファイルの圧縮と解凍によく使用されるコマンドです。このコマンドで...

MySQLのint主キーの自己増分の問題を解決する

導入MySQL データベースを使用する場合、int を主キーとして使用し、自動インクリメントに設定す...

Dockerfile を使用して Java ランタイム環境のミラーを作成する方法

現在の環境は次のとおりです。セントロス7.5 docker-ce 18.06.1-ce 1. まずc...

Docker コンテナにおける Patroni の簡単な分析

目次イメージの作成ファイル構造Dockerファイルエントリポイント関数ファイルを生成するイメージを構...

Nginx 構成 クロスドメイン リクエスト Access-Control-Allow-Origin * 詳細な説明

序文403 クロスオリジン エラーが発生しNo 'Access-Control-Allow-...

NginxにLuaモジュールを追加する方法

luaをインストールする http://luajit.org/download/LuaJIT-2.0...

MySQLデータベーストリガーの詳細な説明

目次1 はじめに2 トリガーの紹介3 トリガーを作成する4 トリガーを表示5. トリガーの削除6 結...

MySQL 5.x の文字化け問題の解決方法

MySQL はよく使われるオープンソースのデータベース ソフトウェアですが、初めてのユーザーにはあま...

MySQL 8.0.11 インストール概要チュートリアル図

インストール環境: CAT /etc/os-release CentOS システムのバージョン情報を...

Docker による Oracle 11g イメージ構成のプルに関する詳細なチュートリアル

さっそくAlibaba の oracle11g イメージをプルして構成する docker の記録を開...