bw logo

Chapter 9. BigWorld Server Across Multiple Machines

To start a server cluster consisting of multiple machines, you can start each process in any of the following ways:

  • the command line

  • the control_cluster.py script

  • WebConsole's ClusterControl module

CellApps, BaseApps, and LoginApps can have multiple instances running, while the other processes can have only one. The clients should connect to the IP address of a machine that is running a LoginApp.

9.1. How To Start

The following sub-sections describe how to start server components.

9.1.1. WebConsole

WebConsole can be used to easily start, stop and control server components.

For an outline of WebConsole, see WebConsole. For operational behaviour, see the online WebConsole documentation in the Cluster Control module.

9.1.2. Auto Configuration Via control_cluster.py

The script bigworld/tools/server/control_cluster.py is generally the easiest way to start a multi-machine BigWorld Server. For details, see Control Cluster.

9.1.3. Manual Start

During development and testing, it is feasible to manually start processes individually.

9.2. How To Stop

The method used to stop the system depends on the method used to start it. For example, calling the script control_cluster.py with the option stop stops a system started with that script. Stopping LoginApp triggers other processes to terminate, unless this feature is disabled in configuration file <res>/server/bw.xml.

9.3. How To Monitor

Use WebConsole[12] and control_cluster.py[13] for monitoring and recording real-time statistics. You can also get profiling data from the watchers (via WebConsole's ClusterControl module). Use WebConsole's LogViewer module to monitor the centralised log.

9.4. LoginApp and Scalability

Just as you can use multiple CellApps and BaseApps in a large cluster, you can also run multiple LoginApps in a load sharing arrangement.

To do that, DNS has to set up so that it returns multiple DNS addresses for the login server's name. If you are using BIND, then you can simply put multiple A addresses in the zone configuration file. This means that when a client looks up the DNS address of the login server, it receives a login server randomly selected from the available pool.

For example, if you are using BIND as your DNS server (most Linux distributions come with BIND as their default DNS server), the zone file can have configuration similar to the ones in the table below:

Name TTL CLASS TYPE ResourceRecord
login 600 IN A 10.0.0.1
600 IN A 10.0.0.2
600 IN A 10.0.0.3

Example configuration on a BIND zone file

Because there are multiple A records with different IP addresses under one name, the IP address returned to a client when it looks up the address for the login server will be picked up from the IP address list, in a round robin manner.



[12] For details, see WebConsole.

[13] For details, see Control Cluster.