Page MenuHomePhabricator

Document cluster configuration
Closed, ResolvedPublic


It would be nice to have some documentation for the new cluster configuration. In particular, I am interested in D11475.

Event Timeline

joshuaspence raised the priority of this task from to Needs Triage.
joshuaspence updated the task description. (Show Details)
joshuaspence added a subscriber: joshuaspence.

Short version, if you want to play with it locally:

  • Configure cluster.addresses (probably as [""]).
  • Create an Almanac device for your laptop/dev server like
  • Generate a keypair and use bin/almanac register to register and trust the device (bin/almanac register --device
  • Create an Almanac network (
  • Add the Phabricator HTTP port to the device as an interface (i.e., port 80 or 443) on the network.
  • Create an Almanac Service (of type "Repository Cluster"), like "".
  • Add a binding to the service, binding it to the interface you created.

New repositories will now allocate on the repository cluster service. Specifically, create a new repository, or manually set almanacServicePHID in the Repository table to point at your new service. In a local environment, these will differ from normal repositories by proxying all their calls (visible in DarkConsole).

The only cluster configuration we'll support in the short term is "N webservers + 1 repo/daemon host", and that still needs T7019 and companion work on SSH.

You will eventually be able to bind more interfaces to a service to get replicas (one repository on multiple hosts) and add more services to get sharding (multiple service pools). Some features which anticipate these changes work today, but there's significant work remaining and it's not on the pre-launch roadmap at the moment.

chad triaged this task as Wishlist priority.Jan 23 2015, 11:00 PM
eadler added a project: Restricted Project.Apr 10 2016, 6:12 AM
eadler added a subscriber: eadler.
epriestley claimed this task.

This is happening generally as part of T10751. I'm just going to close this out since I don't think it's useful as a separate task.