The concept you are describing is called "clustering". A resource (like an IP address or ownership of other resources like a service startup right) is held in a commonly-accessed database and may "fail over" to any active cluster member.
For Windows Server Failover clusters, a number of prerequisites have to be met, the notable ones being that all cluster nodes need to be AD members and that you likely will need a shared storage (either a SMB share or a shared disk).
If you want your SMS gateway to be run as a clustered generic service, you likely will need to tinker with the cluster configuration and possibly your infrastructure to make things fit. Also, the SMS gateway software might impose additional restrictions or have requirements which have to be considered. It is really advisable to talk to the manufacturer and check with them if things have a good chance to turn out well.
The following excerpt is taken from the Failover Clustering docs on TechNet:
Basic requirements for a service or application in a failover cluster environment
To be appropriate for a failover cluster, a service or application must have certain characteristics. The most important characteristics include:
The service or application should be stateful. In other words, the service or application should have long-running in-memory state or large, frequently updated data states. One example is a database application. For a stateless application (such as a Web server front end), Network Load Balancing will probably be more appropriate than failover clustering.
The service or application should use a client component that automatically retries after temporary network interruptions. Otherwise, if the server component of the application fails over from one clustered server to another, the unavoidable (but brief) interruption will cause the clients to stop, rather than simply retrying and reconnecting.
The service or application should be able to identify the disk or disks it uses. This makes it possible for the service or application to communicate with disks in the cluster storage, and to reliably find the correct disk even after a failover.
The service or application should use IP-based protocols. Examples include TCP, UDP, DCOM, named pipes, and RPC over TCP/IP.