Hello,
I'm wondering where to learn more about how to autocale a cloudfoundry deployment using bosh ?
The use-case would be a customer deciding to perform a load test campaign on a private cloudfoundry instance, and suddenly request a large number of app instances, and service instances, for a short duration. As a SRE for this Cf private instance, I would like to avoid having to oversize my vm pools for such events.
I understand the way to scale a bosh deployment, is to modify the deployment manifest to increase the size of pools, and instances of jobs. In the case of of a cloud foundry release, additional dea or services jobs (mysql, pgresql) would automatically register with the nats bus and be ready to serve traffic.
While this CF
bosh deployment scaling can be automated (running bosh unattended deployments), scale up would need to trigger when the CF resources are close to limits and
act on it. Similar for scale down.
Is there any publicly available feature for this ?
Seems
related with the high water/low water marks produced by each service and sent by
the collector to the TSDB server, which would in turn have some alerting threshold
on those water mark metrics, and act on the bosh deployment: identify the matching job in the bosh deployment and increase the instance count.
For the
scale down, I guess the dea and services also need to be consolidated to avoid
fragmentation. I recall one can send a sighup to ask a mysql instance or a dea
to shutdown, and migrate its data to another. I guess that when need to perform
a scale down, one would first sighup services/dea instances that have no or few
usage using the watermark metrics sent to the TSDB server.
Any experience with this cf autoscaling which can be shared?
Thanks in advance,
Guillaume.
You are basically asking for this feature:
- Periodically collect the capacity metrics of DEA's / Stagers
- When you feel you need more headroom, add more DEA's in your deployment manifest and "bosh deploy".
- When you feel the load is too load, reduce number of DEA's and re-deploy.
Don't you need to request a couple of reserved instances in AWS before you can actually execute step #2?Jesse
On Fri, Jul 27, 2012 at 10:58 AM, Guillaume Berche wrote:
Thanks Vadim for your sharing of your current capacity planning and manual scaling on CF.com and the dynamic pool feature that was considered.Not sure to understand: there are indeed real resources provisionned and they are no infinite, however one would keep ability to not permanently allocate all available resources to CF if not needed. Autoscaling a CF deployment on AWS would make both economical and environmental sense if there is sufficiently workload variations.
> at the end of the day there are real resources and/or account limits, whether it's on AWS or on a private cloud.
Even in the case of a private vSphere set up dedicated to a CF deployment, I suspect DPM would more efficiency manage the power usage of the ESXi hosts if extra VMs are not started than being allowed to idle CF jobs, hence reducing OPEX costs which I understand become significant in large setups.
Guillaume.
On Fri, Jul 27, 2012 at 2:27 AM, Vadim Spivak wrote:
We do capacity planning which involves manual scaling since at the end of the day there are real resources and/or account limits, whether it's on AWS or on a private cloud.Having said that, you could automate bosh deployments based on some metrics. We have considered implementing dynamic pools, but so far that discussion has been deprioritized in favor of improving the existing experience and stability the current features for vSphere, AWS, and OpenStack.-Vadim
To unsubscribe from this group and stop receiving emails from it, send an email to vcap-dev+u...@cloudfoundry.org.
To unsubscribe from this group and stop receiving emails from it, send an email to vcap-dev+u...@cloudfoundry.org.
Fantastic feature which is essential to operate private CF, thank you very much for sharing this!
From the block diagram I can't understand how director will determine which deployment to use (and which release). Could you please explain how it will work (the sequence diagram will be highly appreciated)?
Thanks,
Dmitry