This guide assumes an upgrade from the previous (v0.3.x) version of Archipelago. This guide does not support upgrading from an intermediate snapshot version of Archipelago.
If you plan to integrate Archipelago with Pithos, all Archipelago nodes must be upgraded first.
The following steps must be applied to each node that gets upgraded.
Each node that will be updated must be idle with respect to Archipelago. To achieve the above the administrator must make sure that neither him nor the upper service layers perform any kind of Archipelago action on the node.
In order to do so, the administrator can manually set each node to be upgraded as drained using the following command on the ganeti master:
# gnt-node modify --drained=True <node>
or set the whole cluster to drained using the following snf-manage command from the Cyclades service node:
# snf-manage backend-modify --drained=True <backend_id>
If upgrading from Archipelago version less that 0.3.5, the administrator must make sure that each mapped volume on the node is opened. An oneliner like the following should do the trick:
# for i in $(vlmc showmapped|grep -v image|awk '{print $2}'); do vlmc open $i ; done ;
Make sure that no errors are raised. If so, the administrator must resolve them manually.
For each node to be upgraded, the administrator must evacuate it from Archipelago VMs, by either live-migrating them or failing them over to an already upgrade node. Of course, there is an exception on the first node to be upgraded.
Archipelago must be fully stopped before upgrading. Perform the following command to achieve it:
# archipelago stop
Archipelago consists of the following packages:
You can install them by installing archipelago archipelago-ganeti.
# apt-get install archipelago archipelago-ganeti
Optionally if you want RADOS support for archipelago, you should install archipelago-rados package.
# apt-get install archipelago-rados
and also xseg-tools package in case you need to dig into the shared memory segment
# apt-get install xseg-tools
On the nodes that will host VMs, blktap-archipelago-utils from GRNET and the distro-provided blktap-dkms package must also be installed.
# apt-get install blktap-archipelago-utils blktap-dkms
The new config file is located on /etc/archipelago/archipelago.conf. There is also a sample configuration file for RADOS installations located at /etc/archipelago/archipelago.conf.rados_example. You can copy that to the Archipelago configuration file location in order to adjust installation-specific options only.
Adjust the new config file to the deployment needs (e.g. set filed directories or radosd pools).
Notable new config option that should be configured is:
Archipelago v0.4 creates a new system user and group called archipelago. By default the configuration file is set up to run as those users. If your are using Archipelago with filed special care is needed:
After migrating your setting from the old config to the new one, you can safely remove it from your system.
# rm /etc/default/archipelago
After successfully configuring the new/upgraded Archipelago installation, start it.
# archipelago start
After a successfull start, you can undrain the node:
# gnt-cluster modify --drained=False <node>
If you have drained the whole cluster and successfully upgraded all the nodes, you can undrain it using the snf-manage command:
# snf-manage backend-modify --drained=False <backend_id>
After upgrading all Archipelago nodes, you have to take certain steps to finalize the upgrade.
If you are using Pithos backed by Archipelago with filed, after having upgraded all Archipelago nodes and successfully installed the upgraded Pithos version, the following steps must also be followed.
On every node that runs Archipelago, perform the following:
# archipelago stop
Use the -f option if there are mapped volumes. Have in mind that during the time Archipelago is stopped, the VMs will appear frozen whenever they attempt to perform any disk I/O.
Enable the pithos_migrate setting for all blockerm and blockerb peers on all nodes. Add the following line pithos_migrate=True on the blockerm and blockerb section of the configuration files.
On every node that runs Archipelago, perform the following:
# archipelago start
If your installation does not rely on filed skip this section.
In previous Archipelago versions, lock files were placed along with the data files of blockerm. In Archipelago version 0.4 we set a distinct lock file directory for easier lock lookup.
Make sure you have a common directory shared with all Archipelago nodes (e.g. /srv/archip/locks). The directory must be owned by the user and group Archipelago run as (default archipelago:archipelago) and both the user and the group must have read and write permissions.
On every node that runs Archipelago, perform the following:
# archipelago stop
Use the -f option if there are mapped volumes. Have in mind that during the time Archipelago is stopped, the VMs will appear frozen whenever they attempt to perform any disk I/O.
Set the lock directory for all blockerm peers on all nodes. Add the following line lock_dir=/srv/archip/lock where /srv/archip/locks is the shared directory created on step 0.
On every node that runs Archipelago, perform the following:
# archipelago start
Archipelago lazily upgrades the mapfiles to the latest version, when they are accessed. To make sure that all mapfiles have been upgraded to the latest version, the provided migration tool must be executed. The tool is located in /usr/share/archipelago/tools/finalize_upgrade_0.4. You can run it from any node with access to Archipelago. Make sure that it completes successfully.
It is advised, in order to avoid false alarms (e.g. a mapfile that failed to upgrade), to be idle wrt to Archipelago control operations.