Bitbucket Data Center requirements
This page describes the requirements for running a production instance of Bitbucket Data Center. If you're ready to get started installing Bitbucket Data Center, see Install Bitbucket Data Center for detailed instructions.
A Bitbucket Data Center instance consists of a cluster of components, each on a dedicated machine, and connected over a high-speed LAN connection. This diagram depicts a typical Bitbucket Data Center instance with a load balancer, three application nodes, three Mesh nodes, and a shared search server with a single node.
Each component has specific requirements, but only the load balancer needs to have a publicly accessible URL. The URL of the Bitbucket Data Center instance will be the URL of the load balancer, so this is the machine that you will need to assign the name of your Bitbucket Server instance in the DNS.
The remaining machines (Bitbucket cluster nodes, shared database, shared file system, and shared search server) do not need to be publicly accessible to your users.
Bitbucket application nodes
The Bitbucket cluster nodes all run the Bitbucket Data Center web application.
- Each Bitbucket cluster node must be a dedicated machine.
- The machines may be physical or virtual.
- The cluster nodes must be connected in a high speed LAN (that is, high bandwidth and low latency).
- The usual Bitbucket Server supported platforms requirements, including those for Java and Git, apply to each cluster node.
- The cluster nodes do not all need to be absolutely identical, but for consistent performance we recommend they should be as similar as possible.
- All cluster nodes must run the same version of Bitbucket Data Center.
- All cluster nodes must have synchronized clocks (for example, using NTP) and be configured with the identical timezone.
- Ensure that only permit cluster nodes are allowed to connect to a Bitbucket cluster node's Hazelcast port, which by default is port 5701, through the use of a firewall and/or network segregation.
You can use the load balancer of your choice. Bitbucket Data Center does not bundle a load balancer.
- Your load balancer should run on a dedicated machine.
- Your load balancer must have a high-speed LAN connection to the Bitbucket cluster nodes (that is, high bandwidth and low latency).
- Your load balancer must support both HTTP mode (for web traffic) and TCP mode (for SSH traffic).
- Terminating SSL (HTTPS) at your load balancer and running plain HTTP from the load balancer to Bitbucket Server is highly recommended for performance.
- Your load balancer should support "session affinity" (also known as "sticky sessions").
- If you don't have a preference for your load balancer, we provide instructions for
haproxy, a popular Open Source software load balancer.
You must run Bitbucket Data Center on an external database. You can not use Bitbucket Server's internal HSQL or H2 database with Bitbucket Data Center.
- The shared database must run on a dedicated machine.
- The shared database must be available to all cluster nodes via a high-speed LAN (it must be in the same physical data center).
- All the usual database vendors in Bitbucket Server's supported platforms are supported by Bitbucket Data Center, with one exception: we do not recommend MySQL at this time due to inherent deadlocks that can occur in this database engine at high load.
Shared file system
Bitbucket Data Center requires a high performance shared file system such as a SAN, NAS, RAID server, or high-performance file server optimized for I/O.
- The shared file system must run on a dedicated machine.
- The file system must be available to all cluster nodes via a high-speed LAN (it must be in the same physical data center).
- The shared file system should be accessible via NFS as a single mount point.
|Stored on the shared file system||Stored locally on each application node|
For more information on setting up Bitbucket Data Center's shared file server, see Step 2. Provision your shared file system (in Install Bitbucket Data Center). This section contains the requirements and recommendations for setting up NFS for Bitbucket Data Center.
- Consider allocating at least 4 CPUs or vCPUs
- Mesh scales many of its limits based on the number of CPUs available
- Many aspects of Mesh are heavily threaded, as are some parts of Git’s processing
- Allocate at least 8GB of RAM, and ideally, more
- The more repository data can be kept in the page cache, the faster all operations will be
- The fastest Solid State Drives (SSD) are still nowhere near as fast as main memory
- At a minimum, the system should have 2GB of RAM baseline, for the Java virtual machine (JVM), plus an additional GB for each CPU
- For example, for a 4 CPU setup, this means it should have at least 6GB of RAM
- Use a filesystem that works well with large numbers of small files
- XFS, for example, is likely to be a better choice than EXT4
- Consider the number of available inodes, not just the available disk space, because garbage collection (GC) can write a lot of loose objects
- Use the fastest storage available if possible, and focus on things like random read and write performance
- Use 10GbE (or better if you can) for the network between Bitbucket Data Center and Mesh nodes (and between Mesh nodes)
- If possible, putting the Mesh nodes connectivity on a separate backplane network from the interfaces user requests are serviced on by Bitbucket Data Center nodes can help ensure traffic on either side of the Bitbucket nodes doesn’t starve out the other side (for example, that heavy user traffic doesn’t interfere with Mesh traffic, or vice versa)
Bitbucket Mesh is designed for horizontal scaling; however, you should not underestimate the value of vertical scaling. A smaller number of well-provisioned Bitbucket Mesh nodes will likely outperform a larger number of Mesh nodes with smaller resources.
Shared search server
You must run Bitbucket Data Center with a remote search server. You can not use the search server bundled with Bitbucket Server (which is not installed for Bitbucket Data Center).
For details on supported search server versions, see the Supported platforms page.
Bitbucket Data Center can have only one remote connection to the shared search server for your cluster.
This may be a standalone search server installation or a clustered installation behind a load balancer.
Get started with Bitbucket Data Center
See Install Bitbucket Data Center for detailed information about setting up Bitbucket Data Center.
The Bitbucket Data Center FAQ answers the questions you might have when starting with Bitbucket Data Center.