私は2台のマシンを持っており、それぞれが忙しいWebサイトのファイアウォール/ロードバランサーと同じように構成されています。内部インターフェイスと外部インターフェイスの両方でCARPとpfsyncを使用してセットアップしました。内部インターフェイスは期待どおりに動作しています(プライマリはMASTERとしてリストされ、セカンダリはBACKUPとしてリストされています)
両方のマシンで、ネットワークインターフェイスは次のとおりです。
以下のIPアドレスとMACアドレスを書き直しました。ネットワークは次のとおりです。
プライマリのifconfigからの出力は次のとおりです。
em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
ether [SNIP]
inet 10.0.1.10 netmask 0xffffff00 broadcast 10.0.1.255
media: Ethernet 100baseTX <full-duplex>
status: active
bge0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether [SNIP]
inet 10.0.2.10 netmask 0xffffff00 broadcast 10.0.2.255
media: Ethernet 1000baseT <full-duplex>
status: active
bge1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether [SNIP]
inet 10.0.3.10 netmask 0xffffff00 broadcast 10.0.3.255
media: Ethernet 1000baseT <full-duplex>
status: active
lo0: flags=80c9<UP,LOOPBACK,RUNNING,NOARP,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
pflog0: flags=141<UP,RUNNING,PROMISC> metric 0 mtu 33152
pfsync0: flags=0<> metric 0 mtu 1460
pfsync: syncdev: bge1 syncpeer: 10.0.3.11 maxupd: 128
carp0: flags=49<UP,LOOPBACK,RUNNING> metric 0 mtu 1500
inet 10.0.1.5 netmask 0xffffff00
carp: MASTER vhid 1 advbase 1 advskew 0
carp1: flags=49<UP,LOOPBACK,RUNNING> metric 0 mtu 1500
inet 10.0.2.5 netmask 0xffffff00
carp: MASTER vhid 2 advbase 1 advskew 0
そして、これがプライマリからの/etc/rc.confの抜粋です。
defaultrouter="10.0.1.1"
network_interfaces="em0 bge0 bge1 lo0 pfsync0"
cloned_interfaces="carp0 carp1"
ifconfig_em0="inet 10.0.1.10 netmask 255.255.255.0 media 100BaseTX mediaopt full-duplex"
ifconfig_bge0="inet 10.0.2.10 netmask 255.255.255.0 media 1000BaseTX mediaopt full-duplex"
ifconfig_bge1="inet 10.0.3.10 netmask 255.255.255.0 media 1000BaseTX mediaopt full-duplex"
ifconfig_carp0="vhid 1 pass [SNIP] 10.0.1.5/24"
ifconfig_carp1="vhid 2 pass [SNIP] 10.0.2.5/24"
pfsync_enable="YES"
pfsync_syncdev="bge1"
pfsync_syncpeer="10.0.3.11"
そして、これがセカンダリの出力です。
em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
ether [SNIP]
inet 10.0.1.11 netmask 0xffffff00 broadcast 10.0.1.255
media: Ethernet 100baseTX <full-duplex>
status: active
bge0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether [SNIP]
inet 10.0.2.11 netmask 0xffffff00 broadcast 10.0.2.255
media: Ethernet 1000baseT <full-duplex>
status: active
bge1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether [SNIP]
inet 10.0.3.11 netmask 0xffffff00 broadcast 10.0.3.255
media: Ethernet 1000baseT <full-duplex>
status: active
lo0: flags=80c9<UP,LOOPBACK,RUNNING,NOARP,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
pflog0: flags=141<UP,RUNNING,PROMISC> metric 0 mtu 33152
pfsync0: flags=0<> metric 0 mtu 1460
pfsync: syncdev: bge1 syncpeer: 10.0.3.10 maxupd: 128
carp0: flags=49<UP,LOOPBACK,RUNNING> metric 0 mtu 1500
inet 10.0.1.5 netmask 0xffffff00
carp: MASTER vhid 1 advbase 1 advskew 20
carp1: flags=49<UP,LOOPBACK,RUNNING> metric 0 mtu 1500
inet 10.0.2.5 netmask 0xffffff00
carp: BACKUP vhid 2 advbase 1 advskew 20
そして、これがセカンダリからの/etc/rc.confの抜粋です。
defaultrouter="10.0.1.1"
network_interfaces="em0 bge0 bge1 lo0 pfsync0"
cloned_interfaces="carp0 carp1"
ifconfig_em0="inet 10.0.1.11 netmask 255.255.255.0 media 100BaseTX mediaopt full-duplex"
ifconfig_bge0="inet 10.0.2.11 netmask 255.255.255.0 media 1000BaseTX mediaopt full-duplex"
ifconfig_bge1="inet 10.0.3.11 netmask 255.255.255.0 media 1000BaseTX mediaopt full-duplex"
ifconfig_carp0="vhid 1 pass [SNIP] advskew 20 10.0.1.5/24"
ifconfig_carp1="vhid 2 pass [SNIP] advskew 20 10.0.2.5/24"
pfsync_enable="YES"
pfsync_syncdev="bge1"
pfsync_syncpeer="10.0.3.10"
私が理解していないのは、carp1のステータスが本来あるべき状態(プライマリのMASTERとセカンダリのBACKUP)である場合、carp0のcarpステータスは両方のマシンでMASTERです。何が足りないのですか?どこで手がかりを探すべきですか?
マシンは外部インターフェイスを介して相互にpingを実行できますか?万が一、外部ネットワークに別のvhid 1がありますか?
primaryのadvskewは、(0 | primary)をMASTERにする必要があるのに対し、(20 | secondary)はバックアップする。 2つのcarp0インターフェース間の通信の欠如を意味します(?)。
あなたはすでにこれらをチェックしているかもしれませんが、OpenBSDでのいくつかの一般的な診断手順。
あなたはFreeBSDを使用しているようです(つまりOpenBSDを使用していない)私の答えがあなたが調整して役立つように十分明確であることを願っています。
-
以下のようなnet.inet.carp設定はありますか?
ファイル:/etc/sysctl.conf
net.inet.carp.allow = 1 net.inet.carp.preempt = 1 net.inet.carp.log = 1
一方のCARPインターフェースは機能していますが、もう一方は正しいシステム構成が行われたことを示していないようです。確認しても問題ありません。コマンドライン設定で変更を加え、システム構成での設定を忘れることがあります。
ファイアウォールがMASTER/BACKUPになる必要があるかどうかを判断するには、コイのパケットを受信する必要があります。
ファイアウォール構成を再確認して、proto carp
は、両方のコイの物理インターフェイスで受け渡されます。
例えば:
{em0 bge0}プロトコイの状態を維持する(同期なし)
ファイアウォールルールセットの先頭にすべてブロックログを追加し、pflog0インターフェイスでtcpdumpを使用して、carpパケットの通過が許可されているかどうかを確認することで確認できます。
ファイアウォールの状態が2つのホスト間で共有されていることを確認するために、pfsyncパケットがファイアウォールの通過を許可されていることを確認する追加のチェック。
bge1 proto pfsync keep state(no-sync) をすばやく渡します。