挑戦する
バックアップデバイスを使用してこのアドレスが元々属しているデバイスとの通信が失われた場合、特定のIPアドレス(ゲートウェイ、重要なサーバーなど)の操作性を確保する必要があります。
この記事では、この目的のためにDebian Linux、CARPプロトコル、およびucarpユーティリティを使用します。
動作原理
- 同じサービスを持つ1つ以上のバックアップがメインデバイスの所有者IP(マスター)に追加されます
- 各デバイスには、一意のサービスIPアドレスと割り当て可能な優先度が追加されています。
- 冗長デバイスは継続的にマスターをポーリングし、
- マスターが応答を停止するとすぐに、最高の優先度を持つバックアップデバイスは、ネットワークインターフェイスのパブリックIPを上げます。
プロトコルと用語
- ホットスタンバイ -メカニズムの一般的な指定(およびシスコの古い独自のHSRPプロトコルの名前)。リソースに対して予約が作成され、アイドルモードで動作し、すぐに自動的に動作モードに切り替わる準備ができています。
- VRRP 、仮想ルーター冗長プロトコル -HSRPに基づいてIETFによって開発されましたが、互換性はありません。 RFCとして入手可能ですが、シスコの特許ブックマークが含まれています。 多くのプロ級のハードウェアルーターでサポートされており、Linux / Unix用のオープンソース実装を備えています。
- CARP 、Common Address Redundancy Protocol-オープン、OpenBSDの一部として開発され、FreeBSDに移植されました。 * BSDでは、カーネルによって直接サポートされ、基になるシステムによって制御されます。
- 高可用性 (HA)は、IPアドレスに適用された場合のVRRPおよびCARPのホットスタンバイの意味です。
- 負荷分散 (LB)は、HAと組み合わせてよく言及されますが、この例では提供されていません。
Linux / Unixソリューション
- heartbeat-クラスターノード用のシステム、つまり IPアドレスの追加と削除だけではありません( アプリケーション例 )。
- keepalivedは、クラスターを編成するための別のシステムです。
- carpは、Evgeny PolyakovによるLinuxカーネル用のモジュールです。 公式のコアには含まれていません。標準のCARPでは、互換性が不完全であるか、まったく互換性がありません。
- vrrpd 、 ucarp -VRRPおよびCARPを実装するユーザー空間デーモン。
テストシステム構成
- 1つの仮想フォールトトレラントVRを形成する2つの物理ルーターR1およびR2 。
- 1.2.3.4はVRの外部IPアドレスです。
- 10.0.0.1/16-VRの内部IPアドレス。
- eth0-ルーターのLANインターフェイス。
- eth1-ルーターのWANインターフェイス。
- 10.255.0.0/24-LANインターフェースを介してルーターを接続するためのプライベートサブネット。
- 10.255.1.0/24-WANインターフェイスを介してルーターを接続するためのプライベートサブネット。
- 10.255。*。11、.12、.13、...-プライベートサブネットのルーターR1、R2、...のIPアドレス。
- 10.0.0.2-10.0.0.1のデフォルトゲートウェイでテストコンピューター
R1およびR2にucarpをインストールする
apt-get install ucarp
ドキュメント
Debianでは、ucarpのセットアップと実行は直接行われませんが、ネットワーク設定
/ etc / network / interfacesの標準システム設定ファイルの追加パラメーターを使用するため、最初に「man ucarp」を読むことはお勧めしません(これは冗長ではありません)および
/usr/share/doc/ucarp/README.Debian 。
このアプローチには長所と短所の両方があります。 一方では、設定がより視覚的になります。 一方、1つのインターフェイスで複数の独立した仮想IPをサポートする必要がある場合、最初を除くすべての場合、ucarpを手動で起動する必要があります。
R1への設定
auto eth0
iface eth0 inet static
address 10.255.0.11
netmask 255.255.255.0
ucarp-vid 1
ucarp-vip 10.0.0.1
ucarp-password qwerty1
ucarp-advskew 10
iface eth0:ucarp inet static
address 10.0.0.0.1
netmask 255.255.0.0
iface eth1 inet static
address 10.255.1.11
netmask 255.255.255.0
ucarp-vid 2
ucarp-vip 1.2.3.4
ucarp-password qwerty2
ucarp-advskew 10
iface eth1:ucarp inet static
address 1.2.3.4
netmask 255.255.255.248
gateway 1.2.3.1
R2で構成する
auto eth0
iface eth0 inet static
address 10.255.0.12
netmask 255.255.255.0
ucarp-vid 1
ucarp-vip 10.0.0.1
ucarp-password qwerty1
ucarp-advskew 20
iface eth0:ucarp inet static
address 10.0.0.1
netmask 255.255.0.0
iface eth1 inet static
address 10.255.1.12
netmask 255.255.255.0
ucarp-vid 2
ucarp-vip 1.2.3.4
ucarp-password qwerty2
ucarp-advskew 20
iface eth1:ucarp inet static
address 1.2.3.4
netmask 255.255.255.248
gateway 1.2.3.1
説明
- vidはフェールオーバーグループ番号です。 すべてのサーバーで同じでなければなりません。 1から255。
- パスワード -ネットワークプロトコル暗号化キー。 このグループのすべてのメンバーサーバーで同じでなければなりません。
- advskew-複数の候補からマスターを任命する優先順位を制御できます。
複数の候補からマスターを選択する手順
- マスターが見つからない場合、または複数のマスターが見つかった場合( スプリットブレイン後など)に選挙が行われます。
- プリエンプティブフラグが比較されます(ucarp-master yesディレクティブ)。 フラグの存在=より高い優先度。
- advbase + advskew / 255の通知配布間隔が比較されます(秒)。 短い間隔=高い優先順位。
- IPアドレスが比較されます。 低いIP =高い優先度。
確認する
- R1およびR2の場合: /etc/init.d/networking restart 。
- 数秒後、両方の「 ip a 」で実行すると、eth0:ucarp = 10.0.0.1およびeth1:ucarp = 1.2.3.4がR2に追加されたことがわかります。
- 「 ip r 」は、R2のルート「default via 1.2.3.1」を示します。
- 「ps axww | grep ucarp "R1およびR2で、2つのインスタンスが表示されます" / usr / sbin / ucarp -i eth ... "
- テストワークステーションで、「ping 8.8.8.8」を実行します(Windowsでは「 -t 」スイッチを使用)。
- R2で(物理コンソールにアクセスできる!): /Etc / init.d / networking stop 。 ワークステーションのpingは3〜4の応答をスキップして再開します。
- 「Ip a」と「ip r」は、ルートとIPアドレスがR2で消え、R1で現れたことを示します。
- ワークステーション上の「 arp 10.0.0.1 」は、ゲートウェイのMACアドレスが変更されたことを示します。