I disagree with you there @GreenMan. Failover using DNS is slow. You have to wait for internal DNS to replicate and client caches to timeout.
Somethings just wont handle a dynamic DNS update for failover - such as the DNS server on an AD controller. Ever notice when configuring the DNS servers to use on a NIC you can only specify it by IP address?
At least AD/DNS lets you have multiple servers configured to remedy this situation, but some other services (notably legacy services) don't.
Layer 2 extension allows for very fast failover. Clients don't observe any changes happening. Often failover can be done at the virtulisation layer.
Personally, I choose layer 2 LAN extension for most of my high availability DC deployments - because it is straight forward, fast to deploy, and you don't have to worry about the zillions of applications the customer might have working or not (because they will work because they can't tell if there is any change).
I have always been tempted to try LISP as well. It uses the concept of a "location ID", and subnets can be spread over multiple DCs. The LISP routing protocol associates a host with a location ID instead of a subnet. So the subnet stops having any location attribute. LISP also can use layer 3 links (aka a traditional WAN) to join the sites.
https://www.cisco.com/c/en/us/td/docs/solutions/Enterprise/Data_Center/DCI/5-0/LISPmobility/DCI_LISP...
LISP is also availble on the smallest of Cisco routers, as well as the high end switches. So it scales to fit many different customer sizes.
But I haven't been brave enough to use it on a real customer yet. We have only used it in our lab. It has been around for quite a long time now.