Scaling by Clustering in Linux

image_pdfimage_print

This chapter describes how you can cluster 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 <Jedox Path>/ps/Data/palo.ini, make sure OLAP listens on the 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 <Jedox Path>/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. 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. 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 <Jedox Path>/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 web servers.

  5. In <Jedox Path>/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 the 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 <Jedox Path>/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 the 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 <Jedox Path>/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 <Jedox Path>/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 <Jedox Path>/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” (<Jedox Path>/ps/storage) and “pr” (<Jedox Path>/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/<Jedox Path>/ps/storage /<Jedox Path>/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 <Jedox Path>/ps/jedox-suite.sh start

Machine 2 – N (All Web hosts):

  • sudo <Jedox Path>/ps/jedox-suite.sh start httpd
  • sudo <Jedox Path>/ps/jedox-suite.sh start Core
image_pdfimage_print