본문 바로가기
FortiGate/HA

잘못된 fail over를 방지하기 위한 HA heartbeat timer 조절

by 에티버스이비티 2021. 1. 18.

HA 구성에서는 hearbeat을 이용하여 클러스터내의 다른 디바이스의 상태를 체크한다.

secondary 장비는 primary 장비로부터 heartbeat을 받지 못하면, primary 장비가 fail 되었다고 판단하고 secondary 장비가 primary로 fail over된다.

 

이때 만약 primary 장비가 syn flood 공격을 받거나 트래픽이 너무 많거나해서 CPU가 높을 경우, 제 시간에  heartbeat을 보내지 못할 수 있다. 이런 이유로, primary가 진짜 fail이 발생하지 않았지만 잘못된 failover가 발생할 수 있다.

 

hb-lost-threshold <threshold_integer>

이 명령어는  설정한 수 만큼 heartbeat이 연속적으로 수신하지 못하면 failover사 발생한다. 1~60 까지 설정할 수 있으면 default는 6이다.

 

hb-interval <interval_integer>

이 명령어는 heartbeat을 보내는 간격이다. 1~20 까지 설정할 수 있으면 단위는 [ ⨯100ms]이다.  만약 2로 설정 되면 2⨯100해서 200ms 간격으로 heartbeat을 보낸다. 간격이 너무 짧으면 heartbeat packet이 사용하는 대역폭이 커지고, 간격이 너무 길면 네트워크/토폴로지 상태 변경을 감지하지 못할 수도 있다. default 값는 2(200ms) 이다.

 

hello-holddown <holddown_integer>

장비가 fail이 발생항 후 또는 시작시 heartbeat을 송수신하고 클러스터내의 다른 장비를 찾는 hello 상태가 된다. heartbeat 패팃을 이용하여 다른 장비를 찾은 후 work 상태로 변경되어 동작한다. 만약 hello 상태에서 다른 장비를 찾지 못하면 HA 클러스트내에 자른 장비 없이 혼자 있는 것으로 판단하여, primary로 동작하게 된다. 

여러가지 이유로 다른 장비가 heartbeat을 제대로 된 시간에 전송하지 못하고 지연되면, hello 상태를 유지하는 시간인 hello-holddown 설정 시간내에 다른 장비의 heartbeat을 확인하지 못하여 서로가 primary가 되는 문제가 발생한다.

해당 문제가 발생하면 hello-holddown 시간을 늘려서 해결한다. 5~300초까지 설정 가능하며 default는 20초이다.

 

# config system ha
    set hb-lost-threshold 6
    set hello-holddown 20
    set hb-interval 2
end

 

 

heartbeat을 확인하지 못할경우 아래의 로그가 발생된다.

2009-02-16 11:06:34 device_id=FG2001111111 log_id=0105035001 type=event subtype=ha pri=critical vd=root msg="HA slave heartbeat interface internal lost neighbor information"

or

2009-02-16 11:06:40 device_id=FG2001111111 log_id=0105035001 type=event subtype=ha pri=notice vd=root msg="Virtual cluster 1 of group 0 detected new joined HA member"

or

2009-02-16 11:06:40 device_id=FG2001111111 log_id=0105035001 type=event subtype=ha pri=notice vd=root msg="HA master heartbeat interface internal get peer information"

 

위 로그가 발생하면 먼저 heartbeat packet을 주고 받는 인터페이스에 송/수신에 문제가 있을만한 오류가 있는지 확인한다.

# dia hardware dev nic <heartbeat interface>

 

다음으론 위 옵션을 이용하여 수신 간격이나 threshld 값을 조절한다.

# config system ha
    set hb-lost-threshold 6
    set hb-interval 2
end

 

혹시 session-pickup을 사용한다면, session 동기화 트래픽 때문에 heartbeat 이 방해 받을 수 도 있다. 

'FortiGate > HA' 카테고리의 다른 글

Heartbeat 인터페이스의 IP 할당 방법  (0) 2021.01.25
Fortigate HA 시 Fortitoken License  (0) 2021.01.20
Fortigate execute ha manage <>  (0) 2021.01.06
강제로 Failover 발생하는 방법  (0) 2021.01.05
HA override wait timer  (0) 2020.12.31

댓글