Virtual Machines / LXC Containers
Below are virtual machines we need to configure for use:
Development / Main
- Grafana (Visualization)
- PostGres (General Database)
- Tailscale
- HAProxy
Staging / Production
- Redis (Caching)
- NATS (Message Queuing)
- QuestDb (Timeseries Database)
- K3S Server (Kubernetes Server) Proper configuration depends on your hardware and distribution needs
Now you may decide to use different databases and all have their pros and cons. The one you should mostly be aware of is the timeseries databases because each act differently but options include:
- InfluxDb
- TimescaleDb
- QuestDb (We highly recommend QuestDb as they have great support and our platforms are built on this database)
For message queuing, you also have options which may either include using the Redis built in Pub/Sub system or something like Apache Kafka. We recommend NATS because it's fast, efficient, and uses low resources.
Configuration
Requirements will change over time, as you grow, the specs on each virtual machine will change so don't get stuck on getting it right the first time. Again, we like LXC containers because we can scale those resources very easily.
Redis
- 2 virtual cores
- 16 GB of RAM
- 16 GB of disk space
Grafana
- 2 virtual cores
- 2 GB of RAM
- 16 GB of disk space
NATS
- 2 virtual cores
- 2 GB of RAM
- 16 GB of disk space
PostGres
- 4 virtual cores
- 4 GB of RAM
- 128 GB of disk space
QuestDb
- 8 virtual cores
- 16 GB of RAM
- 256 GB of disk space
K3S Server
- 16 virtual cores
- 32 GB of RAM
- 64 GB of disk space
Reserved IP Addresses
It is very important that for each virtual machine, you configure a reserved IP address for each machine. This will ensure no virtual machine IP address conflicts and it will make it easier to find each machine when necessary.