FortiGate の HA 設定について整理し直す(v6.2.4)

ファイアウォール(UTM)

作業環境

  • 型番:FortiGate 60E
  • ファームウェアバージョン:v6.2.4

FortiGate の HA コンフィグ

HA のコンフィグは以下のような構造。

config system ha
    set ...
    config ha-mgmt-interfaces
        edit n
            set ...
        next
    end
    set ...
end

主な設定項目

show system ha コマンドで表示される、一般的な設定項目は以下の通り。
※a-p モードの場合

FW01 (ha) # show
config system ha
    set group-name "HA-Group"
    set mode a-p
    set password ENC eBv8svCbuM6rS8r+f19L07jt7VzO/EkqAfbfzXm6iIuWKi50qaFjjUjOkLQ4+zrYGe6ElHdF4lsBWyQLjylorZBZcT6RGXWB5Ox6jUwH/Z4gdrEkxqXUWdv2uj+8I4Fn955Vs3xwQ6OYIaKw+OPwhxri0yNOGdxktCRUCQQKhNKa7YWk6yEreXl+QbYUr0JaAGb9KA==
    set hbdev "internal6" 200 "internal7" 100
    set session-pickup enable
    set ha-mgmt-status enable
    config ha-mgmt-interfaces
        edit 1
            set interface "internal5"
            set gateway 10.1.10.1
        next
    end
    set override enable
    set priority 200
    set monitor "internal1" "wan2"
end

マスタ機の選出基準

HA メンバの中でどのメンバがマスタ機として選出されるか、という基準は以下の通り。

  1. モニタポートととして設定されているインターフェスでアップとなっているインターフェース数がより多いメンバをマスタとする。同数の場合は次の基準をチェックする。
  2. HAアップタイム (正常稼働時間) がより長いメンバをマスタとする。差分が 5分以内の場合はHAアップタイムの基準は無視されて次の基準のチェックに移る。
    • ただし、HA 設定として set override enable が設定されている場合は、HAアップタイムのチェックについては無視されて、次のプライオリティに基づいてマスタが選出される
  3. 設定されているプライオリティがより高いメンバをマスタとする。同じ場合は次の基準をチェックする。
  4. シリアル番号がより大きいメンバをマスタとする

障害から復旧時に自動でフェイルバックさせる設定

  • プライオリティの高いマスタ機にて障害が発生し、スレーブ機がマスタに切り替わった後、プライオリティの高いメンバが復旧した場合の動作を決める設定
  • set override 項目を enable に設定すると、プライオリティの高いメンバが復旧した際に、プライオリティの高いメンバがマスタに自動で切り替わる
config system ha
    set override enable
end

  • 前項で記載している通り、set override はマスタ機の選出基準にも関係する
  • set override enable とした場合は、自動でフェイルバックする際にも一時的に通信断が発生することに注意
  • set override の設定はメンバ間で同期されない。set overrideenable と設定する場合は、プライオリティの高いメンバで設定しないと意味がない

スレーブ(スタンバイ)機に管理アクセスするための設定

  • HA を構成するとインターフェース設定が同期されるため、HA を構成していない場合と同じように FortiGate に管理アクセスすると常にマスタ機に接続されるようになる

「管理インターフェースの予約」を設定する

  • スレーブ(スタンバイ)機に管理アクセスできるようにするためには、各メンバで管理インターフェースの予約設定を行う
    • 管理インターフェースとして設定したインターフェースについては、メンバ間で異なる IP アドレスを設定することができる
  • 管理インターフェースの予約設定に該当するコンフィグは以下の通り
config system ha
    set ha-mgmt-status enable #管理インターフェースの有効化
    config ha-mgmt-interfaces
        edit 1
            set interface "internal5" #管理インターフェースにするインターフェースの指定
            set gateway 10.1.10.1 #管理インターフェースのデフォルトゲートウェイの指定
        next
    end
end

  • IP アドレスが設定されているインターフェースは管理インターフェースとして指定できない
    • 管理インターフェースとして指定した後で、そのインターフェースの設定で IP アドレスを設定する

インターフェースに management-ip を設定する

  • HA を構成している状況下限定で、各インターフェースに対して通常の IP アドレス設定に加えて management-ip を設定することができる
  • management-ip にはメンバ別に異なる値を設定できるため、スレーブ機に管理アクセスするために使用できる
  • 該当するコンフィグの例は以下の通り
config system interface
    edit "VLAN10"
        set management-ip 10.1.10.100 255.255.255.0
    next
end

  • 管理インターフェースの予約設定の代替手段として使用することも可能だが以下の点に注意が必要
    • management-ip はセカンダリ IP 同様にルーティングで使用される
    • management-ip と通常の IP とで別々に allowaccess を設定することはできない
  • 一般的には「管理インターフェースの予約」を設定するので、management-ip の使いどころはあまり思いつかない

SNMP と Syslog をメンバ別に送信するための設定

  • HA 構成時にメンバ別に SNMP および Syslog 送信を行うためには管理インターフェースから送信させる設定を行う必要がある
    • 「管理インターフェースの予約」設定をしておく必要がある
  • 該当するコンフィグは以下の通り
config system ha
    set ha-direct enable
end

  • ha-directenable に設定しようとすると以下の警告が表示されるので、必要に応じてログ関連のソース IP 設定を削除させる
When ha-direct is enabled, source ip may not work.
We recommend to unset all log-related, netflow and sflow source ip.
By selecting to continue, all source ip will be unset.
Do you want to continue? (y/n)

ha-directが有効になっていると、ソースIPが機能しない場合があります。
すべてのログ関連のネットフローおよびsflowソースIPの設定を解除することをお勧めします。
続行を選択すると、すべてのソースIPが設定解除されます。
続けたいですか? (はい/いいえ)

主な HA 関連コマンド

get system ha

HA の設定状況を表示。

FW01 # get system ha
group-id            : 0
group-name          : HA-Group
mode                : a-p
sync-packet-balance : disable
password            : *
hbdev               : "internal6" 200 "internal7" 100
session-sync-dev    :
route-ttl           : 10
route-wait          : 0
route-hold          : 10
multicast-ttl       : 600
sync-config         : enable
encryption          : disable
authentication      : enable
hb-interval         : 2
hb-lost-threshold   : 6
hello-holddown      : 20
gratuitous-arps     : enable
arps                : 5
arps-interval       : 8
session-pickup      : enable
session-pickup-connectionless: disable
session-pickup-expectation: disable
session-pickup-delay: disable
link-failed-signal  : disable
uninterruptible-upgrade: enable
ha-mgmt-status      : enable
ha-mgmt-interfaces:
    == [ 1 ]
    id:     1
ha-eth-type         : 8890
hc-eth-type         : 8891
l2ep-eth-type       : 8893
ha-uptime-diff-margin: 300
vcluster2           : disable
vcluster-id         : 1
override            : enable
priority            : 200
override-wait-time  : 0
monitor             : "internal1" "wan1"
pingserver-monitor-interface:
vdom                : "root"
ha-direct           : enable
ssd-failover        : disable
memory-compatible-mode: disable
inter-cluster-session-sync: disable
logical-sn          : disable

get system ha status

HA の状態を表示。

FW01 # get system ha status
HA Health Status: OK
Model: FortiGate-60E
Mode: HA A-P
Group: 0
Debug: 0
Cluster Uptime: 0 days 2:41:55
Cluster state change time: 2020-08-07 12:13:40
Master selected using:
    <2020/08/07 12:13:40> FGT60ETKxxxxxxxx is selected as the master because it has the largest value of override priority.
    <2020/08/07 11:52:10> FGT60ETKxxxxxxxx is selected as the master because it's the only member in the cluster.
ses_pickup: enable, ses_pickup_delay=disable
override: enable
Configuration Status:
    FGT60ETKxxxxxxxx(updated 2 seconds ago): in-sync
    FGT60ETKyyyyyyyy(updated 2 seconds ago): in-sync
System Usage stats:
    FGT60ETKxxxxxxxx(updated 2 seconds ago):
        sessions=71, average-cpu-user/nice/system/idle=0%/0%/0%/99%, memory=31%
    FGT60ETKyyyyyyyy(updated 2 seconds ago):
        sessions=27, average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=32%
HBDEV stats:
    FGT60ETKxxxxxxxx(updated 2 seconds ago):
        internal6: physical/1000auto, up, rx-bytes/packets/dropped/errors=22031628/66675/0/0, tx=39667019/70366/0/0
        internal7: physical/1000auto, up, rx-bytes/packets/dropped/errors=18560694/46359/0/0, tx=18712447/45415/0/0
    FGT60ETKyyyyyyyy(updated 2 seconds ago):
        internal6: physical/1000auto, up, rx-bytes/packets/dropped/errors=38350647/67170/0/0, tx=20728120/62466/0/0
        internal7: physical/1000auto, up, rx-bytes/packets/dropped/errors=17396561/42221/0/0, tx=17262772/42219/0/0
MONDEV stats:
    FGT60ETKxxxxxxxx(updated 2 seconds ago):
        internal1: physical/100auto, up, rx-bytes/packets/dropped/errors=27134716/142668/0/0, tx=88164022/134514/0/0
        wan1: physical/100auto, up, rx-bytes/packets/dropped/errors=68478268/101399/0/0, tx=12222874/69742/0/0
    FGT60ETKyyyyyyyy(updated 2 seconds ago):
        internal1: physical/100auto, up, rx-bytes/packets/dropped/errors=3528048/35145/0/0, tx=0/0/0/0
        wan1: physical/100auto, up, rx-bytes/packets/dropped/errors=1264451/3661/0/0, tx=88132/487/0/0
Master: FW01            , FGT60ETKxxxxxxxx, HA cluster index = 1
Slave : FW02            , FGT60ETKyyyyyyyy, HA cluster index = 0
number of vcluster: 1
vcluster 1: work 169.254.0.2
Master: FGT60ETKxxxxxxxx, HA operating index = 0
Slave : FGT60ETKyyyyyyyy, HA operating index = 1

diagnose sys ha reset-uptime

set override disable が設定されている場合に、マスタ機を手動で切り替える際に使用する(マスタ機で実行する)。コマンド実行機器の HA アップタイムをリセットする。

その他留意点

  • スレーブとする機器に、HA で同期されるコンフィグについてマスタ機と異なる設定(インターフェース設定、ポリシー設定など)が設定されていると、HA が構成できない可能性がある
    • HA が構成できなかった場合は、一度スレーブ機側の設定を初期化して、再度 HA 設定(HA で同期されない項目の設定)を行った上でマスタ機と接続してみると上手くいく可能性がある

【参考】HA 関連コマンド一覧

get system ha 系

# get system ha
ha-mgmt-interfaces    Reserve interfaces to manage individual cluster units.
status                list ha status information

diagnose sys ha 系

# diagnose sys ha
stats                            statistics
status                           status
hactx-stats                      HA context statistics
mac                              Mac Information.
checksum                         checksum.
heartbeat                        Show kernel heartbeat stats.
dump-by                          Dump HA data by name.
fib                              FIB information.
hadiff                           HA diff debug.
reset-uptime                     Reset HA up time.
session-sync-dev                 Session sync ports.
standalone-peers                 Standalone peers on kernel.
recalculate-extfile-signature    Recalculate external files signature in hasync daemon.
sync-stats                       Dump session sync statistics.
extfile-sig                      Dump extfile's signature.
vlan-hb-monitor                  Dump vlan heartbeat monitor list.
pingsvr-slave-force-reset        Reset HA up time.
history                          Cluster history information.
hasync-stats                     hasync daemon stats.
hasync-conn-max-buf              Set the hasync connection maximum buffer number.

【参考】HA の設定項目一覧

config system ha 階層のヘルプ (set ?) で表示される項目は以下の通り。

group-id                         Cluster group ID  (0 - 255). Must be the same for all members.
group-name                       Cluster group name. Must be the same for all members.
mode                             HA mode. Must be the same for all members. FGSP requires standalone.
sync-packet-balance              Enable/disable HA packet distribution to multiple CPUs.
password                         Cluster password. Must be the same for all members.
hbdev                            Heartbeat interfaces. Must be the same for all members.
session-sync-dev                 Offload session-sync process to kernel and sync sessions using connected interface(s) directly.
route-ttl                        TTL for primary unit routes (5 - 3600 sec). Increase to maintain active routes during failover.
route-wait                       Time to wait before sending new routes to the cluster (0 - 3600 sec).
route-hold                       Time to wait between routing table updates to the cluster (0 - 3600 sec).
multicast-ttl                    HA multicast TTL on master (5 - 3600 sec).
sync-config                      Enable/disable configuration synchronization.
encryption                       Enable/disable heartbeat message encryption.
authentication                   Enable/disable heartbeat message authentication.
hb-interval                      Time between sending heartbeat packets (1 - 20 (100*ms)). Increase to reduce false positives.
hb-lost-threshold                Number of lost heartbeats to signal a failure (1 - 60). Increase to reduce false positives.
hello-holddown                   Time to wait before changing from hello to work state (5 - 300 sec).
gratuitous-arps                  Enable/disable gratuitous ARPs. Disable if link-failed-signal enabled.
arps                             Number of gratuitous ARPs (1 - 60). Lower to reduce traffic. Higher to reduce failover time.
arps-interval                    Time between gratuitous ARPs  (1 - 20 sec). Lower to reduce failover time. Higher to reduce traffic.
session-pickup                   Enable/disable session pickup. Enabling it can reduce session down time when fail over happens.
session-pickup-connectionless    Enable/disable UDP and ICMP session sync.
session-pickup-expectation       Enable/disable session helper expectation session sync for FGSP.
session-pickup-delay             Enable to sync sessions longer than 30 sec. Only longer lived sessions need to be synced.
link-failed-signal               Enable to shut down all interfaces for 1 sec after a failover. Use if gratuitous ARPs do not update network.
uninterruptible-upgrade          Enable to upgrade a cluster without blocking network traffic.
ha-mgmt-status                   Enable to reserve interfaces to manage individual cluster units.
ha-eth-type                      HA heartbeat packet Ethertype (4-digit hex).
hc-eth-type                      Transparent mode HA heartbeat packet Ethertype (4-digit hex).
l2ep-eth-type                    Telnet session HA heartbeat packet Ethertype (4-digit hex).
ha-uptime-diff-margin            Normally you would only reduce this value for failover testing.
logical-sn                       Enable/disable usage of the logical serial number.
vcluster2                        Enable/disable virtual cluster 2 for virtual clustering.
override                         Enable and increase the priority of the unit that should always be primary (master).
priority                         Increase the priority to select the primary unit (0 - 255).
override-wait-time               Delay negotiating if override is enabled (0 - 3600 sec). Reduces how often the cluster negotiates.
monitor                          Interfaces to check for port monitoring (or link failure).
pingserver-monitor-interface     Interfaces to check for remote IP monitoring.
vdom                             VDOMs in virtual cluster 1.
ha-direct                        Enable/disable using ha-mgmt interface for syslog, SNMP, remote authentication (RADIUS), FortiAnalyzer, and FortiSandbox.
ssd-failover                     Enable/disable automatic HA failover on SSD disk failure.
memory-compatible-mode           Enable/disable memory compatible mode.
inter-cluster-session-sync       Enable/disable synchronization of sessions among HA clusters.

config system ha > ha-mgmt-interfaces > edit 階層内のヘルプ (set ?) で表示される項目は以下の通り。

interface    Interface to reserve for HA management.
dst          Default route destination for reserved HA management interface.
gateway      Default route gateway for reserved HA management interface.
gateway6     Default IPv6 gateway for reserved HA management interface.

参考資料

High Availability | Administration Guide
config system ha | CLI Reference

―――――――――――――

タイトルとURLをコピーしました