Page 1 of 1

How to share backend resources in a cluster?

PostPosted: Fri Jan 11, 2019 1:55 pm
by Bernd Welter
Hi there,

a player in the xUniverse asked me for how to combine several xServers (xServer2) to one logical cluster. From my perspective he has to ensure to connect each instance to those resources - this is mandatory:

  • Job database as described in https://xserver2-europe-eu-test.cloud.p ... s%7C_____8 , please check conf/job-management-db.xml
    This is required if you deal with asynchronuos protocols (startWhatever-Method)
    :!: If you host the server in an environment such as Microsoft AZURE we recommend to use tha asynchronuos approach because such heavily virtualized systems often prevent the clients from using long-lasting transactions (e.g. AZURE restricts HTTP connects to about2-3 minutes)
  • Same approach applies for the Session management database: configured in conf/job-management-db.xml
xServer benefits from fast IO and so on file level we also need xServer.Conf path values which might be configured to point to the same network shared folder:
  • map directory: map is used read only and performs best on a local SSD. If you use Content Update Service you have to ensure to update each instance.
  • contentSnapshotPath: required only if you create content snapshots
  • distanceMatrixPath : required if you want to compute and share distance matrices
  • highPerformanceRoutingNetworkPath : shared access might be required if you want to compute (create, RW) and process (calculate dima/routing, RO) search graphs (aka high performance routing networks). If not administrated via API you could evaluate to copy such a path to each local SSD. Otherwise you need to connect each instance to the shared resource folder. We strictly recommend very fast IO because the loading of networks has a huge impact on the performance.
Be aware that a simultaneous access to the same file share through different instances might cause some "file/folder in use". So this is a "first come, first serve" approach.

Monitoring:
  • Ensure to setup a monitoring of each backend server instance - not through the load balancer but via direct access.
  • Furthermore it is possible to send a request to a specific backend module by using the proper HTTP headers xserver-module.

Best regards,
Bernd