-
Notifications
You must be signed in to change notification settings - Fork 595
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add docs to achieve 200K scale. #7812
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,64 @@ | ||||||
Scale Mattermost up to 200000 users | ||||||
==================================== | ||||||
|
||||||
.. include:: ../_static/badges/ent-selfhosted.rst | ||||||
:start-after: :nosearch: | ||||||
|
||||||
This page describes the Mattermost reference architecture designed for the load of up to 200000 concurrent users. Unsure which reference architecture to use? See the :doc:`scaling for enterprise </scale/scaling-for-enterprise>` documentation for details. | ||||||
|
||||||
- **High Availability**: Required | ||||||
- **Database Configuration**: writer, multiple readers | ||||||
|
||||||
.. note:: | ||||||
- Usage of CPU, RAM, and storage space can vary significantly based on user behavior. These hardware recommendations are based on traditional deployments and may grow or shrink depending on how active your users are. | ||||||
- From Mattermost v10.4, Mattermost Enterprise customers can configure `Redis <https://redis.io/>`_ (Remote Dictionary Server) as an alternative cache backend. Using Redis can help ensure that Mattermost remains performant and efficient, even under heavy usage. See the :ref:`Redis cache backend <configure/environment-configuration-settings:redis cache backend>` configuration settings documentation for details. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we need the Remote Dictionary Server parenthesis?
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't know, this was already there. Will defer to Carrie. |
||||||
- While the following Elasticsearch specifications may be more than sufficient for some use cases, we have not extensively tested configurations with lower resource allocations for this user scale. If cost optimization is a priority, admins may choose to experiment with smaller configurations, but we recommend starting with the tested specifications to ensure system stability and performance. Keep in mind that under-provisioning can lead to degraded user experience and additional troubleshooting effort. | ||||||
|
||||||
Requirements | ||||||
------------ | ||||||
|
||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
| **Resource Type** | **Nodes** | **vCPU/ | **AWS Instance** | | ||||||
| | | Memory (GiB)** | | | ||||||
+========================+===========+================+=======================+ | ||||||
| Mattermost Application | 14 | 16/32 | c7i.4xlarge | | ||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
| RDS Writer | 1 | 16/128 | db.r7g.4xlarge | | ||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
| RDS Reader | 6 | 16/128 | db.r7g.4xlarge | | ||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
| Elasticsearch cluster | 4 | 8/64 | r6g.2xlarge.search | | ||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
| Proxy | 4 | 32/128 | m6in.8xlarge | | ||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
| Redis | 1 | 8/32 | cache.m7g.2xlarge | | ||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
|
||||||
Lifetime storage | ||||||
---------------- | ||||||
|
||||||
.. include:: ../scale/lifetime-storage.rst | ||||||
:start-after: :nosearch: | ||||||
|
||||||
Estimated storage per user, per month | ||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||||
|
||||||
.. include:: ../scale/estimated-storage-per-user-per-month.rst | ||||||
:start-after: :nosearch: | ||||||
|
||||||
Example | ||||||
~~~~~~~ | ||||||
|
||||||
A 100000-person team with medium usage (with a safety factor of 2x) would require between 10.56TB :sup:`1` and 52.8TB :sup:`2` of free space per annum. | ||||||
|
||||||
:sup:`1` 100000 users * 5 MB * 12 months * 2x safety factor | ||||||
|
||||||
:sup:`2` 100000 users * 25 MB * 12 months * 2x safety factor | ||||||
|
||||||
We strongly recommend that you review storage utilization at least quarterly to ensure adequate free space is available. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should this example be updated to 200k? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes please: the 100K inline references and the final calculation of free space There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Will do |
||||||
|
||||||
Additional considerations | ||||||
------------------------- | ||||||
|
||||||
.. include:: ../scale/additional-ha-considerations.rst | ||||||
:start-after: :nosearch: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we want to add here that 200k concurrent users translates to approximately 500k supported users, depending on expected usage?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMO we should retire that heuristic. The ratio of concurrent:total varies highly from customer to customer. It is clearer to simply focus on concurrent users.