I am not an expert in load balancing configuration but I think that with the network architecture of VPL it may be difficult to use an "execution server" load balancer.
Notice that the execution process takes different steps and requires different network connections that need to be established with the same server in the cluster.
For example, the evaluation process takes these steps.
1) A user launches an evaluation process. e.g. the user clicks evaluate button.
2) The browser sends a request (
AJAX/
JSON) to the Moodle server.
3) The Moodle server selects an execution server (with retries) and sends the task to an execution server (HTTP/XMLRPC). The execution server generates different security tokens as a response to de request. The task start.
4) The Moodle server responds to the Browser request with information with the "execution server
URL" and the security tokens.
5) The browser connects with the execution server using the URL+security token and the "WebSocket" protocol to monitor the task.
6) When the task end, the monitor sends a request (AJAX/JSON) to the Moodle server to retrieve the task report/result.
8) The Moodle server request the "execution server" the task result (HTTP/XMLRPC) with the security token, save it and return the result to the browser.
9) The browser shows the result.
In the case of interactive execution, steps 6-9 are replaced with another WebSocket connection to the input/output of the task running in the server showing results/getting keyboard input in the browser.
If you get running the load-balanced system, please let us know.
Best regards,
Juan Carlos.