blob: 8d966cde545d5b4828613177348978abeac9bb46 [file] [log] [blame] [view]
---
title: Upgrade
layout: website-normal
---
## Upgrading Brooklyn
* Use of RPM and DEB is now recommended where possible, rather than the tar.gz. This entirely replaces the previous install.
* CentOS 7.x is recommended over CentOS 6.x (note: the RPM **will not work** on CentOS 6.x)
### Upgrade from Apache Brooklyn 0.12.0 onward
{::options parse_block_html="true" /}
<ul class="nav nav-tabs">
<li class="active impl-1-tab"><a data-target="#impl-1, .impl-1-tab" data-toggle="tab" href="#">RPM / DEB Packages</a></li>
<li class="impl-2-tab"><a data-target="#impl-2, .impl-2-tab" data-toggle="tab" href="#">Tarball</a></li>
</ul>
<div class="tab-content">
<div id="impl-1" class="tab-pane fade in active">
1. **Important!** Backup persisted state and custom configuration, in case you need to rollback to a previous version.
1. By default, persisted state is located at `/var/lib/brooklyn`.
The `persistenceDir` and `persistenceLocation` are configured in the file `/etc/brooklyn/org.apache.brooklyn.osgilauncher.cfg`.
The persistence details will be logged in `/var/log/brooklyn/brooklyn.info.log` at startup time.
2. Configuration files are in `/etc/brooklyn`.
2. Upgrade Apache Brooklyn:
1. [Download](/guide/misc/download.md) the new RPM/DEB package
2. Upgrade Apache Brooklyn:
# CentOS / RHEL
sudo yum upgrade apache-brooklyn-xxxx.noarch.rpm
# Ubuntu / Debian
sudo dpkg -i apache-brooklyn-xxxx.deb
If there are conflicts in configuration files (located in `/etc/brooklyn`), the upgrade will behave differently based
on the package you are using:
* RPM: the upgrade will keep the previously installed one and save the new version, with the suffix `.rpmsave`.
You will then need to check and manually resolve those.
* DEB: the upgrade will ask you what to do.
3. Start Apache Brooklyn:
# CentOS 7 / RHEL
sudo systemctl start brooklyn
# CentOS 6 and older
sudo initctl start brooklyn
# Ubuntu / Debian
start brooklyn
Wait for Brooklyn to be running (i.e. its web-console is responsive)
</div>
<div id="impl-2" class="tab-pane fade">
1. Stop Apache Brooklyn:
./bin/stop brooklyn
If this does not stop it within a few seconds (as checked with `sudo ps aux | grep karaf`), then use `sudo kill <JAVA_PID>`
2. **Important!** Backup persisted state and custom configuration.
1. By default, persisted state is located at `~/.brooklyn/brooklyn-persisted-state`.
The `persistenceDir` and `persistenceLocation` are configured in the file `./etc/org.apache.brooklyn.osgilauncher.cfg`.
The persistence details will be logged in `./log/brooklyn.info.log` at startup time.
2. Configuration files are in `./etc/`.
Any changes to these configuration files will need to be re-applied after reinstalling Brooklyn.
3. Install new version of Apache Brooklyn:
1. [Download](/guide/misc/download.md) the new tarball zip package.
2. Install Brooklyn:
tar -zxf apache-brooklyn-xxxx.tar.gz
cd apache-brooklyn-xxxx
4. Restore any changes to the configuration files (see step 2).
5. Validate that the new release works, by starting in "HOT_BACKUP" mode.
1. Before starting Brooklyn, reconfigure `./etc/org.apache.brooklyn.osgilauncher.cfg` and set `highAvailabilityMode=HOT_BACKUP`.
This way when Brooklyn is started, it will only read and validate the persisted state and will not write into it.
2. Start Apache Brooklyn:
./bin/start brooklyn
3. Check whether you have rebind ERROR messages in `./log/brooklyn.info.log`, e.g. `sudo grep -E "WARN|ERROR" /opt/brooklyn/log/brooklyn.debug.log`.
If you do not have such errors you can proceed.
4. Stop Apache Brooklyn:
./bin/stop brooklyn
5. Change the `highAvailabilityMode` to the default (AUTO) by commenting it out in `./etc/org.apache.brooklyn.osgilauncher.cfg`.
6. Start Apache Brooklyn:
./bin/start brooklyn
Wait for Brooklyn to be running (i.e. its web-console is responsive).
7. Update the catalog, using the br command:
1. [Download](https://brooklyn.apache.org/download/index.html#command-line-client) the br tool.
2. Login with br: `br login http://localhost:8081 <user> <password>`.
3. Update the catalog: `br catalog add /opt/brooklyn/catalog/catalog.bom`.
</div>
</div>
### Upgrade from Apache Brooklyn 0.11.0 and below
<ul class="nav nav-tabs">
<li class="active impl-1-tab"><a data-target="#impl-1, .impl-1-tab" data-toggle="tab" href="#">RPM / DEB Packages</a></li>
<li class="impl-2-tab"><a data-target="#impl-2, .impl-2-tab" data-toggle="tab" href="#">Tarball</a></li>
</ul>
<div class="tab-content">
<div id="impl-1" class="tab-pane fade in active">
1. Stop Apache Brooklyn:
# CentOS 7 / RHEL
sudo systemctl stop brooklyn
# CentOS6 and older
sudo initctl stop brooklyn
# Ubuntu / Debian
stop brooklyn
If this does not stop it within a few seconds (as checked with `sudo ps aux | grep brooklyn`), then use `sudo kill <JAVA_PID>`.
2. **Important!** Backup persisted state and custom configuration.
1. By default, persisted state is located at `/opt/brooklyn/.brooklyn/`..
The `persistenceDir` and `persistenceLocation` are configured in the file `./etc/org.apache.brooklyn.osgilauncher.cfg`.
The persistence details will be logged in `./log/brooklyn.info.log` at startup time.
2. Configuration files are in `./etc/`.
Any changes to these configuration files will need to be re-applied after reinstalling Brooklyn.
3. Delete the existing Apache Brooklyn install:
1. Remove Brooklyn package:
# CentOS / RHEL
sudo yum erase apache-brooklyn
# Ubuntu / Debian
sudo dpkg -r apache-brooklyn
2. On CentOS 7 run `sudo systemctl daemon-reload`.
3. Confirm that Brooklyn is definitely not running (see step 1 above).
4. Delete the Brooklyn install directory: `sudo rm -r /opt/brooklyn` as well as the Brooklyn log directory:
`sudo rm -r /var/log/brooklyn/`
4. Make sure you have Java 8.
By default CentOS images come with JRE6 which is incompatible version for Brooklyn.
If CentOS is prior to 6.8 upgrade nss: `yum -y upgrade nss`
5. Install new version of Apache Brooklyn:
1. [Download](/guide/misc/download.md) the new RPM/DEB package.
2. Install Apache Brooklyn:
# CentOS / RHEL
sudo yum install apache-brooklyn-xxxx.noarch.rpm
# Ubuntu / Debian
sudo dpkg -i apache-brooklyn-xxxx.deb
6. Restore the persisted state and configuration.
1. Stop the Brooklyn service:
# CentOS 7 / RHEL
sudo systemctl stop brooklyn
# CentOS 6 and older
sudo initctl stop brooklyn
# Ubuntu / Debian
stop brooklyn
Confirm that Brooklyn is no longer running (see step 1).
2. Restore the persisted state directory into `/var/lib/brooklyn` and any changes to the configuration files (see step 2).
Ensure owner/permissions are correct for the persisted state directory, e.g.:
`sudo chown -r brooklyn:brooklyn /var/lib/brooklyn`
7. Validate that the new release works, by starting in "HOT_BACKUP" mode.
1. Before starting Brooklyn, reconfigure `/etc/brooklyn/org.apache.brooklyn.osgilauncher.cfg` and set `highAvailabilityMode=HOT_BACKUP`.
This way when Brooklyn is started, it will only read and validate the persisted state and will not write into it.
2. Start Apache Brooklyn:
# CentOS 7 / RHEL
sudo systemctl start brooklyn
# CentOS 6 and older
sudo initctl start brooklyn
# Ubuntu / Debian
start brooklyn
3. Check whether you have rebind ERROR messages in the Brooklyn logs, e.g. `sudo grep -E "Rebind|WARN|ERROR" /var/log/brooklyn/brooklyn.debug.log`.
If you do not have such errors you can proceed.
4. Stop Brooklyn:
# CentOS 7 / RHEL
sudo systemctl stop brooklyn
# CentOS 6 and older
sudo initctl stop brooklyn
# Ubuntu / Debian
stop brooklyn
5. Change the `highAvailabilityMode` to the default (AUTO) by commenting it out in `./etc/org.apache.brooklyn.osgilauncher.cfg`.
8. Start Apache Brooklyn:
# CentOS 7 / RHEL
sudo systemctl start brooklyn
# CentOS 6 and older
sudo initctl start brooklyn
# Ubuntu / Debian
start brooklyn
Wait for Brooklyn to be running (i.e. its web-console is responsive).
9. Update the catalog, using the br command:
1. Download the br tool (i.e. from the "CLI Download" link in the web-console).
2. Login with br: `br login http://localhost:8081 <user> <password>`.
3. Update the catalog: `br catalog add /opt/brooklyn/catalog/catalog.bom`.
</div>
<div id="impl-2" class="tab-pane fade">
Same instructions as above.
</div>
</div>
## Rollback
This section applies only with you are using the RPM/DEB packages. To perform a rollback, please follow these instructions:
{% highlight bash %}
# CentOS / RHEL
yum downgrade apache-brooklyn.noarch
# Ubuntu Debian
dpkg -i apache-brooklyn-xxxx.deb
{% endhighlight %}
*Note that to downgrade a DEB package is essentially installing a previous version therefore you need to [download](../misc/download.md)
the version you want to downgrade to before hand.*
## How to stop your service
On systemd:
{% highlight bash %}
systemctl stop brooklyn
{% endhighlight %}
On upstart:
{% highlight bash %}
stop brooklyn
{% endhighlight %}
## Web login credentials
* User credentials should now be recorded in [`brooklyn.cfg`](/guide/ops/configuration/brooklyn_cfg.md).
* Brooklyn will still read them from both [`brooklyn.cfg`](/guide/ops/configuration/brooklyn_cfg.md) and `~/.brooklyn/brooklyn.properties`.
* Configure a username/password by modifying [`brooklyn.cfg`](/guide/ops/configuration/brooklyn_cfg.md). An example entry is:
{% highlight bash %}
brooklyn.webconsole.security.users=admin
brooklyn.webconsole.security.user.admin.password=password2
{% endhighlight %}
## Persistence
If you have persisted state you wish to rebind to, persistence is now configured in the following files:
* [`brooklyn.cfg`](/guide/ops/configuration/brooklyn_cfg.md)
* [`org.apache.brooklyn.osgilauncher.cfg`](/guide/ops/paths.md)
For example, to use S3 for the persisted state, add the following to [`brooklyn.cfg`](/guide/ops/configuration/brooklyn_cfg.md):
{% highlight bash %}
brooklyn.location.named.aws-s3-eu-west-1:aws-s3:eu-west-1
brooklyn.location.named.aws-s3-eu-west-1.identity=<ADD CREDS>
brooklyn.location.named.aws-s3-eu-west-1.credential=<ADD CREDS>
{% endhighlight %}
To continue the S3 example, for the persisted state, add the following to [`org.apache.brooklyn.osgilauncher.cfg`](/guide/ops/paths.md):
{% highlight bash %}
persistenceLocation=aws-s3-eu-west-1
persistenceDir=<ADD HERE>
{% endhighlight %}
Apache Brooklyn should be stopped before this file is modified, and then restarted with the new configuration.
***Note that you can not store the credentials (for e.g. aws-s3-eu-west-1) in the catalog because that catalog is stored
in the persisted state. Apache Brooklyn needs to know it in order to read the persisted state at startup time.***
If binding to existing persisted state, an additional command is required to update the existing catalog with the Brooklyn
0.12.0 versions. Assuming Brooklyn has been installed to [`/opt/brooklyn`](/guide/ops/paths.md) (as is done by the RPM and DEB):
{% highlight bash %}
br catalog add /opt/brooklyn/catalog/catalog.bom
{% endhighlight %}
All existing custom jars previously added to lib/plugins (e.g. for Java-based entities) need to be converted to OSGi bundles,
and installed in Karaf. The use of the "brooklyn.libraries" section in catalog.bom files will continue to work.