Floating Controllers¶
Concept¶
Floating builds provide more flexibility than individual builds, and can be distributed to many users within an organization. A floating build licensed for N seats will allow N JEB clients to connect to it concurrently. When a client leaves, its seat is vacated, allowing another client to connect to the Controller.
Currently, only the Pro Floating version of JEB2 supports floating licenses.
When starting, as well as during its execution, JEB will regularly probe the Controller to determine whether or not it is allowed to run. This check is based on the number of seats available in your licensed build: eg, a floating license for 5 seats allows 5 different users to run JEB concurrently.
In order to start the Controller, use the --controller flag along with the -c flag. Example on a Linux machine:
$ jeb_linux.sh -c --controller
In order to start JEB, proceed as usual, for instance on Windows:
$ jeb_wincon.bat
Technical notes:
- The JEB client as well as the Controller are the same binary file: there is no separate package for the Controller.
- The '--controller' flag is not available if the build is not a floating one.
- The Controller must be started before the clients.
- JEB instances regularly contact the Controller. Therefore, the Controller should always be reachable by running instances of JEB. In order to minimize potential problems due to network latency, it is recommended to run JEB and the Controller within the same local network.
- By default, the Controller listens on all interfaces, on port 23477. This can be changed by setting the '.ControllerInterface' and '.ControllerPort' flags in the configuration file (as explained later in this document).
- The protocol used for communication between a Controller and JEB instances is HTTP, therefore eliminating potential firewall blocking issues.
- JEB instances and the Controller may be run in different environments (as in the example above: Controller on Linux, JEB on Windows, etc.)
- The controller property '.ControllerMessage' is used to provide messages, visible by clients on the Controller portal.
Initial Execution¶
Note: starting with JEB version 2.2.10, the floating controller no longer requires a support package to run. Whether the machine that will run the controller is connected to the internet or not, simply run the startup script with
-c --controller, and follow the initial installation steps. Then, proceed with section Controller Settings.
On a machine connected to the Internet¶
If the machine executing the controller is connected to the Internet, the following will happen:
- The support package will be downloaded automatically
- Just follow the prompt: input your password, accept the EULA, generate a license key
Sample log output:
C:\jeb>jeb_wincon.bat -c --controller
Downloading jeb2-sp-win64-v2.zip...
Reading 36675855 bytes: 9>>>>8>>>>7>>>>6>>>>5>>>>4>>>>3>>>>2>>>>1>>>>0
Copying file...
Success
JEB decryption password: ***************
...
...
<EULA>
Governing Law, Jurisdiction and Costs
This Agreement shall be governed, construed, and enforced in accordance with the laws of the State of California, without regard to its conflict of laws rules.
Severability
If any provision of this Agreement shall be held to be invalid or unenforceable, the remainder of this Agreement shall remain in full force and effect. To the extent any express or implied restrictions are not permitted by applicable laws, these express or implied restrictions shall remain in force and effect to the maximum extent permitted by such applicable laws.
Write "yes" to agree, then press enter: yes
Hello Nicolas Falliere. Set up your JEB controller by generating a license key. This one-time operation will only take a few seconds.
Please visit https://www.pnfsoftware.com/genlk, and use the following "license data" blob to generate a key
License data: .............................................
Input your license key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Mode: Controller for floating clients
Note: X client(s) may simultaneously connect to this controller instance
Listening on 0.0.0.0/0.0.0.0:23477...
On a machine NOT connected to the Internet¶
If the machine executing the controller is not connected to the Internet, the following will happen:
- The support package cannot be downloaded
- If you are running JEB version 2.2.9 or below, the installation will fail; if you are running JEB 2.2.10 or above, the support package is no longer required (see note above), and you may proceed
Sample log output when the download fails: (JEB 2.2.9-)
C:\jeb>jeb_wincon.bat -c --controller
Downloading jeb2-sp-win64-v2.zip...
A network error occurred
Download error.
If this system is offline, please visit https://www.pnfsoftware.com/jeb2/downloads to manually retrieve the support package.
The support package was not dropped
You will have to download a support package manually, and drop it in your bin/ folder. Instructions and download links can be found here: https://www.pnfsoftware.com/jeb2/downloads
Controller Settings¶
After the first step is completed successfully, executing the controller should display something like the following:
C:\jeb>jeb_wincon.bat -c --controller
Mode: Controller for floating clients
Note: X client(s) may simultaneously connect to this controller instance
Listening on 0.0.0.0/0.0.0.0:23477...
As can be seen, by default, the controller is listening on port 23477 on all interfaces. This can be changed by editing the file bin/jeb-client.cfg and adding two entries named .ControllerInterface and .ControllerPort.
For example, if you wish to listen exclusively on localhost, port 30000:
.ControllerInterface = localhost
.ControllerPort = 35000
Updating the Controller¶
There is no auto-update feature in the controller. The update procedure is:
- Check your registered email address for a JEB update email ("JEB xxx is available...")
- Download the software archive
- Copy the archive to the root of your JEB folder and rename the file to
update.zip - Create a text file named
update.pwd - Store the email-provided password inside this file
- Start your controller as normal (eg,
... -c --controller); the update will be installed automatically
