HA Cluster Installation (multi-machines)
General
When deploying XPLG in busy environments, it is recommended to deploy several XPLG instances as a cluster, for high availability and load balancing.
The XPLG cluster is composed of several instances, using a common storage in order to share the system tasks load and users’ activity.
Some of the instances function as processor nodes, taking care of back-end tasks (indexing, analysis, monitoring, and more), while the rest of the instances function as UI nodes.
This architecture enables easy scaling of XPLG in heavily loaded environments, without influencing the users’ front-end experience. A load balancer can be used if more than one UI node is deployed.
It is highly recommended to consult with XPLG support prior to setting up the clustered environment.
Review the System Architecture diagrams that explain the XPLG Center architecture, and below a step-by-step cluster deployment instructions.
XPLG Cluster Deployment Instructions
The following are instructions for installing XPLG in a clustered environment, with two UI nodes and a single processor node.
Preparations
1. Decide if XPLG will be installed in a Windows or Linux environment. In case there is a need to analyze log data from Windows machines, XPLG must be installed on Windows machines.
2. Prepare machines (physical or virtual) for the UI node(s) and for the processor node(s), based on the XPLG hardware requirements. It is very important that all cluster servers are clocked synced (either verify manually or use a NTP server to ensure synchronization).
3. Prepare a shared storage device that can be accessed by all XpoLog Center nodes, based on the XPLG hardware requirements. It is mandatory that ALL XPLG instances in the cluster will have full permissions (READ/WRITE) on the allocated shared storage.
Note: XPLG performs heavy read/write operations. It is highly recommended that the fastest storage connectivity is allocated to the UI node.
Installation
1. Download the XPLG installer from the XPLG website at http://www.xplg.com
2. Run the installer on each node machine - See installation instructions for more details
3. Once completed, open a web browser directly to each node at: http://[NODE_HOST_NAME]:30303 to verify that XPLG was installed successfully.
Configuration
1. Create a folder that will store XPLG ’s data on the shared storage device (referred to as EXTERNAL_CONFIGURATION_DIRECTORY).
2. Open a web browser to each node at http://[NODE_HOST_NAME]:30303, go to XPLG Manager > Left Navigation Panel > Settings > General, and do the following:
a. Select the Use external configuration directory checkbox.
b. Enter the full path to the EXTERNAL_CONFIGURATION_DIRECTORY in the ‘Configuration full path’ field.
c. Select the Cluster Mode checkbox.
d. Click Save.
e. Wait until receiving a message that the configuration was saved successfully and a restart request but don’t restart XPLG yet.
g. Under the Mail tab, specify the SMTP details and system administrator email address. XPLG will send an alert in case the active processor node changes.
3. On each node (starting with the processor node), go to XPOLOG_CENTER_INSTALLATION_DIRECTORY, edit the lax file (XpoLog.lax on Windows installation; XpoLog.sh.lax on Linux installation), and perform the following changes to the line that starts with lax.nl.java.option.additional=
a. By default, XPLG is allocated with 1024 MB of memory. It is recommended to increase this value to about 75% of the machine’s memory. To do so, replace -Xmx1024m with -XmxNEW_VALUE
b. In a clustered environment, each node should be assigned a unique name for it to be identified in the system. To do so, append the following to the end of the line -Dxpolog.uid.structure=[NODE_NAME]
example node name: PROCESSOR1, PROCESSOR2, UI01, UI02, etc.
c. Save the file.
d. Restart XPLG (on a Windows installation, restart the XpoLogCenter service; on a Linux installation, run the script XPOLOG_CENTER_INSTALLATION_DIRECTORY/runXpoLog.sh restart).
4. In a clustered environment, some configuration properties should be tuned. To do so, open a web browser to the processor node at http://[PROCESSOR_NODE_HOST_NAME]:30303/logeye/support,
select ‘Advanced Settings’ in the select box.
For each of the following properties, enter the property name in the text box of the ‘Name’ column, right-click the row, click ‘Edit’, enter the custom value and click Save:
Property name: cluster.allowedMasters
Purpose: used to determine the name of the processor node.
Should be customized: always
Custom value: [NODE_NAME_1],[NODE_NAME_2]...,[NODE_NAME_N] (of the processor nodes)Property name: htmlUtil.BaseUrl
Purpose: used by the processor node when exporting information on the server side
Should be customized: always
Custom value: http://[PROCESSOR_NODE_HOST_NAME]:[PROCESSOR_NODE_PORT]/logeye/Property name: htmlUtil.ui.BaseUrl
Purpose: used by the UI node when exporting information on the server side
Should be customized: always
Custom value: http://[UI_NODE_HOST_NAME]:[UI_NODE_PORT]/logeye/Property name: mail.link.baseUrl
Purpose: used in links that point back to XPLG from an email
Should be customized: always
Custom value: http://[UI_NODE_HOST_NAME]:[UI_NODE_PORT]/logeye/ (in multiple UI nodes environments, consider pointing the link to a load balancer, if exists)
Note: It is highly recommended to consult XPLG support before editing any of the following properties:
Property name: cluster.shouldCheckForMaster
Purpose: used to indicate whether the UI nodes should take over the processor node activity in case the processor node is down
Should be customized: only if UI nodes should never take over the processor activity
Custom value: falseProperty name: cluster.takeOverAttempts.notAllowedMaster
Purpose: used to indicate the number of minutes that should pass before a UI node attempts to take over the processor activity in case the processor node is down
Should be customized: only when there’s a need to allow the processor node to be down for more than 5 minutes without a UI node taking over its activity
Custom value: numeric value larger than 5
Note: in case there is an XPLG instance which is a dedicated to be a listener then the following has to be done for that specific instance:
Allocate 2GB of memory (there is no need in more)
Set this specific instance to run in agent mode:
Open a browser to the instance directly
Go to XPLG Manager > Left Navigation Panel > Settings > General
Check the 'Agent Mode' and save
Set this specific instance not to be recycled:
Edit the file LISTENER_INSTALL_DIR/xpologInit.prop
Add the line (empty recycle cron expression):
recycleCronExpression=
Restart Listener instance
Go to the Listener Account (XPLG Manager > Left Navigation Panel > Data > Listen To Data):
Stop the listener account
Edit the listener account
Set Listening node to be the Listener instance
Set the Indexing node to be the MASTER or one of the PROCESSORS
Save the listener account
Start the listener account
Verification
1. Open a web browser to each node at http://[NODE_HOST_NAME]:30303, go to XPLG Manager > Left Navigation Panel > Settings > General, and verify that the external configuration directory and cluster mode are active.
2. On the shared storage device, go to EXTERNAL_CONFIGURATION_DIRECTORY/conf/general/cluster and verify that the file with suffix .masterNode is called [PROCESSOR_NODE_NAME].masterNode.
In case the file is named differently, wait two minutes and check again. If the file still does not exist nor has a different name, verify configuration steps 3b and 4a once again.
Please review the system architecture overview for additional information: XPLG-Architecture