Scaling by Clustering in Windows

image_pdfimage_print

This chapter describes how you can cluster Jedox components on multiple machines:

  • On machine 1
    running a full installation (In-Memory DB Host with all Jedox components: JedoxSuiteMolapService,
    JedoxSuiteTomcatService, JedoxSuiteHttpdService and JedoxSuiteCoreService)
  • On machine 2 up to machine N,
    running only Jedox Web (Web Host with JedoxSuiteHttpdService and JedoxSuiteCoreService)

First, install all components on both machines.

Assuming you have the following case after the installation:

  • In-Memory DB Host has a network interface on IP address 192.168.2.128
  • Web Host has a network interface on IP address 192.168.2.127

In this case, only the port 80 and 7777 must be accessible from the outside for users accessing the Jedox system.
Note: If you are adding SSL configurations, you’ll need to open the port accordingly (standard is 443).
For this the following adjustments must be done:

On machine 1 (all Jedox components):
  1. In <Jedox Path>\palo\data\palo.ini., change the http interface, e.g. 127.0.0.1, to all interfaces. This allows JedoxSuiteMolapService to listen on the external interface and to be accessible to the Web Host.

    Example:

    http "127.0.0.1" 7777
    to:
    http "" 7777

  2. In <Jedox Path>\tomcat\conf\server.xml, change the address for HTTP and AJP, e.g 127.0.0.1 to 0.0.0.0. This allows the JedoxSuiteTomcatService to be visible from the outside and to listen to all interfaces.
    Example:
    <Connector port="7775" address="127.0.0.1" connectionTimeout="20000" protocol="HTTP/1.1" redirectPort="8443" />
    <Connector port="8010" protocol="AJP/1.3" address="127.0.0.1" />

    to:
    <Connector port="7775" address="0.0.0.0" connectionTimeout="20000" protocol="HTTP/1.1" redirectPort="8443" />
    <Connector port="8010" protocol="AJP/1.3" address="0.0.0.0" />

  3. Change the following lines in <Jedox Path>\tomcat\webapps\rpc\WEB-INF\classes\rpc.properties as in the example below:

    web.url_from_hdr=false
    to:
    web.url_from_hdr=true
    Make sure that the tomcat AJP port points to the same one as the one defined in server.xml, for example:

    tomcat.port=8010

  4. In <Jedox Path>\httpd\conf\httpd.conf, make the following changes to allow the JedoxSuiteHttpdService (Apache) to communicate with JedoxSuiteTomcatService on In-Memory DB Host instead of localhost:
    Define JDX_HOST_TC_AJP "127.0.0.1"
    Define JDX_PORT_TC_AJP "8010"

    to:
    Define JDX_HOST_TC_AJP "192.168.2.128"
    Define JDX_PORT_TC_AJP "8010"

    adjust address in proxy for AJP calls, e.g.:
    ProxyPass /tc/ws/ ws://192.168.2.128:${JDX_PORT_TC}/
    ProxyPassReverse /tc/ws/ ws://192.168.2.128:${JDX_PORT_TC}/

    Change the following line:
    from:
    #Define JDX_HEADER
    to:
    Define JDX_HEADER

    Adjust the Interface of this line:
    from:
    RequestHeader set X-JDX-Web-URL "http://127.0.0.1:80"
    to the IP/DNS of the actual machine:
    RequestHeader set X-JDX-Web-URL "http://192.168.2.128:80"

    This information will be transmitted to distinguish between the different web servers.

  5. In <Jedox Path>\httpd\app\etc\config.php, make sure JedoxSuiteHttpdService (Apache) communicates with JedoxSuiteMolapService on the external interface instead of localhost, for example by changing 127.0.0.1 to 192.168.2.128.
  6. In the file above, make sure the passwords for _internal_suite user, secret, and PORT match those of JedoxSuiteMolapService on In-Memory DB Host. Copy it from the same file on In-Memory DB Host and overwrite the parameters.
    define('CFG_SECRET', '1234567890123456');
    define('CFG_PALO_HOST', '192.168.2.128');
    define('CFG_PALO_PORT', '7777');
    define('CFG_PALO_PASS', ' a 123456789012345678901234567890123456789012==');
  7. In <Jedox Path>\core\palo_config.xml, adjust the address, port and secret to match the one on In-Memory DB Host, change for example 127.0.0.1 to 192.168.2.128. This allows CoreSpreadsheetService to communicate with the In-Memory DB Host.
  8. In the file above, set the secret in JedoxSuiteMolapService to 123456789012345.
  9. Make sure all connections point to 192.168.2.128, not to themselves (127.0.0.1)
  10. In System Manager/Connections, make sure the connections point to the IP/DNS of the In-Memory DB Host instead of localhost
On machine 2 up to machine N (Web Host):
  1. In <Jedox Path>\httpd\app\etc\config.php, allow JedoxSuiteHttpdService (Apache) to communicate with JedoxSuiteMolapService on the external interface instead of localhost, for example change 127.0.0.1 to 192.168.2.128 to.
  2. In the file above, make sure the passwords for _internal_suite user, secret, Interface and PORT match those of JedoxSuiteMolapService on In-Memory DB Host. Copy and change the following parameters from In-Memory DB Host:
    define('CFG_SECRET', '1234567890123456');
    define('CFG_PALO_HOST', '192.168.2.128');
    define('CFG_PALO_PORT', '7777');
    define('CFG_PALO_PASS', ' a 123456789012345678901234567890123456789012==');
  3. In <Jedox Path>\httpd\conf\httpd.conf, make sure JedoxSuiteHttpdService (Apache) communicates with JedoxSuiteTomcatService on In-Memory DB Host instead of localhost, e.g. 127.0.0.1 => 192.168.2.128. Make adjustment to the following lines:
    the following lines need to be adjusted:
    from:
    Define JDX_HOST_TC_AJP "127.0.0.1"
    Define JDX_PORT_TC_AJP "8010"

    to:
    Define JDX_HOST_TC_AJP "192.168.2.128"
    Define JDX_PORT_TC_AJP "8010"

    adjust address in proxy for AJP calls, e.g.:
    ProxyPass /tc/ws/ ws://192.168.2.128:${JDX_PORT_TC}/
    ProxyPassReverse /tc/ws/ ws://192.168.2.128:${JDX_PORT_TC}/

    Change the following line:
    from:
    #Define JDX_HEADER
    to:
    Define JDX_HEADER

    Adjust the Interface of this line:
    from:
    RequestHeader set X-JDX-Web-URL "http://127.0.0.1:80"
    to the IP/DNS of the actual machine (not In-Memory DB Host):
    RequestHeader set X-JDX-Web-URL "http://192.168.2.127:80"

  4. In <Jedox Path>\core\palo_config.xml, make sure Core Spreadsheet Service communicates with the In-Memory DB Host.
  5. Adjust the address, port and secret to match the In-Memory DB Host, e.g. 127.0.0.1 to 192.168.2.128
    secret from JedoxSuiteMolapService => 123456789012345

Important!

You need to synchronize the “storage” (<Jedox Path>\storage) and “pr” (<Jedox Path>\httpd\app\docroot\pr) from the In-Memory DB Host on the Web Hosts, so that all Web servers use the same. For example, use a network drive or mklink.

After you have verified that the system is properly configured, you can start the required services on the machines:

Machine 1 (Main instance):

  • restart all services:
    – JedoxSuiteCoreService
    – JedoxSuiteHttpdService
    – JedoxSuiteMolapService
    – JedoxSuiteTomcatService

Machine 2 – N (All Web hosts):

  • stop all services and start only these services:
    – JedoxSuiteCoreService
    – JedoxSuiteHttpdService
image_pdfimage_print