On a HA design you basically needs to double all hardware. Here is an example:
Sorry I didn’t spend much time on it but, you get an idea. ISP 1 and 2 are 2 modems each going to separate ISPs, each with 2 connections, preferable 2 IPs or one active one standby link. If your modems come with only one connection then you may need another pair of switches.
The idea is to have as many links always up as possible so lets say you can have
Physical LAN – 192.168.0.1 ( router 1 )
Physical LAN – 192.168.0.2 ( router 2 )
Virtual 192.168.0.3 ( on both router 1 and 2 ) . The virtual link should be the gateway on DHCP. Virtual link will be up on active and down on stand by) . In this way you can save 2 physical NICs and have all NICs up to be able to checked (ex a rodent can eat a cable)
The test script should check the status of the box ( active or standby), for this you can have a flag somewhere and at a minim should monitor if the physical link on master is up or other flag. (ex if 192.168.0.2 is stand-by then it can ping 192.168.0.1 ) . A better test would be to try to go on the internet using the gateway from the master and then using the local setup. If will not be able to go on the internet using the gateway (from active unit) but it can reach the internet using local interface then it can mark the master as failed, reboot master and switch on the virtual interface.
An even better then reboot would be if to be able to mark server as stand by, turn off virtual interface using ssh or other way and keep the reboot as a last resort. (ex os freeze)
Depending on needs you may trim down some of the components.