Scaling Jedox in Linux (Clustering)

image_pdfimage_print

Here we describe 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.
Side 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 (OLAP, Tomcat, Web and Core):

1.) Make sure OLAP listens on external interface and is accessible to host running Apache (Web host).
in /opt/jedox/ps/Data/palo.ini
adjust http interface e.g. 127.0.0.1 => all interfaces:
from:
http "127.0.0.1" 7777
to:
http "" 7777

2.) Make sure Tomcat is visible from the outside, listening on all interfaces
in /opt/jedox/ps/tomcat/conf/server.xml
adjust address for HTTP and AJP, e.g.127.0.0.1 => 0.0.0.0:
from:
<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
from:
web.url_from_hdr=false
to:
web.url_from_hdr=true

4.) Make sure Apache communicates with Tomcat on OLAP host instead of localhost, e.g. 127.0.0.1 => 192.168.2.128
in /opt/jedox/ps/etc/httpd/conf/httpd.conf
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:
RequestHeader set X-JDX-Web-URL "http://192.168.2.128:80"

This information will be transmitted to distinguish between the different webserver.

5.) Make sure Apache communicates with OLAP on the external interface instead of localhost, e.g. 127.0.0.1 => 192.168.2.128
Make sure password for _internal_suite user, secret, and PORT match also those of OLAP Server on OLAP host
in /opt/jedox/ps/httpd/app/etc/config.php
– copy it from same file on OLAP 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==');

6.) Make sure Core Spreadsheet Service communicates with the OLAP host
in /opt/jedox/ps/core-Linux-x86_64/etc/palo_config.xml
adjust address, port and secret to match the one on OLAP host, e.g.
127.0.0.1 =>  192.168.2.128
secret from OLAP Server => 123456789012345

7.) Make sure all connections point to 192.168.2.128, not to itself (127.0.0.1).
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.) Make sure Apache communicates with OLAP on the external interface instead of localhost, e.g. 127.0.0.1 => 192.168.2.128
Make sure password for _internal_suite user, secret, Interface and PORT match also those of OLAP Server on OLAP host.
in /opt/jedox/ps/httpd/app/etc/config.php
– copy from OLAP host and exchange 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==');

2.) Make sure Apache communicates with Tomcat on OLAP host instead of localhost, e.g. 127.0.0.1 => 192.168.2.128
in /opt/jedox/ps/etc/httpd/conf/httpd.conf
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 OLAP host):
RequestHeader set X-JDX-Web-URL "http://192.168.2.127:80"

3.) Make sure Core Spreadsheet Service communicates with the OLAP host
in /opt/jedox/ps/core-Linux-x86_64/etc/palo_config.xml
adjust address, port and secret to match the OLAP host, e.g.
127.0.0.1 =>  192.168.2.128
secret from OLAP Server => 123456789012345

Attention:
You’ll 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. You could for example 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
Was this post helpful?
NoYes (+1 rating, 3 votes)
Loading...