Linuxはデュアルネットワークカードボンドとドライバーインターフェースを使用する

Linuxはデュアルネットワークカードボンドとドライバーインターフェースを使用する

債券とは何か

NIC ボンドは、実稼働シナリオでよく使用されるテクノロジーです。複数の NIC を 1 つの論理 NIC に結合して、ローカル NIC の冗長性、帯域幅の拡張、負荷分散を実現します。

適用可能なシナリオ

サーバーの 2 つのネットワーク カードを結合する必要があり、結合後、異なるトラフィックを伝送するために、ネットワーク カードを異なるネットワーク セグメントのアドレスで構成する必要があります。このとき、サブインターフェイス方式を使用できます。

実験シナリオ

装置

  • サーバー: Server_A
  • コアスイッチ: Switch_A、Switch_B

スイッチ接続モード: スタッキング

サーバーネットワークカード: enp176s0f0、enp176s0f1 (ボンドとして)

IPセグメンテーション

  • 事業セグメント
    VLAN 201: 10.10.51.0/24
  • パブリックネットワーク
    VLAN 401: 111.20.200.88/27

必要とする

サーバー Server_A に接続された 2 つのコア スイッチ Switch_A と Switch_B はスタックされています。Server_A の enp176s0f0 および enp176s0f1 光ポートは、それぞれ Switch_A および Switch_B と相互接続されています。enp176s0f0 と enp176s0f1 を結合し、アドレス 10.10.51.16 でビジネス トラフィックを伝送し、アドレス 111.20.200.90 でパブリック ネットワーク トラフィックを伝送し、スイッチ ポートを eth-trunk としてバインドして VLAN201 および VLAN401 を透過的に伝送する必要があります。

ネットワークカード構成スクリプト

# NetworkManager サービスを停止します systemctl stop NetworkManager.service 
systemctl は NetworkManager.service を無効にします。

# バックアップ cp /etc/sysconfig/network-scripts/ifcfg-enp176s0f0{,.bak}
cp /etc/sysconfig/network-scripts/ifcfg-enp176s0f1{,.bak}

# ネットワーク カードのプロトコルを none に変更し、電源を入れずにデバイスを自動的に起動し、デュアル ネットワーク カードを構成する sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=none/' /etc/sysconfig/network-scripts/ifcfg-enp176s0f0
sed -i 's/ONBOOT=no/ONBOOT=yes/' /etc/sysconfig/network-scripts/ifcfg-enp176s0f0
echo "MASTER=bond0" >>/etc/sysconfig/network-scripts/ifcfg-enp176s0f0
echo "SLAVE=yes" >>/etc/sysconfig/network-scripts/ifcfg-enp176s0f0

sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=none/' /etc/sysconfig/network-scripts/ifcfg-enp176s0f1
sed -i 's/ONBOOT=no/ONBOOT=yes/' /etc/sysconfig/network-scripts/ifcfg-enp176s0f1
echo "MASTER=bond0" >>/etc/sysconfig/network-scripts/ifcfg-enp176s0f1
echo "SLAVE=yes" >>/etc/sysconfig/network-scripts/ifcfg-enp176s0f1

# ネットワークカード bond0 を構成する
エコー "DEVICE=bond0
タイプ=イーサネット
ONBOOT=はい
BOOTPROTO=static" >/etc/sysconfig/network-scripts/ifcfg-bond0

# モジュールファイルを書き込みます。結合モードはモード 0 です。
echo "alias bond0 結合
オプション bond0 miimon=100 mode=0" >/etc/modprobe.d/bond.conf
# モジュール modprobe ボンディングをロードする

# ドライバーインターフェース bond0.201
エコー "DEVICE=bond0.201
タイプ=Vlan
PHYSDEV=ボンド0
ONBOOT=はい
BOOTPROTO=静的
REORDER_HDR=はい
IPアドレス=10.10.51.16
ゲートウェイ=10.10.51.1
ネットマスク=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8
VLAN=はい
VLAN_ID=201" >/etc/sysconfig/network-scripts/ifcfg-bond0.201

# ドライバーインターフェース bond0.401
エコー "DEVICE=bond0.401
タイプ=Vlan
PHYSDEV=ボンド0
ONBOOT=はい
BOOTPROTO=静的
REORDER_HDR=はい
IPアドレス=111.20.200.90
ゲートウェイ=111.20.200.89
ネットマスク=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8
VLAN=はい
VLAN_ID=401" >/etc/sysconfig/network-scripts/ifcfg-bond0.401

# モジュールをロードし、ホストを再起動します modprobe 8021q
リブート

要点

スイッチ側がeth-trunkで始まる場合、サーバー側はサブインターフェースで始まる必要があります。

スイッチ側とサーバー側の両方で LACP ネゴシエーションを有効にするか無効にするかのどちらかにする必要があります。そうでない場合、ポートは異なります。

スイッチの eth-trunk ポートの設定例

[HH2B108-H01-2-HW9006X-SW001-Eth-Trunk12]これを表示する 
#
インターフェース Eth-Trunk12
ポートリンクタイプトランク
ポート トランク 許可パス VLAN 201 401
#
戻る

サーバー側はボンドモード4を使用してLACPプロトコルを開始します。例は次のとおりです。

 # /etc/modprobe.d/bond.conf の詳細
 エイリアス bond0 結合
 オプション bond0 miimon=100 mode=4 lacp_rate=1

サブインターフェース設定ファイルの「DEVICE=bond0.401」の VLAN 番号は、透過的に送信される必要がある VLAN 番号と一致している必要があります。

サブインターフェースを設定したら、設定を有効にするためにサーバーを再起動する必要があります。 ! !

要約:

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

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

<<:  MySQLデータベースの一般的な最適化操作のまとめ(経験共有)

>>:  Ajax jQueryはページ上のdivの更新効果を実現します

推薦する

MySQLの始め方から諦め方まで徹底解説 - インストール

学ぶ内容1. ソフトウェアのインストールとサーバーの設定。 2. (オプションですが、強くお勧めしま...

CSS 極座標のサンプルコード

序文このプロジェクトには、衛星測位用のグラフィックスを含むチャートの要件があり、北半球または南半球の...

MySQL 8.0.22 zip圧縮パッケージ版(無料インストール)のダウンロード、インストール、および構成手順の詳細

目次最初のステップはMySQLをダウンロードすることですステップ2: ダウンロードした圧縮パッケージ...

js配列のfind、some、filter、reduceの違いの詳細な説明

Array の filter、find、some、reduce メソッドの違いを区別し、使用シナリオ...

Mysqlのマージ結果と水平スプライシングフィールドの実装手順

序文最近、レポート機能に取り組んでいたのですが、ある月に各部署に入社した人と退職した人の数をカウント...

時刻を保存するために適切な MySQL の datetime 型を選択する方法

データベースを構築してプログラムを書くとき、日付と時刻の使用は避けられません。データベースには、ti...

Fabric.js は DIY ポストカード機能を実装します

この記事では、DIYポストカード機能を実現するためのfabricjsの具体的なコードを参考までに共有...

React-vscode で jsx 構文を使用する際の問題と解決策

問題の説明プラグインをインストールした後、ES7 React/Redux/GraphQL/React...

Dockerコンテナの中国語言語パックの設定の問題を解決する

Dockerでdocker search centosを使用する場合docker pull dock...

Linuxはscpコマンドを使用してファイルをローカルコンピュータにコピーし、ローカルファイルをリモートサーバーにコピーします。

以下のように表示されます。リモート サーバーのファイルをローカルにコピーします。 scp -r -P...

MySQL での Truncate の使用法の詳細な説明

序文:テーブルをクリアしたいときは、truncate ステートメントをよく使用します。ほとんどの場合...

HTML 文法百科事典_HTML 言語文法百科事典 (必読)

ボリュームラベル、プロパティ名、説明002 <! - - ... - -> コメント00...

Vueは小さな検索機能を実装する

この記事の例では、検索機能を実装するためのVueの具体的なコードを参考までに共有しています。具体的な...