GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでフェイルオーバーと高可用性ネットワークボンディングを構成する方法

このチュートリアルでは、Linuxサーバーでネットワークボンディングを構成する方法について説明します。始める前に、ネットワークボンディングとは何か、そしてそれが何をするのかを説明しましょう。 Windows環境では、ネットワークボンディングはネットワークチーミングと呼ばれます。これは、メインのイーサネットケーブルの1つが誤動作しているか、正しく構成されていないシナリオで、サーバーアーキテクチャが高可用性とフェイルオーバーを提供するのに役立つ機能です。

通常、これはベストプラクティスであり、運用目的でサーバーをセットアップするときに実装する機能が必要です。ただし、この機能はLinux環境構成で実行できますが、サーバーにリンクされているスイッチがネットワークボンディングをサポートしていることを確認するには、まずネットワーク管理者に確認する必要があります。サーバー環境に実装できるボンディングモードはいくつかあります。以下は、利用可能なモードとその機能のリストです。

  • バランス-rr
    このモードは、ラウンドロビンポリシーを介して、負荷分散とフォールトトレランス(フェイルオーバー)機能を提供します。使用可能な最初のスレーブから最後のスレーブまで順番にパケットを送信することを意味します。
  • アクティブバックアップ
    このモードは、アクティブバックアップポリシーを介してフォールトトレランス機能を提供します。これは、ボンディングイーサネットが起動すると、イーサネットスレーブの1つだけがアクティブになることを意味します。他のイーサネットスレーブは、現在アクティブなスレーブが起動に失敗した場合にのみアクティブになります。このモードを選択すると、ボンディングMACアドレスが1つのネットワークアダプタでのみ外部に表示されることがわかります。これは、スイッチの混乱を避けるためです。
  • バランス-xor
    このモードは、負荷分散とフォールトトレランスを提供します。選択した送信ハッシュポリシーに基づいて送信します。代替の送信ポリシーは、xmit_hash_policyオプションを介して選択できます。
  • ブロードキャスト
    このモードは、フォールトトレランスのみを提供します。すべてのスレーブイーサネットインターフェイスですべてを送信します。
  • 802.3ad
    このモードは、負荷分散とフォールトトレランスを提供します。同じ速度とデュプレックス設定を共有する集約グループを作成します。これは、アクティブアグリゲーターのすべてのスレーブイーサネットインターフェイスを利用し、802.3ad仕様に基づいています。このモードを実装するには、ethtoolが各スレーブの速度とデュプレックスモードを取得するためのベースドライバーをサポートしている必要があります。スイッチは動的リンクアグリゲーションもサポートする必要があります。通常、これには詳細な構成のためにネットワークエンジニアの介入が必要です。
  • バランス-TLB
    このモードは、TLBという名前が送信負荷分散を表すため、負荷分散機能を提供します。 。このモードでは、構成tlb_dynamic_lb =1の場合、発信トラフィックは各スレーブの現在の負荷に応じて分散されます。構成tlb_dynamic_lb=0の場合、負荷分散は無効になりますが、負荷はhasd分散を使用してのみ分散されます。このモードでは、ethtoolは各スレーブの速度を取得するためのベースドライバーをサポートする必要があります。
  • バランス-ALB
    このモードは、TLBという名前が適応型負荷分散を表すため、負荷分散機能を提供します。 。送信トラフィックと受信トラフィックの両方が結合されていることを除いて、balance-tlbと同様です。 ARPネゴシエーションを実現することでロードバランシングを受信します。ボンディングドライバは、ローカルシステムから送信されたARP応答をインターセプトし、送信元ハードウェアアドレスをボンディング内のスレーブの1つの一意のハードウェアアドレスで上書きします。このモードでは、ethtoolは各スレーブの速度を取得するためのベースドライバーをサポートする必要があります。


1。予備的注意

このチュートリアルでは、32ビットバージョンのOracleLinux6.4を使用しています。構成はOracleLinuxで行われていますが、この手順はCentOSおよびRedHatOSディストリビューションと64ビットシステムにも適用できることに注意してください。セットアップ例の最終結果は、イーサネットネットワークの1つを無効にしても、ボンディングサーバーへの接続が接続されたままになることを示しています。この例では、アクティブバックアップポリシーであるモード1を使用してネットワークボンディングを適用する方法を示します。


2。インストールフェーズ

このプロセスでは、インストールは必要ありません。サーバーのデフォルトのLinuxインストールには、ネットワークボンディング構成に必要なすべてのパッケージが含まれています。


3。構成フェーズ

構成を開始する前に、まずサーバーに少なくとも2つのイーサネットインターフェイスが構成されていることを確認する必要があります。これを確認するには、ネットワーク構成フォルダーに移動し、使用可能なイーサネットインターフェイスを一覧表示します。手順は次のとおりです。

cd /etc/sysconfig/network-scripts/
ls *ifcfg*eth*

結果は次のとおりです。

ifcfg-eth0 ifcfg-eth1 

現在、サーバーにETH0とETH1の2つのイーサネットインターフェイスが設定されていることに注意してください。

次に、BOND0と呼ばれるボンディングインターフェイスを構成しましょう。このインターフェイスは、ETH0およびETH1の物理イーサネットインターフェイスを含む仮想イーサネットインターフェイスになります。手順は次のとおりです。

vi ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
MASTER=yes
IPADDR=172.20.43.110
NETMASK=255.255.255.0
GATEWAY=172.20.43.1
BONDING_OPTS="mode=1 miimon=100"
TYPE=Ethernet

次に実行します:

ls *ifcfg*bon*

結果は次のとおりです。

ifcfg-bond0 


以上です。 BOND0インターフェイス内にIPアドレスが含まれていることに注意してください。このIPアドレスは、サーバーに接続されている唯一のIPアドレスになります。プロセスを続行するには、BOND0インターフェイスに関連する物理イーサネットインターフェイスを変更する必要があります。手順は次のとおりです。

vi ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
vi ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes

終わり。インターフェイスETH0とETH1を変更しました。両方のインターフェース内のIPアドレスを削除し、MASTER=bond0を追加したことに注意してください。これは、両方のインターフェイスがイーサネットBOND0インターフェイス専用の仮想インターフェイスになることを検証するために必要です。

構成を続行します。 /etc/modprobe.dの下にbonding.confという名前のボンディング構成ファイルを作成しましょう。手順は次のとおりです。

vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bond0 mode=1 miimon=100
modprobe bonding 

上記の構成に基づいて、インターフェースBOND0を使用してボンディングモジュールを構成しました。また、アクティブバックアップポリシーであるmode=1を使用するようにボンディング構成を割り当てました。オプションmiimon=100は、ボンディングサーバーがインターフェースステータスをミリ秒単位で監視するための監視頻度を表します。上記の説明に従って、このモードはサーバーネットワーク構成にフォールトトレランス機能を提供します。

すべてがセットアップされたら、新しい構成をロードするためにネットワークサービスを再起動しましょう。手順は次のとおりです。

service network restart
Shutting down interface eth0: [ OK ]
Shutting down interface eth1: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: [ OK ]


すばらしいです。これで、上記で作成した新しい構成が読み込まれました。 BOND0と呼ばれる新しいインターフェースがネットワークリストに表示されます。また、インターフェイスETH0およびETH1インターフェイスに割り当てられたIPアドレスがなく、BOND0インターフェイスのみがIPを表示していることに気付くでしょう。

ifconfig
bond0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
inet addr:172.20.43.110 Bcast:172.20.43.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe61:e488/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:1723 errors:0 dropped:0 overruns:0 frame:0
TX packets:1110 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:147913 (144.4 KiB) TX bytes:108429 (105.8 KiB)
>
eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1092 errors:0 dropped:0 overruns:0 frame:0
TX packets:1083 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103486 (101.0 KiB) TX bytes:105439 (102.9 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:632 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:44487 (43.4 KiB) TX bytes:3288 (3.2 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:208 errors:0 dropped:0 overruns:0 frame:0
TX packets:208 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:18080 (17.6 KiB) TX bytes:18080 (17.6 KiB)


次のコマンドを使用して、結合ステータスを確認することもできます:

cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:61:e4:88
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:c8:46:40
Slave queue ID: 0

上記で、アクティブバックアップモードを使用して、インターフェイスETH0およびETH1をボンディング構成に正常に変換したことに注意してください。また、サーバーはインターフェースETH0を使用しており、ETH1はバックアップインターフェースとして使用されます。


4。テストフェーズ

これで、すべてが期待どおりに構成されました。作成した構成が正しいことを確認するために、簡単なテストを行いましょう。このテストでは、新しいサーバー(またはLinuxデスクトップ)にログインし、ボンディングサーバーへのpingを開始して、テスト中に断続的な接続が発生するかどうかを確認します。手順は次のとおりです。

login as: root
[email protected]'s password:
Last login: Wed Sep 14 12:50:15 2016 from 172.20.43.80
ping 172.20.43.110
PING 172.20.43.110 (172.20.43.110) 56(84) bytes of data.
64 bytes from 172.20.43.110: icmp_seq=1 ttl=64 time=0.408 ms
64 bytes from 172.20.43.110: icmp_seq=2 ttl=64 time=0.424 ms
64 bytes from 172.20.43.110: icmp_seq=3 ttl=64 time=0.415 ms
64 bytes from 172.20.43.110: icmp_seq=4 ttl=64 time=0.427 ms
64 bytes from 172.20.43.110: icmp_seq=5 ttl=64 time=0.554 ms
64 bytes from 172.20.43.110: icmp_seq=6 ttl=64 time=0.443 ms
64 bytes from 172.20.43.110: icmp_seq=7 ttl=64 time=0.663 ms
64 bytes from 172.20.43.110: icmp_seq=8 ttl=64 time=0.961 ms
64 bytes from 172.20.43.110: icmp_seq=9 ttl=64 time=0.461 ms
64 bytes from 172.20.43.110: icmp_seq=10 ttl=64 time=0.544 ms
64 bytes from 172.20.43.110: icmp_seq=11 ttl=64 time=0.412 ms
64 bytes from 172.20.43.110: icmp_seq=12 ttl=64 time=0.464 ms
64 bytes from 172.20.43.110: icmp_seq=13 ttl=64 time=0.432 ms

この間、ボンディングサーバーに戻り、イーサネットインターフェイスETH0をオフにします。手順は次のとおりです。

ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1092 errors:0 dropped:0 overruns:0 frame:0
TX packets:1083 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103486 (201.0 KiB) TX bytes:105439 (122.9 KiB)
ifdown eth0 

これで、ネットワークインターフェイスETH0のサービスがオフになりました。ボンディング状態を確認しましょう。手順は次のとおりです。

cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:c8:46:40
Slave queue ID: 0

ETH0インターフェイスがボンディングステータスで存在しなくなったことに気付くでしょう。この間、前のテストサーバーに戻り、ボンディングサーバーへの継続的なpingを確認しましょう。

64 bytes from 172.20.43.110: icmp_seq=22 ttl=64 time=0.408 ms
64 bytes from 172.20.43.110: icmp_seq=23 ttl=64 time=0.402 ms
64 bytes from 172.20.43.110: icmp_seq=24 ttl=64 time=0.437 ms
64 bytes from 172.20.43.110: icmp_seq=25 ttl=64 time=0.504 ms
64 bytes from 172.20.43.110: icmp_seq=26 ttl=64 time=0.401 ms
64 bytes from 172.20.43.110: icmp_seq=27 ttl=64 time=0.454 ms
64 bytes from 172.20.43.110: icmp_seq=28 ttl=64 time=0.432 ms
64 bytes from 172.20.43.110: icmp_seq=29 ttl=64 time=0.434 ms
64 bytes from 172.20.43.110: icmp_seq=30 ttl=64 time=0.411 ms
64 bytes from 172.20.43.110: icmp_seq=31 ttl=64 time=0.554 ms
64 bytes from 172.20.43.110: icmp_seq=32 ttl=64 time=0.452 ms
64 bytes from 172.20.43.110: icmp_seq=33 ttl=64 time=0.408 ms
64 bytes from 172.20.43.110: icmp_seq=34 ttl=64 time=0.491 ms

これで、インターフェイスETH0をシャットダウンしても、ボンディングサーバーにpingを実行してアクセスできることがわかります。それでは、もう1つテストを行いましょう。 ETH0インターフェイスをオンに戻し、ETH1インターフェイスをオフにします。

ifup eth0
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:c8:46:40
Slave queue ID: 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:61:e4:88
Slave queue ID: 0

ETH0インターフェイスはすでに起動しているので、ETH1インターフェイスをシャットダウンしましょう。

ifdown eth1
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:61:e4:88
Slave queue ID: 0


それでは、テストサーバーに戻って、ボンディングサーバーに対して行われた継続的なpingで何が起こるかを確認しましょう。

64 bytes from 172.20.43.110: icmp_seq=84 ttl=64 time=0.437 ms
64 bytes from 172.20.43.110: icmp_seq=85 ttl=64 time=0.504 ms
64 bytes from 172.20.43.110: icmp_seq=86 ttl=64 time=0.401 ms
64 bytes from 172.20.43.110: icmp_seq=87 ttl=64 time=0.454 ms
64 bytes from 172.20.43.110: icmp_seq=88 ttl=64 time=0.432 ms
64 bytes from 172.20.43.110: icmp_seq=89 ttl=64 time=0.434 ms
64 bytes from 172.20.43.110: icmp_seq=90 ttl=64 time=0.411 ms
64 bytes from 172.20.43.110: icmp_seq=91 ttl=64 time=0.420 ms
64 bytes from 172.20.43.110: icmp_seq=92 ttl=64 time=0.487 ms
64 bytes from 172.20.43.110: icmp_seq=93 ttl=64 time=0.551 ms
64 bytes from 172.20.43.110: icmp_seq=94 ttl=64 time=0.523 ms
64 bytes from 172.20.43.110: icmp_seq=95 ttl=64 time=0.479 ms


いいね!ボンディングサーバーがネットワークフェイルオーバー状態でのディザスタリカバリシナリオに対応できるように構成し、証明しました。


Linux
  1. Linuxで静的IPアドレスを設定してネットワークを構成する方法

  2. ArchLinuxで静的および動的IPアドレスを構成する方法

  3. ネットワーク インターフェイス HA の Linux Etherchannel ボンディングをセットアップする方法

  1. Redhat7Linuxで仮想ネットワークインターフェースを設定する方法

  2. RHEL 8 / CentOS8Linuxでネットワークインターフェイスボンディングを構成する方法

  3. Linux に EMC PowerPath をインストールして構成する方法

  1. LinuxおよびUnixで静的IPアドレスを構成する方法

  2. NetplanとNMTUIを使用してLinuxでネットワークを構成する方法

  3. 高可用性を備えたHiveをインストールおよび構成する方法–パート7