Scaling Jedox in Linux (Clustering)

image_pdfimage_print

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

  • On machine 1 running a Full Installation (OLAP, TOMCAT, Web, CORE)
  • On machine 2 – machine N, running Apache and Core (Web host)

First install all components on both machines.

Assuming you have the following case after the installation:

  • OLAP 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 need to open the port accordingly (standard is 443 ).
For this, the following adjustments must be done:

On machine 1 (OLAP, Tomcat, Web and Core):
  1. In /opt/jedox/ps/Data/palo.ini, make sure OLAP listens on external interface and is accessible to host running Apache (Web host) by changing the http interface e.g. 127.0.0.1 to all interfaces:
    http "127.0.0.1" 7777
    to:
    http "" 7777
  2. In /opt/jedox/ps/tomcat/conf/server.xml, make sure Tomcat is visible from the outside, listening on all interfaces, by adjusting the address of HTTP and AJP, e.g.127.0.0.1 to 0.0.0.0:
    <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. Adjust the lines in /opt/jedox/ps/tomcat/webapps/rpc/WEB-INF/classes/rpc.properties as in the example below:
    web.url_from_hdr=false
    to:
    web.url_from_hdr=true
  4. Make sure Apache communicates with Tomcat on OLAP host instead of localhost, by changing, for example, 127.0.0.1 to 192.168.2.128 /opt/jedox/ps/etc/httpd/conf/httpd.conf 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 webservers.

  5. In /opt/jedox/ps/httpd/app/etc/config.php, make sure Apache communicates with OLAP on the external interface instead of localhost, by changing, for example, 127.0.0.1 to 192.168.2.128.
  6. In the file above, make sure the password for _internal_suite user, secret, and PORT match those of OLAP Server on OLAP host.
    Copy it from same file on OLAP host and overwrite the parameters like in the example below:
    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 /opt/jedox/ps/core-Linux-x86_64/etc/palo_config.xml, make sure Core Spreadsheet Service communicates with the OLAP host by adjusting the address, port and secret to match the one on OLAP host. For example:
    127.0.0.1 to 192.168.2.128
  8. In the file above, change secret from OLAP Server 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 OLAP host instead of localhost
On machine 2 – N (Web and Core):
  1. In /opt/jedox/ps/httpd/app/etc/config.php, allow Apache to communicate with OLAP on the external interface instead of localhost, e.g. 127.0.0.1 to 192.168.2.128.
  2. In the file above, make sure the passwords for _internal_suite user, secret, Interface and PORT match those of OLAP Server on OLAP host. Copy and change the following parameters from OLAP 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 /opt/jedox/ps/etc/httpd/conf/httpd.conf, make sure Apache communicates with Tomcat on OLAP host instead of localhost, by changing, for example, 127.0.0.1 to 192.168.2.128, like in the example below:
    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 OLAP host):
    RequestHeader set X-JDX-Web-URL "http://192.168.2.127:80"

  4. In /opt/jedox/ps/core-Linux-x86_64/etc/palo_config.xml, make sure Core Spreadsheet Service communicates with the OLAP host, by adjusting the address, port and secret to match the OLAP host:
    127.0.0.1 to 192.168.2.128
  5. In the file above, change the secret from OLAP Server to 123456789012345

Important:

You need to synchronize the “storage” (/opt/jedox/ps/storage) and “pr” (/opt/jedox/ps/htdocs/app/docroot/pr) from the OLAP host on the Web host, so that all Web servers use the same. For example, you can mount these directories.
An example for a mount command, executed on the web host:

sudo mount -t cifs -o user=Administrator%Adminpass //192.168.2.128/opt/jedox/ps/storage /opt/jedox/ps/storage

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

Machine 1 (Main instance):

  • sudo /opt/jedox/ps/jedox-suite.sh start

Machine 2 – N (All Web hosts):

  • sudo /opt/jedox/ps/jedox-suite.sh start httpd
  • sudo /opt/jedox/ps/jedox-suite.sh start Core
image_pdfimage_print