NowSMS NextGen: Multiple Servers for Scalability and Fault Tolerance

Posted by on Oct 17, 2020 in Support Blog

Topic Keywords: , , ,

To help explain how NowSMS NextGen can support clustered servers for fault tolerance and scalability, we are reposting this thread from our support forum.


Your release notes for NowSMS NextGen says:

Clustered Servers – Multiple front-end servers can share their workload via a shared database, offering powerful new options for fault tolerant systems and scalability.

And there is also a note about SMSGW.INI configuration changes being propagated to other servers.

Can you provide more detail on how to configure this, and how it works? Limitations?

Hi Peter,

It’s really quite simple.

By default, NowSMS NextGen uses a file and directory based interface. Queued messages are stored as files in particular directories. This is the same format as NowSMS has always used.

One of the questions that we frequently get asked is how to support multiple server configurations, for either fault tolerance, or performance and scalability to support a large number of users/subscribers.

In past versions of NowSMS, we have supported this via shared network storage, essentially multiple servers using mapped drives, so that they can share the same configuration and message queues. While this works, performance problems are too frequent, as network storage is not designed to handle large numbers of transactions involving a lot of small files. However, this is exactly what database servers are designed for.

NowSMS NextGen supports using a database server for its shared storage, currently supporting MariaDB and MySQL. All system configuration, message queues and user accounts are stored in the database. This makes it very easy to have multiple servers cooperating as a cluster to function as one big NowSMS server. This can provide fault tolerance if a particular server fails, and it can also provide scalability.

For example, if you have a large number of SMPP clients or MMSC subscribers, you can use a load balancer to spread them across multiple servers. The clients will have the same experience, regardless of which server they connect to.

All NowSMS NextGen servers connected to the same database can provide the same service. For inbound connections, all servers can process any transaction. But if you want to dedicate particular servers to particular tasks, you can use a load balancer and/or firewall as desired. For example, inbound SMPP connections might be directed to a subset of server.

We also recognize that outbound connections, such as to upstream SMSCs, may have limits on the number of simultaneous connections allowed. So, it may be desirable to dedicate some servers to outbound only connections…this is a configuration option for each individual server.

Here’s what the configuration looks like:

In the web interface, under “Admin/System Configuration”, scroll to “Database Connection”, and click the button to “Add Database Connection”.

This will allow you to define the connection parameters for your MariaDB or MySQL database.

Here you provide the IP address or host name of the database server, and the account credentials. NowSMS uses two databases, one is dedicated to activity/message logs, and the other for configuration, user accounts and message queues. If the databases do not already exist, NowSMS will attempt to create them (assuming sufficient access rights).

A few notes on the config options…

The “NowSMS Server ID” defaults to the server’s IP address, but can be changed as desired. This ID is used primarily for the activity/message logs to report which server processed a transaction.

If this is the first time connecting to a database, NowSMS will automatically upload existing configuration information and user accounts to the database. If the database has previously been initialized, and you wish to replace the existing configuration information and user accounts with the current server’s configuration, enable “Upload Current Configuration Files From This Server To Database”.

If you are migrating an existing server to a database, there is also an option to upload existing log files to the database server.

Assuming the database server credentials are valid, the NowSMS server will need to restart, and you will see the following prompts:

Earlier, I mentioned how an individual server in a cluster can be restricted on whether it supports outbound connections. After the restart, if you log back in, the “Database Connection” settings will allow this option:

That’s a quick overview. If I can provide further clarification, let me know.


Bryce Norwood
NowSMS Support

Originally posted @

For comments and further discussion, please click here to visit the NowSMS Technical Forums (Discussion Board)...