It would be nice to have some documentation for the new cluster configuration. In particular, I am interested in D11475.
Description
Status | Assigned | Task | ||
---|---|---|---|---|
Resolved | epriestley | T10751 Make Phabricator Highly Available | ||
Resolved | epriestley | T7024 Document cluster configuration |
Event Timeline
Short version, if you want to play with it locally:
- Configure cluster.addresses (probably as ["127.0.0.1/32"]).
- Create an Almanac device for your laptop/dev server like mylaptop.epriestley.com.
- Generate a keypair and use bin/almanac register to register and trust the device (bin/almanac register --device mylaptop.epriestley.com).
- Create an Almanac network (epriestley.com).
- 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 "repo001.epriestley.com".
- 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.
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.