Technical Details
Technical Details
A Carbonio Infrastructure is composed by multiple functions split on multiple Virtual Machines for
security, redundancy and to easily scale horizontally.
To operate properly, a multi-server Carbonio infrastructure requires different services like: Directory
Server, Consul Service Discover, Apache Kafka, Postgres SQL.
Those services are grouped on three or more VMs called “Cluster Services”.
Balancers are required in front of services that should be always on, the balancer is not a part of
Carbonio, an Opensource or commercial balancer can be used, it must support per port TCP balancing.
Most of the internal services runs in a service mesh mode, Carbonio Mesh manages security and
provides fault-tolerant routing between nodes of a Multi-Server installation.
The HA feature requires a shared Object Storage to be connected to Application Servers, Carbonio
supports: OpenIO, S3, Swift, Scality, Ceph, Alibaba.
A Carbonio infrastructure includes Prometheus, an open-source software used for the monitoring of
computer systems. It collects data over time (time series) from multiple sources that allow to
understand when and why to scale services adding or even removing VMs or changing their hardware
specs.
Sizing
This paragraph is dedicated to the estimated hardware requirements to implement a Carbonio
infrastructure.
All sizes are expresses in GB and calculated to full quota usage, if an external Email Security solution is
used size and numbers of MTA servers could change.
Detail for VMs:
• Ubuntu 22.04 without snap and auto updates disabled
• A static IP address or reservation on dhcp
• Fully Qualified Domain Name (FQDN) configured in the hosts file
• FQDN resolved by a dns server
• Free access to Internet to http/https ports
• No firewall enabled
• Primary volume mounted on /opt/zextras for Mail & Calendar Services
• Volume mounted on / expanded to the size indicated in the Primary Storage volume in the
following table for Cluster Service and Video Server VMs
Please note:
• Carbonio allows to define backup feature per user, the space required for backups could be
lower than the one specified in the tables above because it depends on the number of account
the feature is enabled on.
• The number of VMs could change after deep analysis on infrastructure, usage and mail flows.
• There is no redundancy for Carbonio roles
For realiability it’s suggested to implement redudancy for Carbonio components, roles and VMs can be
installed later without service downtime.
The estimated resources for a redudant Infrastructure are reported in the following table.
Scaling
The number of accounts is a base parameter to estimate the resources required by a Carbonio
infrastructure but they also depends on the usage like the number active connections or the protocol
used. For example we can consider that a single account can connect from multiple devices or can use
different protocols or features.
The numbers presented above are based on statistics collected from test and production environments
but they are not absolute. The monitoring system included with Carbonio and based on Prometheus
helps admins to understand when and what kind of resources to add (New VMs or simply RAM).
A Carbonio infrastructure can be scaled:
• Vertically, by increasing CPU cores, memory (RAM), or storage capacity.
• Horizontally, by creating additional VMs with the same role or split services running on the
same VM to multiple ones.
The following table shows an estimated sizing with the only difference of the number of accounts used
(moved to 25000 accounts).
The process to scale can be gradual per the needs of the infrastructu