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

  1. 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: 

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.

For the file server and cluster nodes, avoid kernel and NFS version combinations that are unstable or have known NFS bugs. We recommend avoiding Linux kernel versions 3.2 to 3.8.

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.

Show me an example...

Suppose your Bamboo home directory is /var/atlassian/application-data/bamboo, and your shared home directory is available as an NFS export called  bamboo-san:/bamboo-shared . To configure the mount on each cluster node:

  1. Add the following line to /etc/fstab on each cluster node.
    /etc/fstab

    bamboo-san:/bamboo-shared /var/atlassian/application-data/bamboo/shared nfs rw,nfsvers=3,lookupcache=pos,noatime,intr,rsize=32768,wsize=32768,_netdev 0 0
  2. Mount the share on each node:

    mkdir -p /var/atlassian/application-data/bamboo/shared
    sudo mount -a

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:

For RedHat Enterprise Linux or CentOS:
sudo yum install ntp
sudo service ntpd start
sudo tzselect
For Ubuntu Linux:
sudo apt-get install ntp
sudo service ntp start
sudo dpkg-reconfigure tzdata

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

  1. Navigate to the node's local home directory and open the cluster-node.properties file in a text editor.

  2. 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.

  3. 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

  1. In the upper-right corner of the screen, select
    Administration bamboo administration icon
    > Overview.
  2. Under General configuration, set the base URL and broker client URL.


5. Add a new Bamboo application node to the cluster

  1. 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

  2. Copy the whole Bamboo installation directory from the first node to the same location on the second node.
  3. 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.
  4. In the same directory, create a cluster-node.properties and add to it a node.hostname property set to the node's hostname or IP address reachable from other nodes.

  5. 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.

  6. If you want the underlying gRPC communication to use a proxy, set the bamboo.enable.grpc.via.proxy property to true and remove any references to your Bamboo nodes from the http.nonProxyHosts property. By default, gRPC communication isn't proxied.
  7. Start Bamboo on the second node.

  8. 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>

  




Last modified on Jan 23, 2024

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.