Installing Bamboo Data Center
These instructions are applicable for installing Bamboo Data Center on your own hardware. This guide covers installing Bamboo Data Center for the first time with no pre-existing data.
Other ways to install Bamboo Data Center:
- Kubernetes - installation on a Kubernetes cluster using our Helm charts.
Install Bamboo Data Center on a single node
If your organization doesn't need high availability or disaster recovery capabilities right now, you can install Bamboo Data Center without setting up a cluster. To deploy Bamboo Data Center on a single node, head to Bamboo installation guide to learn about all the ways in which you can install Bamboo.
Install Bamboo Data Center in a cluster
If your organization requires continuous uptime and disaster recovery, you'll want to run Bamboo Data Center in a cluster.
Before you begin
See Clustering with Bamboo Data Center for a complete overview of hardware and infrastructure requirements and recommendations.
Bamboo Data Center supports one active node at a time and an unlimited number of warm-standby nodes that will become the active node once the previous active node goes down.
Provision the shared database and filesystem nodes
Before you install the first Bamboo application node, you need to provision the shared database and shared file system to use with Bamboo Data Center.
1. Download Bamboo
To download Bamboo for your operating system, go to the download page.
2. Create the installation directory
Extract the downloaded file to an install location.
The path to the extracted directory is referred to as the
<Bamboo installation directory>
in these instructions.
3. Provision your shared database
- Bamboo doesn't support clustered databases.
- Ensure your database is configured to allow enough concurrent connections.
Set up a shared database:
- Connect Bamboo to a Microsoft SQL Server database
- Connect Bamboo to a MySQL database
- Connect Bamboo to a PostgreSQL database
For more information, see Connect Bamboo to an external database.
4. Provision your shared file system
You’ll need to create a remote directory that is readable and writable by all nodes in the cluster. There are multiple ways to do this, but the simplest is to use an NFS share.
On your file server, ensure that NFS is configured with enough server processes. For example, some versions of Red Hat Enterprise Linux and CentOS have a default of 8 server processes. If you use either distribution, you may need to edit your /etc/sysconfig/nfs
file, increase the value of RPCNFSDCOUNT
, and restart the nfs
service.
5. Create the local and shared home directories
Bamboo node should have access to 2 folders it uses for files storage: local and shared.
The shared folder is shared between all cluster nodes and used to keep artifacts and other build results. The local home is used to keep node-specific files. The local home should not be accessible by other nodes.
Specify your Bamboo home directories before you run Bamboo for the first time.
Create your Bamboo home directories (without spaces in the name).
You should not create your Bamboo home directory inside the Bamboo installation directory
— they should be entirely separate locations. If you do put the home directory in the Bamboo installation directory,
it will be overwritten, and lost, when Bamboo is upgraded.
6. Configure file share mount
On each cluster node, mount the shared home directory as ${BAMBOO_HOME}/shared
. Note that only the ${BAMBOO_HOME}/shared
directory should be shared between cluster nodes. All other directories, including ${BAMBOO_HOME}
should be node-local (that is, private to each node).
You can configure a custom location for you home shared folder. Also, when using multiple nodes, you must define a path to a shared home location. See Configuring shared home location.
7. Synchronize system clocks
Ensure all your cluster nodes have synchronized clocks and identical timezone configuration. Here are some examples for how to do this:
8. Configure Bamboo home settings
Open <bamboo-installation-directory>/atlassian-bamboo/WEB-INF/classes/bamboo-init.properties.
Uncomment the following lines:
bamboo.home
bamboo.shared.home
Provide the absolute path to the ${BAMBOO_HOME}
and ${BAMBOO_SHARED_HOME}
directories. For example:
bamboo.home=/var/bamboo/bamboo-home
bamboo.shared.home=bamboo-san:/bamboo-shared
9. Start the first cluster node installation
Start Bamboo instance and provide your Bamboo Data Center license. If you need a Bamboo Data Center license, you can purchase one that fits your needs, or, get an evaluation license. Then provide the necessary DB connection settings and admin user credentials.
Install and configure your load balancer
Step 1. Configure protocols and health checks on your load balancer
Your load balancer must proxy the following protocols:
Protocol | Typical port on the load balancer | Default port on the Bamboo cluster nodes | Notes |
---|---|---|---|
HTTP | 80 | 8085 | HTTP mode. Session affinity ("sticky sessions") should be enabled using the 52-character BAMBOOSESSIONID cookies. |
HTTPS | 443 | 8085 | HTTP mode. Terminating SSL at the load balancer and running plain HTTP to the Bamboo cluster nodes is highly recommended. |
TCP | 54663 | 54663 | TCP mode. For remote agents JMS connection. To prevent communication failure, the Load Balancer should be configured to SSL Passthrough the request from the remote agents to Bamboo. |
Your load balancer must support session affinity ("sticky sessions") using the BAMBOOSESSIONID
cookie. Bamboo Data Center assumes that your load balancer always directs each user's requests to the same cluster node. If it does not, users may be unexpectedly logged out or lose other information that may be stored in their HTTP session.
When choosing a load balancer, it must support the HTTP, HTTPS, and TCP protocols. Note that:
Apache does not support TCP mode load balancing.
HAProxy versions older than 1.5.0 do not support HTTPS.
Your load balancer must support cluster node health checks. Configure it to perform a periodic HTTP GET of http://<bamboo-url>:8085/rest/api/latest/status
, where <BAMBOO_URL>
is the cluster node's name or IP address. This returns one of three HTTP status codes:
200 OK
503 Service Unavailable
500 Internal Server Error
If a cluster node does return 200 OK within a reasonable amount of time, the load balancer should direct traffic to it.
You should then be able to navigate to http://<load-balancer-url>/
, where <load-balancer-url>
is your load balancer's name or IP address. This will take you to your Bamboo front page.
If you don't have a particular preference or policy for load balancers, you can use HAProxy, which is a popular open-source load balancer. For more information, go to Configuring the HAProxy load balancer.
2. Configure Bamboo proxy settings
You must include these details in the Connector
tag in every node of <bamboo-installation-folder>/conf/server.xml:
<Connector
...
proxyName="<INSERT THE LOAD BALANCER URL>"
proxyPort="80"
scheme="http"
>
...
</Connector>
3. Modify the hostname in the cluster-node.properties file
Navigate to the node's local home directory and open the
cluster-node.properties
file in a text editor.Set the
node.hostname
property to the hostname or IP address of the node so that it is reachable from the other nodes you will create later, but isn't reachable from the outside world.Optionally, modify the
node.internal.communication.port
property to change the port that the gRPC server used for internal communication. This port has to be reachable from other Bamboo nodes.
4. Change base-url and client-broker-url
- In the upper-right corner of the screen, selectAdministration> Overview.
- Under General configuration, set the base URL and broker client URL.
5. Add a new Bamboo application node to the cluster
On the second node, create an empty Bamboo home directory and mount it in the same location as the Bamboo home directory on the first node.
Don’t copy the contents of the Bamboo home directory from the first node to the second node. Bamboo will automatically populate its home directory on first startup
- Copy the whole Bamboo installation directory from the first node to the same location on the second node.
- Copy the
bamboo.cfg.xml
file from the root of the Bamboo local home directory on the first node to the same location on the second node. In the same directory, create a
cluster-node.properties
and add to it anode.hostname
property set to the node's hostname or IP address reachable from other nodes.Optionally, to change the default node communication port (9090), set it as the value for the
node.internal.communication.port
property. This port needs to be reachable from other nodes, but it doesn’t need to be reachable from the outside world.- If you want the underlying gRPC communication to use a proxy, set the
bamboo.enable.grpc.via.proxy
property totrue
and remove any references to your Bamboo nodes from thehttp.nonProxyHosts
property. By default, gRPC communication isn't proxied. Start Bamboo on the second node.
Check the logs to verify that the instance on the second node was able to connect to the database, and create the local home folders.
6. Connect the new Bamboo cluster node to the load balancer
If you're using your own hardware or software load balancer, consult your vendor's documentation on how to add the new Bamboo cluster node to the load balancer.
If you're using HAProxy, see Configuring the HAProxy load balancer.
Congratulations!
That's it! Bamboo Data Center is accessible under the following URL: http://<load-balancer-url>:<port>