Hello, I'm working for an MSP, and I am currently ...
# fleet
n
Hello, I'm working for an MSP, and I am currently doing a PoC for FleetDM to manage the computers of SMEs (from 50 to 100 devices per client). Each client would have their dedicated FleetDM instance and to lower costs, I would like to generate and manage the underlying infrastructure on AWS myself. So, I am trying to identify what would be the minimum configuration for this number of devices, based on this documentation. Here are several cost reductions I would like to explore, can you tell me if they are viable: • For the MySQL database, is it necessary to keep the RDS Proxy option? This option seems to be set by default in the AWS price calculator, but I don't see it in the terraform scripts • For Redis and Fargate, if we lower the configuration, should we prioritize the CPU or RAM? • Is there a way to share the load balancer between multiple FleetDM instances? Thank you in advance for your answers
k
@Benjamin Edwards
b
I don't see the RDS proxy option you mentioned in the AWS estimations. I would say unless the scale is massive (hundreds of fleet server instances, RDS proxy isn't necessary) If you are trying to run bare minimum I'd probably go provisioned EC2 in ECS over Fargate (fargate is nice if you aren't super concerned with cost optimization). Using an ASG you could pack way more Fleet instances onto a single EC2 host. Redis you can multi-tenant fleet on a single redis host if you give Fleet a different redis db name (different name per tenant) https://fleetdm.com/docs/deploying/configuration#redis-database MySQL you could multi-tenant fleet on a single mysql host if you provide the db name (different name per tenant) https://fleetdm.com/docs/deploying/configuration#mysql-database WRT Application Load Balancer you could do host based routing rules to the target group (though there are limits on # rules per target group) just some thoughts of the top of my head
if you have vuln processing disabled (or externally managed) the Fleet webserver can easily run with just a few hundred MB of RAM. I'd probably start with 256MB and see how far that goes.
n
Thanks a lot for all these tips!!
Hey Benjamin, I looked at the configuration documentation and I noticed that few services like S3 are mentioned in it. But configuration breakpoints documentation or linked AWS pricing calculator talk only about MySQL, Fargate, Elastic Load Balancing and Amazon ElastiCache (Redis). Do I miss something about Fleet Server infrastructure?
b
I didn’t include prices for auxiliary services as cost really depends on volume/frequency of data transmitted. For example you can use Firehose + S3 for osquery scheduled query results ingestion and storage. Since those services are pay per usage, the cost is really up to you.
You can think of pricing links to be base cost. You can run cheaper or more expensive depending on your tolerance for availability and volume of data.
n
ok, understood. Can you still provide a rough estimation on configuration?
b
Not unless I know much more about your deployment 😅
n
ok
And auxiliary services are all mandatory?
b
Negative. The only hard dependencies of Fleet are MySQL and Redis
n
Does it means even Loadbalancer isn't required?
b
Depends. If you’re running in ECS and intend on scaling more than one backend, you’ll need an ALB.
v
Hey @Benjamin Edwards , I work with Nicolas on this matter, thanks for the valuable info you gave us ! Based on my understanding of AWS (which is not the greatest haha) here is two scenario I imagined, • One with a Load balancer, ASG, and auto scaling (more expensive) • One without ALB, ASG.. (less expensive) I plugged the schematics for the two scenarios, is it possible for you to tell us if they looks plausible / realistic ? Thank you 🙏
b
How does traffic get routed to ECS in scenario 2?
v
Hmmm EC2 gives you a public IP right ? If FleetDm is a webapp can’t we just use the EC2's public ip ? (with a security group allowing fleet’s webapp’s ports) ? If we want to make it human-readable we would have to have an Elastic IP address and associate it with the EC2 instance, then use Route53 I guess ?
b
True, you can. Was just curious