When a monitored interface goes down, the instance immediately enters FAILED state and the other instance gets into the MASTER state.
But, if you have a script block to check – say you are monitoring HAProxy – and HAProxy goes down the MASTER will not enter FAILED state, unless you do this:
Set the weight to a negative number (if MASTER priority is 101 and BACKUP priority is 100, the weight could be -2).
This way when HAProxy goes down, the Priority of the master will become 101 -2 = 99, the Backup with a priority of 100 will win the election and enter into MASTER state.
When HAProxy on the master comes back, it’s priority increases by 2 to become 101 again and if you have nopreempt disabled, this instance will enter the MASTER state.