Specifying the hardware for each component
Once we have an understanding of the need to separate the different Zabbix components in different hardware, we need to list what specifications are needed for each piece of hardware.
To make this decision, we must know the behavior of each component. Consider the following:
Zabbix server
This basically receives all of the environment data and forwards it to the Zabbix database.
It doesn't supply the data immediately. It keeps it in the Caches history and delivers it later with DBSyncers.
This has large amount of network connections because of the data gathering.
It performs many mathematical calculations involving, mainly, triggers.
It has very low disk usage.
Zabbix GUI
This basically displays, the data in the Zabbix database to users
It has reasonable disk usage (this can still keep the GUI files in a memory area)
Zabbix database
This basically receives data from the Zabbix server
It delivers data to the Zabbix GUI
It needs a lot of memory to cache/buffer...