Solution 1:

The world is full of applications that were never designed with clustering in mind and terrible things happen when you try to run multiple instances of the application concurrently.
But the application might be critical enough that having a standby server is a viable solution to meet your availability requirements.

Clustering software will typically ensure then that only one single instance of the application is running at any one time and will start the application on a backup node when the application on the primary node has stopped (either because of scheduled maintenance or because of unplanned events).