Architecture of Pyrus Datacenter
Pyrus Datacenter supports running on a single host or as a high availability cluster.
High availability cluster
Pyrus can run in a cluster with multiple nodes and load balancers. This is suitable for organizations that require high availability and scalability.
The typical architecture of a high availability cluster is shown below:
The cluster solution has the following advantages:
High availability and automatic failover: If one of the nodes in your application fails, other cluster nodes take over the load, ensuring app availability is not interrupted;
Horizontal scaling: As the system grows, each new node increases the number of concurrent users and reduces response time. You can also deploy nodes dedicated to specific functions.
To learn more about installing Pyrus Datacenter in high availability mode, visit the Pyrus Datacenter K8S repository page.
Launching on a single host
Pyrus on a single host is suitable if you:
- are deploying a pilot for your first 200-300 users;
- allow for a complete system maintenance shutdown.
The image below shows the architecture of Pyrus running on a single host:
The following set of docker containers is launched on the server.
web-api | Main service, processes user requests and API calls. |
files | Service for saving/downloading files. |
bind | Service for sending events to users' web browsers. |
identity-server | Identification service. |
mail-sender | Service for sending emails through the client's SMTP server. |
mail-reader | Service for reading emails from mail integrations. |
notification-service | Service for sending push notifications to mobile devices through pyrus.com. |
async-worker | Service for processing asynchronous tasks. |
scheduler | Service for executing regular tasks. |
preview-generator | Service for generating file previews. |
postgresql | Postgres database, main data storage. Uses volume for data storage on disk. Authorization occurs through the Docker internal network via login/password. |
elasticsearch | Elasticsearch search system, used for full-text search. Uses volume for data storage on disk. Authorization occurs through the Docker internal network via login/password. |
nats | Message exchange bus between services. Authorization occurs through the Docker internal network via login/password. |
nginx | Web server, terminates SSL connection and routes requests. |
logs | Postgres database, log storage. Uses volume for data storage on disk. Authorization occurs through the Docker internal network via login/password. |