Upgrade Broker 2.x to 3.x
Overview
Broker 3.x replaces the Java-based 2.x broker with a single native binary. The configuration file, install locations, service name, and broker pool authentication token stay the same, and an in-place upgrade is supported on Windows (MSI) and Linux (rpm, deb). You do not need to uninstall 2.x first.
This runbook covers upgrading from 2.x to 3.1.1 or later. 3.1.1 includes installer fixes for upgrades from 2.x. If you must use 3.0.x or 3.1.0, also follow Upgrade with 3.0.x or 3.1.0 Packages.
What you’ll accomplish:
- Review the 2.x settings that no longer apply in 3.x
- Upgrade a broker in place with the rpm, deb, or MSI package
- Verify the 3.x broker is running and connected to your tenant
What Changes in 3.x
| Area | 2.x (Java) | 3.x |
|---|---|---|
| Runtime | Java 21 required | None: single native binary |
| Program | britive-broker.jar | britive-broker / britive-broker.exe |
| Configuration | config/broker-config.yml | Same file, same format, preserved on upgrade |
| Service name | britive-broker (Linux), Britive Broker (Windows) | Unchanged |
| Service description | “Britive Agent service” (Linux), “Britive Broker” (Windows) | “Britive Broker service” (Linux), “Britive Broker” (Windows, whether installed by the MSI or by britive-broker.exe install) |
| Logging config | config/logback.xml | Not used. Logging is set in the logging section of broker-config.yml or BRITIVE_BROKER_LOG_* environment variables |
| Linux logs | Wherever logback.xml sent them | /var/log/britive-broker.log and /var/log/britive-broker_error.log (see Logging on Linux) |
| Windows logs | logs\ in the install folder | logs\britive-broker.log in the install folder, plus startup errors in the Windows Event Log |
| Extra trusted CAs | Java truststore (cacerts, keytool) | ca_certificate_path (PEM file) plus the operating system trust store |
| Proxy | http_proxy section, JVM -D options | http_proxy section, or the standard HTTPS_PROXY / NO_PROXY environment variables |
Settings That No Longer Apply
Review these before upgrading. Everything else in broker-config.yml carries over unchanged.
- CA certificates added to the Java truststore (for example, a TLS-inspecting proxy’s CA imported with
keytool) are not used by 3.x. Export them as a PEM file and setca_certificate_pathinbroker-config.yml, or add them to the operating system trust store.truststore_passwordis ignored. - JVM options (
-Dhttps.proxyHost,-Djavax.net.ssl.*, and similar) in a customized service unit orBritive Broker.iniare ignored. Use thehttp_proxysection orHTTPS_PROXY. BRITIVE_BROKER_HTTP_PROXY_*environment variables are no longer read. Use thehttp_proxysection ofbroker-config.ymlorHTTPS_PROXY/NO_PROXY.http_proxy.connection_typeis ignored. 3.x always tunnels through the proxy with HTTP CONNECT.- Custom
logback.xmlsettings are not used. Use theloggingsection ofbroker-config.ymlinstead. See Logging on Linux.
Before You Begin
Pick a pilot host
Upgrade one non-production broker in each pool first and run a checkout through it before rolling out further.
Back up the broker’s files
At minimum, back up:
broker-config.yml- the
bootstrapfolder - any resource-action scripts referenced by
resource_typesthat live inside the install folder
Install folders:
- Linux:
/opt/britive-broker/ - Windows: the install folder, by default
C:\Program Files (x86)\Britive Inc\Britive Broker\. Confirm withsc.exe qc "Britive Broker"(BINARY_PATH_NAME).
Review the settings that no longer apply
Go through Settings That No Longer Apply and update broker-config.yml if needed. You can edit it before the upgrade; 2.x ignores the 3.x-only settings.
Linux: check for a copy of the service unit in /etc
systemctl cat britive-broker | head -1If the first line shows /etc/systemd/system/britive-broker.service, a full copy of the unit overrides the one the package installs. After the upgrade it would still try to start the Java broker, and the service would fail.
Before upgrading:
Move any settings you still need (for example
Environment=lines) into/etc/systemd/system/britive-broker.service.d/override.conf. Drop JVM options, which 3.x doesn’t use.Remove the copy and reload systemd:
sudo rm /etc/systemd/system/britive-broker.service sudo systemctl daemon-reload
Files in britive-broker.service.d/ are fine and are kept across upgrades.
Linux: rpm
For RHEL, Rocky, Amazon Linux, Fedora and other rpm-based systems. Finish every step in Before You Begin first.
Leave the broker service running
You don’t need to stop it. The upgrade stops the 2.x broker and starts 3.x, as long as the service is enabled or running.
Install the rpm package
sudo dnf upgrade ./britive-broker-3.1.1-1.x86_64.rpmyum or rpm -Uvh also work. Use the aarch64 package on ARM.
The following messages are expected and harmless:
warning: /opt/britive-broker/config/broker-config.yml created as /opt/britive-broker/config/broker-config.yml.rpmnew
warning: /opt/britive-broker/config/logback.xml saved as /opt/britive-broker/config/logback.xml.rpmsaveYour broker-config.yml is kept unchanged. .rpmnew is the new default file for reference, and .rpmsave is your old logback configuration, which 3.x doesn’t use.
If the output contains Warning: /etc/systemd/system/britive-broker.service overrides the unit shipped with this package, a copy of the unit in /etc is still present. Follow the fix steps printed with the warning, or the service-unit check in Before You Begin.
Then verify the upgrade.
Linux: deb
For Debian, Ubuntu and other deb-based systems. Finish every step in Before You Begin first.
Leave the broker service as it is
You don’t need to stop it.
Install the deb package
sudo apt-get install ./britive-broker_3.1.1-1_amd64.debdpkg -i also works. Use the arm64 package on ARM. The upgrade runs unattended; it doesn’t ask about configuration files, so it is safe to run from Ansible or similar tools.
The upgrade also removes the old /opt/britive-broker/britive-broker.jar and config/logback.xml, which 3.x doesn’t use. If you had edited logback.xml, your copy is kept as config/logback.xml.dpkg-bak.
Then verify the upgrade.
Windows: MSI
Finish every step in Before You Begin first.
Copy the MSI to the server
Use the package for your architecture: Britive Broker 3.1.1-amd64.msi or Britive Broker 3.1.1-arm64.msi.
Run the installer with logging turned on
From an elevated Command Prompt or PowerShell:
msiexec /i "Britive Broker 3.1.1-amd64.msi" /l*v C:\temp\britive-broker-upgrade.logYou don’t need to stop the service first. The installer stops and removes the 2.x broker, keeps your broker-config.yml, installs 3.x into the same folder, and starts the Britive Broker service. It doesn’t prompt for the tenant subdomain or token on an upgrade.
Check the service started
The installer completes even if the broker can’t start (for example, because of an error in broker-config.yml). In that case the Britive Broker service is left Stopped. Check Event Viewer → Windows Logs → Application (source Britive Broker) and logs\britive-broker.log in the install folder for the cause, fix it, and run Start-Service 'Britive Broker'. See Troubleshoot.
Then verify the upgrade.
Verify
Check the service on Linux
systemctl status britive-broker # active (running)
systemctl cat britive-broker | grep ExecStart # ExecStart=/opt/britive-broker/britive-broker
pgrep -af britive-broker.jar # no output: no Java broker left running
tail -n 50 /var/log/britive-broker.log # look for "Connection success"Check the service on Windows
Get-Service 'Britive Broker' # Status: Running
sc.exe qc "Britive Broker" # BINARY_PATH_NAME ends in britive-broker.exe
sc.exe qdescription "Britive Broker" # DESCRIPTION: Britive Broker
Get-Content "C:\Program Files (x86)\Britive Inc\Britive Broker\logs\britive-broker.log" -Tail 50BINARY_PATH_NAME should point to the MSI install folder. If it points somewhere else (for example a folder where the zip package was extracted and britive-broker.exe install was run), run the 3.x MSI again: it updates the existing service to the install folder.
Confirm in the Britive admin console
Under System Admin → Brokers and Broker Pools, confirm the broker is connected and shows the new version. Then run a checkout that the broker serves, and a check-in.
After the Upgrade
- Remove Java once no broker on the server needs it and nothing else uses it. Installers never remove a shared runtime.
- RHEL/Rocky:
sudo dnf remove java-21-openjdk-headless - Debian/Ubuntu:
sudo apt-get remove openjdk-21-jre-headless - Windows: uninstall Microsoft Build of OpenJDK 21 from Apps & Features.
- RHEL/Rocky:
- Remove leftover files you no longer need:
config/logback.xml.rpmsave,config/logback.xml.dpkg-bak,config/broker-config.yml.rpmnew(andconfig/logback.xmlafter an upgrade with 3.0.x or 3.1.0 deb packages). - Remove the backup once you have confirmed the broker works.
Logging on Linux
The 3.x broker writes to standard output, and the service unit sends it to /var/log/britive-broker.log and /var/log/britive-broker_error.log. This needs systemd 240 or later (check with systemctl --version). On older systemd, such as RHEL 8 (systemd 239), the logs go to the journal instead: journalctl -u britive-broker.
To also write the logs to a file of your choice, as a custom logback.xml file appender did with 2.x, set logging.file in broker-config.yml (3.1.1 and later) and restart the broker:
config:
logging:
file: logs/britive-broker.log # = /opt/britive-broker/logs/britive-broker.logThe broker then writes a rotating log file there (100 MB per file, 7 days of archives in logs/archive/, about 1 GB in total by default; tune with max_size_mb, max_age_days and total_size_cap_mb), in addition to standard output. This works on any systemd version. The packages create /opt/britive-broker/logs writable by the britivebroker user; if you use another folder, make sure that user can write to it.
On 3.0.x and 3.1.0, or to redirect standard output itself to another folder on systemd 240 or later, create /etc/systemd/system/britive-broker.service.d/override.conf:
[Service]
StandardOutput=append:/opt/britive-broker/logs/britive-broker.log
StandardError=append:/opt/britive-broker/logs/britive-broker_error.logThen create the folder and restart:
sudo mkdir -p /opt/britive-broker/logs
sudo systemctl daemon-reload
sudo systemctl restart britive-brokerIf you change the log location, update /etc/logrotate.d/britive-broker to match.
Troubleshoot
| Symptom | Cause and fix |
|---|---|
Linux: service fails with Unable to access jarfile britive-broker.jar | A copy of the service unit in /etc/systemd/system/ still starts the Java broker. Follow the service-unit check in Before You Begin, then sudo systemctl restart britive-broker. |
Linux: package output shows Warning: /etc/systemd/system/britive-broker.service overrides the unit shipped with this package | Same as above. The package never modifies that file itself. |
Linux: service is inactive after the upgrade | The service wasn’t enabled. Run sudo systemctl enable --now britive-broker. |
| Windows: the Britive Broker service is Stopped after the upgrade | The broker stopped during startup, usually because of a configuration problem. Check Event Viewer → Windows Logs → Application (source Britive Broker) and logs\britive-broker.log for a Failed to load config, Failed to initialize broker or Broker startup panicked message. Fix broker-config.yml, then Start-Service 'Britive Broker'. |
| Windows: need the broker’s own error output | From an elevated prompt in the install folder, run .\britive-broker.exe run to start it in the foreground and see errors in the console. Press Ctrl+C to stop it. |
| TLS or certificate errors after the upgrade | A CA that 2.x trusted through the Java truststore isn’t trusted by 3.x. Set ca_certificate_path to a PEM file containing it. |
| Can’t connect through the proxy after the upgrade | The proxy was set with JVM options or BRITIVE_BROKER_HTTP_PROXY_* variables. Configure the http_proxy section or HTTPS_PROXY. |
No Connection success in the log | Look earlier in the log for bootstrap errors (DNS, TLS, proxy, or an invalid broker pool authentication token). |
When contacting Britive support, include:
- Linux: the package-manager output,
systemctl status britive-broker,systemctl cat britive-broker, the broker logs, andsystemctl --version. - Windows: the MSI log from
/l*v, the Application event log entries from the Britive Broker source, andlogs\britive-broker.log. broker-config.ymlwith the broker pool authentication token and any passwords removed.
Roll Back
If 3.x doesn’t work and you can’t fix it quickly, go back to 2.x:
- rpm:
sudo rpm -Uvh --oldpackage ./britive-broker-2.1.0-1.noarch.rpm(Java 21 must be installed). On current RHEL/Rocky 9, the Java 21 package no longer satisfies the 2.x package’sjava-headlessrequirement; ifrpmreports that dependency as missing while Java 21 is installed, add--nodeps. - deb:
sudo apt-get install --allow-downgrades ./britive-broker_2.1.0_all.deb - Windows: uninstall Britive Broker from Apps & Features, then install the 2.x MSI. It installs Java 21 if it’s missing.
Then restore broker-config.yml (and any other files you changed) from your backup, and restart the service.
Upgrade with 3.0.x or 3.1.0 Packages
3.0.x and 3.1.0 packages are missing the 3.1.1 upgrade fixes. If you must use them, change the steps above as follows.
rpm and deb packages
- The upgrade only restarts the broker if it was running. If the service was stopped, start it afterwards with
sudo systemctl enable --now britive-broker. - If you removed the 2.x package (
rpm -e/dpkg -r) instead of upgrading in place, its Java process keeps running. Stop it withsudo systemctl stop britive-broker(orsudo pkill -f britive-broker.jar) before installing 3.x. 3.1.1 and later do this automatically. - There is no warning for a copy of the unit in
/etc. The service-unit check in Before You Begin is required. - When the upgrade stops the Java broker, the journal may show
Failed with result 'exit-code'(exit status 143). You can ignore it.
deb packages only
The upgrade stops to ask whether to replace
broker-config.yml, and fails when run unattended. Keep your file by running:sudo apt-get install -o Dpkg::Options::=--force-confold ./britive-broker_<version>-1_amd64.debIf you see the prompt, answer N.
The old
/opt/britive-broker/britive-broker.jarisn’t removed. Once 3.x is running andpgrep -af britive-broker.jarreturns nothing, delete it.If a copy of the unit in
/etcis left in place, the server keeps running 2.x after the upgrade without any error. Thepgrepcheck in Verify catches this.dpkg may print
dpkg: warning: unable to delete old directory '/lib/systemd/system': Directory not empty. This is harmless.config/logback.xmlis left in place but no longer used; you can delete it. (Upgrading later to 3.1.1 or newer removes it.)
Windows MSI package
If the config uses
authentication_token_generator, check how long the script takes before upgrading. These versions run the script before the service registers with Windows, which allows about 30 seconds. If the script takes longer, the service fails to start, the installer shows the “failed to start” error with only Retry and Cancel, and the upgrade can’t complete. Time it as SYSTEM on the server, for example from a SYSTEM PowerShell prompt:Measure-Command { powershell.exe -File "<install folder>\bootstrap\<token script>" }If it takes more than about 20 seconds, upgrade to 3.1.1 or later (which runs the script after the service has started), or temporarily replace
authentication_token_generatorwith a literalauthentication_tokenfor the upgrade.britive-broker-<version>.jarmay be left in the install folder. If the 2.x Java broker takes longer than about 30 seconds to stop during the upgrade, Windows schedules the jar for deletion at the next reboot instead of deleting it. It isn’t used by 3.x; delete it or let the next reboot remove it. 3.1.1 and later stop the Java broker before the old version is removed, so the jar is deleted during the upgrade.If the broker can’t start, the installer stops with an error (“Service ‘Britive Broker’ failed to start. Verify that you have sufficient privileges to start system services”). The message is generic and almost never a permissions problem. The dialog offers only Retry and Cancel:
- Find the cause by running
.\britive-broker.exe runfrom the install folder in an elevated prompt (startup errors aren’t written to the Windows Event Log in these versions). If you can fix it now (for example, an error inbroker-config.yml), fix it and choose Retry. - If you choose Cancel, the installer rolls back 3.x but can’t restore 2.x, which leaves the server with no broker installed. Fix the cause, then run the MSI again; it installs as a fresh install and prompts for the tenant subdomain and token, so have your
broker-config.ymlbackup ready to copy back.
- Find the cause by running
A service registered with
britive-broker.exe install(zip package) has the description “Britive on-premise broker agent”. Running the MSI over it changes the description to “Britive Broker” and points the service at the install folder. The service name is “Britive Broker” either way.
Next Steps
- Access Broker Deployment — overview of the broker and container-based deployment options
- Deploy on ECS Fargate — if you’d rather move the broker to a container than keep it on a host