Add 2k chart example for the hybrid reference architecture
What does this MR do?
The MR adds a new 2k hybrid environment based on the performance testing in gitlab-org/quality/reference-architectures#20 (comment 635661330).
In comparison with 3k and other HA envs, 2k uses Gitaly Sharded and has a single Redis node.
Service | Nodes | Configuration | GCP | Allocatable CPUs and Memory |
---|---|---|---|---|
Webservice | 3 | 8 vCPU, 7.2 GB memory | n1-highcpu-8 |
23.7 vCPU, 16.9 Gb |
Sidekiq | 2 | 2 vCPU, 7.5 GB memory | n1-standard-2 |
3.7 vCPU, 11.8 Gb |
Support | 2 | 1 vCPU, 3.75 GB memory | n1-standard-1 |
1.9 vCPU, 5.5 Gb |
Rails:
- Omnibus 2k: 2 Rails nodes * 5 Puma workers = 10
- Hybrid 2k: 3 webservice nodes * 2 pods each * 2 workers = 12
Sidekiq:
- Omnibus 2k: no standalone sidekiq nodes, integrated to Rails nodes
- Hybrid 2k: 2 Sidekiq nodes
n1-standard-2
Hybrid 2k:
- 6 total Webservice pods
- 2 total Sidekiq pods
Considerations:
- From customer point of view, the cost of having 3
n1-highcpu-8
is lower than having 2n1-highcpu-16
. Thus we explored 2 options: Variant 1 - 2k hybrid (3P 4W) - 3 pods * 4 workers and Variant 2 - 2k hybrid (6P 2W) - 6 pods * 2 workers. From performance standpoint the results were similar, thus we recommend var#2. - Sidekiq - with the above recommended configuration each pod will be on a separated VM due to the Sidekiq limitation per pod (0.9 vCPU, 4 Gb). Alternatively we can use a single
n1-standard-4
and have 2 pods on it. However in this case if something goes wrong with this VM, all sidekiq pods will be affected, so I think it may be more robust to have at least 2 VMs to provide higher availability. From GCP pricing standpoint, there is no difference between having 2n1-standard-2
or 1n1-standard-4
as far as I can see.
More detailed calculations are in gitlab-org/quality/reference-architectures#20 (comment 635661330)
Related issues
Checklist
See Definition of done.
For anything in this list which will not be completed, please provide a reason in the MR discussion.
Required
-
Merge Request Title and Description are up to date, accurate, and descriptive -
MR targeting the appropriate branch -
MR has a green pipeline on GitLab.com
Expected (please provide an explanation if not completing)
-
Test plan indicating conditions for success has been posted and passes -
Documentation created/updated -
Tests added -
Integration tests added to GitLab QA -
Equivalent MR/issue for omnibus-gitlab opened
Edited by Nailia Iskhakova