I'm trying to discover if there are any methods to have more than 1 default gateway (in a fail-over strategy) on a single subnet. If one gateway goes down then I would like to have servers fail-over to a backup default gateway. I've looked into using CARP but it isn't compatible with cloud environments.
All of the protocols mentioned above (HSRP, VRRP, CARP, GLBP) should fully support your needs.
They're all based on the concept of "membership in a group," which is normally managed via multicast advertisements. Generally, the group providing the redundant IP address is able to be joined and left by nodes on the fly, with one member providing service on behalf of the group, or dozens of members. The loss or disappearance of a node triggers a takeover of the shared address by the remaining nodes in the group.
Gateway redundancy is usually done by a backup gateway doing an IP takeover when the first gateway goes down. This usually involves actively monitoring the gateway to ensure it is up. You will redundancy on the other side of the gateway as well or the far side of the gateway will remain a single point of failure.
Redundancy is still vulnerable to single points of failure if there is anything shared between the routes. This can be be a cable, fiber optic bundle, power source, or something else. I've lost connectivity on redundant links when a fiber optic cable was cut miles from our site. It was cut a few feet from where the fiber routes split.
Given the reliability of current gateway equipment, I would rely on a single gateway in most cases.