On the JReport Administration page, you can administer the servers in a cluster, for example, you can configure the performance weight for the clustered servers, balance the server load to makes the servers work more effectively. If you have JReport Server Monitor installed, you can also use it to monitor the status of each clustered server.
If you have chosen the Weighted Min-load (loadbalance.type=2) algorithm for load balancing when creating a cluster, you will have to configure a performance weight for each clustered server in the cluster. The higher performance weight you set to a clustered server, the higher chance it may get selected by the server that has the active scheduler during load balancing.
To configure performance weight:
The following are two examples for how Least Weighted Current Reports algorithm works:
Example 1 - when there are free servers:
Active Servers | ServerA | ServerB | ServerC | Comments |
---|---|---|---|---|
Is local server | TRUE | FALSE | FALSE | |
Maximum concurrent reports | 8 | Unlimited | 5 | |
Number of currently running reports | 6 | 6 | 5 | |
Performance weight | 10 | 10 | 10 | |
Calculation | ||||
Weighted current reports | 0.6 | 0.6 | 0.5 | |
Is free | TRUE | TRUE | FALSE | Current < MaxConcurrent, or MaxConcurrent is unlimited |
Candidate servers | YES | YES | Select from free servers | |
Candidate servers | YES | YES | Select servers which have the least Weighted current reports | |
Selected server | YES | Local server has higher priority |
Example 2 - when there are no free servers:
Active Servers | ServerA | ServerB | ServerC | Comments |
---|---|---|---|---|
Is local server | TRUE | FALSE | FALSE | |
Maximum concurrent reports | 10 | 10 | 10 | |
Number of currently running reports | 10 | 10 | 10 | |
Performance weight | 4 | 5 | 8 | |
Calculation | ||||
Weighted current reports | 2.5 | 2 | 1.25 | |
Is free | FALSE | FALSE | FALSE | Current < MaxConcurrent, or MaxConcurrent is unlimited |
Candidate servers | YES | YES | YES | Selects from all servers when all servers are full |
Candidate servers | YES | Select servers which have the least Weighted current reports | ||
Selected server | YES | Select ServerC |
In a cluster environment, JReport Server provides a load balancing mechanism which enables the server to work more effectively.
Load balancing process
Tip: You can also directly specify a server in a cluster to perform a scheduled task instead of using load balancing. To do this, first make sure that the Identify Server Preference option is enabled in the Profile > Customize Server Preferences > Advanced tab, and then use the Specify a preferred server to run the task option in the General tab of the Schedule dialog to specify a server manually.
Note: For the load balancing algorithms: the server that holds the active scheduler selects from the servers with the number of concurrently running reports less than maximum number first. However, if all servers are full, it will select from all of them.
You can also write your own load balancing algorithm based on the API included in JReport Server. For details, see Writing Customized Load Balancing Algorithm via API.
If you have JReport Server Monitor installed, you can use it to monitor the status of each clustered server.
Before you can use JReport Server Monitor to monitor servers in a cluster, the following steps must be taken:
<monitor_install_root>\bin
to configure the IP address and port information of one clustered server.<server_install_root>\bin
of the clustered server whose IP address and port information you modified in the last step to <monitor_install_root>\bin
, or remove rmi.auth from <server_install_root>\bin
of this clustered server. <monitor_install_root>\bin
to start JReport Server Monitor.http://monitorhost:monitorport
(default 8848), or by clicking Monitor on the JReport Administration page system toolbar.Note: The Monitor tab will not be displayed on the JReport Administration page when the web.monitor.link.enable property in the server.properties file in <server_install_root>\bin
is set to false. You can specify the monitor port by setting monitor.jmx.htmladaptor.port in server.properties.