訳註: これは作業してる最中のもので、本来、訳作業者以外は見えぬべきものです。 訳作業者以外は見ないでください。意味が反対になったりとか当然にあるから、 内容は利用しないでください。この言語への変換作業(翻訳作業)物に関しては、現在、オープンなライセンス条件ではありません。 十進240のコードのキャラクターを<240>に置換してる場合あり
Chapter28.Introduction to the Common Address Redundancy Protocol (CARP)

Table of Contents

28.1. CARP Operation
28.2. Configuring CARP
28.3. Enabling CARP Support
28.4. CARP Example
28.5. Advanced CARP configuration
28.6. Forcing Failover of the Master

この章のライセンスについては SectionD.3.3, “Joel Knight's license on the CARP article” をみてください。

CARP は Common Address Redundancy Protocol(一般アドレス冗長プロトコル) です。 主要な用途は、IP アドレスを共有するために、同一ネットワークセグメント上に 複数のホストを許すことです。 CARP は安全で、 Virtual Router Redundancy Protocol および Hot Standby Router Protocol を代替する free なものです。

CARP は IP アドレスを共有するため、同一ネットワークセグメント上に ホストのグループを認めることで働きます。 このホストのグループは "redundancy group(冗長グループ)" と呼ばれます。冗長グループは グループのメンバーの間で共有されたIP アドレスが割り当てられます。 グループ内部は、1つのホストが "master(マスター)" に指名され、 残りは "backups(バックアップ)" です。 マスターホストは、目下、共有 IPを "holds(所持)" しているホストで; それに向けられた、あらゆる traffic や ARP 要求 に応答します。各ホストは一度に 1つ以上の冗長グループに属するかもしれません。

CARP の1つの利用法は 冗長ファイアウォールのグループを作ることです。 冗長グループに割り当てられた virtual IP は default gateway として クライアント機に設定されます。 マスターファイアーウォールが故障にあったりオフラインになるという eventイベント のとき、 IP はバックアップファイアーウォールの1つに移り、サービスは 影響なく継続されます。

高度に冗長で fault-tolerant なハードウェアーは CARP の必要性を最小限にしますが、なくするわけではありません。 誰かが電源コードをノックアウトしたり、 あるいは、 あなたのシステム管理者が間違った window で reboot と打ち込んだり することに対し、ハードウェアー fault tolerance な救援能力はありません。 CARP はまた、パッチしてリブートするサイクルをユーザーに透過的に、より簡単にして、 ソフトウェアのテストやハードウェアーのアップグレードをより簡単にします -- もし動作しなかったら、直るまで予備機に fall back する(頼る)ことができます。

しかしながら、 CARP が help にならない状況もあります。 CARP の design設計は、 静的 IP アドレスの同一の物理サブネット上にグループのメンバーがいることを要求し、 とはいえ、 carpdev 指令の提出で、 物理インターフェース上にさらなる IP アドレスは不要です。 同様に、(SSH や IRC のような)サーバーへの不断の接続を要求されるサービスは 他のシステムへの透過的転属はできず--この場合でも、 CARP は最低限の中断時間で助けることができます。 CARP はそれ自身はアプリケーション間のデータ同期はせず、 例えば、 手作業で box 間のデータの複製を rsync かなにか、アプリケーションにふさわしいものでしてください。

CARP は IPv4 および IPv6 ともサポートします。

28.1.CARP Operation

グループのマスターホストはローカルネットワークに regular定期 広告を送信し それで、バックアップホストはマスターがまだ生きていることを知ります。 もし、バックアップホストは設定された期間に マスターからの広告が聞こえなければ、 その1つがマスターの職責を引き継ぎます (advbase 値および advskew 値 を最も低く設定した、いずれかのバックアップホスト)。 多数の CARP グループが同一ネットワークセグメント上に 存在することができます。 CARP 広告は、グループメンバーに、 広告がどの冗長グループに属するかの識別させる Virtual Host ID が入っています。

ネットワークセグメント上の 悪意のあるユーザーによる spoofing偽 CARP 広告、を防ぐために、 各グループは password をつけて設定できます。 グループに送られる各 CARP パケット は SHA1 HMAC でプロテクトされています。

28.2.Configuring CARP

各冗長グループは carp(4) 仮想 ネットー枠インターフェースに相当します。 CARP それ自体は ifconfig(8) を使って設定でき、 以下のオプションが使えます:

carpN

carp(4) 仮想インターフェースの名前で、 N はインターフェースの番号を表す整数(例: carp0)。

vhid

仮想ホスト ID 。これは ネットワーク上で他のノードに冗長グループの。識別に使われる unique number 。 Acceptable 値は 1 から 255です。これで 多数の冗長グループが同一ネットワーク上に存在することが許されます。

password

この冗長グループの他の CARP-enabled ホストと話すときに使われる認証パスワード。 冗長グループの全てのメンバーで同じである必要があります。

carpdev

この任意の パラメーターはこの冗長グループに属する物理ネットワークインターフェース を規定します。 default では、CARP は carp(4) インターフェースに与えられた IP アドレスとマスクの組から 同一サブネットの物理インターフェースを探して利用しようと挑戦します。

advbase

この任意の パラメーターは 冗長グループのメンバーへの広告の頻度を秒単位で規定します。 default は 1 秒。 Acceptable 値は 1 から 255 です。

advskew

この任意の パラメーターは CARP 広告の送出時、 advbase をどれだけ skew するかを規定します。 advbase の操作によって、マスター CARP ホストを選ぶことができます。 多数の中でより小さいホストが優先してマスターに選ばれます。 default は 0 です。 Acceptable 値は 1 から 254 です。

state

carp(4) インターフェースを強制的に確実な状態にします。有効な states は init, backup (バックアップ)、 そして master (マスター)

ipaddress

これは冗長グループに割り当てられた共有 IP アドレスです。 このアドレスは 物理インターフェース (もしあれば)上の IP アドレスとしては 同一サブネット上にいてはなりません。しかしながら、 このアドレスはグループ内の全ホストで同一である必要があります。

mask

共有 IP のサブネットマスク。

さらなる CARP 挙動は sysctl(8) 経由で制御できます

net.inet.carp.allow

入ってくる CARP を受け入れるかどうか。 Default は 1 (yes)。

net.inet.carp.preempt

マスターに代わるものになるために、冗長グループ内のホストが 良い advbase および advskew を持つことを許します。 加えて、このオプションはまた、 いちインターフェースがダウンするという eventイベントで 全インターフェースを failing over することも enables 。 もし、いち物理 CARP-有効 インターフェースがダウンすると、 CARP は他の全ての CARP-有効インターフェースの advskew を 240 に変更します。 本質において、それ自身 failing over します。 このオプションは default では 0 (disabled) です。

net.inet.carp.log

Log bad CARP パケット。 Default は 0 (disabled).

net.inet.carp.arpbalance

ロードバランス traffic 多数の冗長グループホストを横切って。 Default は 0 (disabled)。 更なる情報は carp(4) を御覧ください。

28.3.Enabling CARP Support

CARP サポートは default では enabled ではありません。

carp(4) の利用には carp pseudo-device をサポートしたカーネルが必要です。 your カーネル設定ファイルの次の行を確かめて:

pseudo-device   carp		# CARP

your カーネル設定中の carp pseudo-device の設定の後、 カーネル の再コンパイルが必要で、 carp(4) support を enable にするためにリブートします。

28.4.CARP Example

CARP 設定例は:

# sysctl -w net.inet.carp.allow=1
# ifconfig carp0 create
# ifconfig carp0 vhid 1 pass lanpasswd \
     carpdev em0 advskew 100 10.0.0.1 255.255.255.0
    

これは次のものを設定します:

  • CARP パケットの受け入れを可能にする (これはデフォルト設定 )

  • carp(4) インターフェースを作ります。

  • carp0 を 仮想ホスト #1 、 パスワード(lanpasswd)を有効、グループに属するインターフェースとして em0 をセットし、 advskew が 100 なので このホストをバックアップにします (もちろん マスターは advskew が 100 より小さい と仮定しています)に設定します。 このグループに割り当てられた共有 IP は 10.0.0.1/255.255.255.0.

carp0 に対する ifconfig の Running でインターフェースの status が shows:

# ifconfig carp0
carp0: flags=8802<UP,BROADCAST,SIMPLEX,MULTICAST> mtu 1500
     carp: BACKUP carpdev em0 vhid 1 advbase 1 advskew 100
     inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255

28.5.Advanced CARP configuration

以下の例は two 高利用可能 クラスター、 冗長ファイアウォールを作ります。つぎの図は達成するためにやってみるものを 披露します:

         +----| WAN/Internet |----+ 
         |                        |
      em1|                        |em1   
      +-----+                  +-----+
      | fw1 |                  | fw2 |
      +-----+                  +-----+
      em0|                        |em0
         |                        | 
      ---+-------Shared LAN-------+---
    

両方のファイアウォールは em0 上で LAN につながり、 em1 上で WAN/インターネットにつながっています。 IP アドレスは次のように:

  • ファイアウォール 1 (fw1) em0: 172.16.0.1

  • ファイアウォール 1 (fw1) em1: 192.0.2.1

  • ファイアウォール 2 (fw2) em0: 172.16.0.2

  • ファイアウォール 2 (fw2) em1: 192.0.2.2

IP アドレスは冗長 グループ間で共有したくて:

  • WAN/インターネット 共有 IP: 192.0.2.100

  • LAN 共有 IP: 172.16.0.100

ネットワークの方針は、ファイアウォール 1 (fw1) を優先したマスターにします。

以下の設定はファイアウォール 1 (fw1)のためのもの:

#Enable preemption and group interface failover
# sysctl -w net.inet.carp.preempt=1
    
#Configure CARP on the LAN side
# ifconfig carp0 create
# ifconfig carp0 vhid 1 pass lanpasswd carpdev em0 \
     172.16.0.100 255.255.255.0
    
#Configure CARP on the WAN side
# ifconfig carp1 create
# ifconfig carp1 vhid 2 pass wanpasswd carpdev em1 \
     192.0.2.100 255.255.255.0
    

前に言及したように、 our 方針では ファイアウォール 1 を 優先したマスターにします。 ファイアウォール 2 の設定時 advskew をより高い値にします。 なぜなら、より小さいほうが 優先してマスターになるからです。

以下の設定はファイアウォール 2 (fw2)のもので:

#Enable preemption and group interface failover
# sysctl -w net.inet.carp.preempt=1
    
#Configure CARP on the LAN side
# ifconfig carp0 create
# ifconfig carp0 vhid 1 pass lanpasswd carpdev em0 \
     advskew 128 172.16.0.100 255.255.255.0
    
#Configure CARP on the WAN side
# ifconfig carp1 create
# ifconfig carp1 vhid 2 pass wanpasswd carpdev em1 \
     advskew 128 192.0.2.100 255.255.255.0
    

28.6.Forcing Failover of the Master

マスターノードを故意に failover または降格させる必要があるときがあります。 例にはマスターノードをメンテナンスまたは、 問題をトラブルシューティングで落とすときが含まれます。 ここの目的は、 traffic をバックアップホストの1つに優雅に fail over することで、 それでユーザーは何の影響も感じません。

failover するには、マスターノードの carp(4) インターフェースをシャットダウンします。 これでマスターは、"infinite" advbase と advskew を 広告します。 バックアップホストはこれを見て、マスターの役割を直ちに引き継ぎます。

# ifconfig carp0 down