{"id":10492,"date":"2010-03-05T22:07:49","date_gmt":"2010-03-05T22:07:49","guid":{"rendered":"https:\/\/aidanfinn.com\/?p=10492"},"modified":"2010-03-05T22:07:49","modified_gmt":"2010-03-05T22:07:49","slug":"elastic-virtualisation-with-system-center","status":"publish","type":"post","link":"https:\/\/aidanfinn.com\/?p=10492","title":{"rendered":"Elastic Virtualisation With System Center"},"content":{"rendered":"<p>Today I was working with a customer who needed to grow their hosted presence with us due to performance and scaling requirements.&#160; OpsMgr ProTips alerts made us aware of certain things that got the customer and us working.&#160; A VMM library template machine was quickly deployed to meet the sudden requirements.&#160; That got me thinking about how OpsMgr and VMM could be used in a large virtualised (and even physical) application environment to scale out and in as required.&#160; All of this is just ideas.&#160; I\u2019m sure it\u2019s possible, I just haven\u2019t taken things to this extreme.<\/p>\n<p><a href=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2010\/03\/image.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2010\/03\/image_thumb.png\" width=\"554\" height=\"378\" \/><\/a> <\/p>\n<p>Let\u2019s take the above crude example.&#160; There are a number of web servers.&#160; They\u2019re all set up as dumb appliances with no content.&#160; All the content and web configurations are on a pair of fault tolerance content servers.&#160; The web servers are load balanced, maybe using appliances or maybe by reverse proxies.&#160; It\u2019s possible to quickly deploy these web servers from VM templates.&#160; That\u2019s because the deployed machines all have DHCP addresses and they store no content or website configuration data.<\/p>\n<p>The next tier in the application is typically the application server.&#160; This design is also built to be able to scale out or in.&#160; There is a transaction queuing server.&#160; It receives a job and then dispatches that job to some processing servers.&#160; These transaction servers are all pretty dumb.&#160; They have an application and know to receive workloads from the queuing server.&#160; Again, they\u2019re built from an image and have DHCP addresses.<\/p>\n<p>All VM templates are stored in the VMM library.<\/p>\n<p>All of this is monitored using Operations Manager.&#160; Custom management packs have been written and distributed application monitoring is configured.&#160; For example, average CPU and memory utilisation is&#160; monitored across the web farm.&#160; An alert will be triggered if this gets too high.&#160; A low water mark is also configured to detect when demand is low.<\/p>\n<p>The web site is monitored using a captured web\/user perspective transaction.&#160; Response times are monitored and this causes alerts if they exceed pre-agreed thresholds.&#160; <\/p>\n<p>The Queuing server\u2019s queue is also monitored.&#160; It should never exceed a certain level, i.e. there is more work than there are transaction servers to process it.&#160; A low water mark is also configured, e.g. there is less work than there are transaction servers.<\/p>\n<p>So now OpsMgr knows when we have more work than resources, and when we have more resources than we have work for.&#160; This means we only need a mechanism to add VM\u2019s when required and to remove VM\u2019s when required.&#160; And don\u2019t forget those hosts!&#160; You\u2019ll need to be able to deploy hosts.&#160; I\u2019ll come back to that one later.<\/p>\n<p>Deploying VM\u2019s can be automated.&#160; We know that we can save a PowerShell job into the library when we create a VM, etc.&#160; Do that and you have your VM.&#160; You can even use the GUIRunOnce option to append customisation scripts, e.g. naming of servers, installation of updates\/software, etc.&#160; Now you just need a trigger.&#160; We have one.<\/p>\n<p>When OpsMgr fires an alert it is possible to associate a recovery task with the alert.&#160; For example, the average CPU\/Memory across the web farm is too high.&#160; Or maybe the response time across the farm is too slow.&#160; Simple \u2013 the associated response is to run a PowerShell script to deploy a new web server.&#160; 10 minutes later and the web server is operational.&#160; We already know it\u2019s set to use DHCP so that\u2019s networking sorted.&#160; The configuration and the web content are stored off of the web server so that\u2019s that sorted.&#160; The load balancing needs to be updated \u2013 I\u2019d guess some amendment to the end of the PowerShell script could take care of that.<\/p>\n<p>The same goes for the queuing server.&#160; Once the workloads exceed the processing power a new VM can be deployed within a few minutes and start taking on tasks.&#160; They\u2019re just dumb VM\u2019s.&#160; Again, the script would need to authorise the VM with the queuing process.<\/p>\n<p>That\u2019s the high water mark.&#160; We know every business has highs and lows.&#160; Do we want to waste Hyper-V host resources on idle VM\u2019s?&#160; Nope!&#160; So when those low water marks are hit we need to remove VM\u2019s.&#160; That one\u2019s a little more complex.&#160; The PowerShell script here will probably need to be aware of the right VM to remove.&#160; I\u2019d think about this idea:&#160; The deploy VM\u2019s would update a file or a database table somewhere.&#160; Thing of it like a buffer.&#160; The oldest VM&#8217; should then be the first one removed.&#160; Why?&#160; Because we Windows admins prefer newly built machines \u2013 they tend to be less faulty than ones that have been around a while.<\/p>\n<p>With all that in place you can deploy VM\u2019s to meet demands and remove VM\u2019s when they are redundant to free up physical resources for other applications.<\/p>\n<p>What about when you run out of Hyper-V server resources?&#160; There most basic thing you need to do here is know that you need to buy hardware.&#160; Few of us have it sitting around and we run on budgets and on JIT (just in time) principles.&#160; Again, you\u2019d need to do some clever management pack authoring (way beyond me to be honest) to detect how full your Hyper-V cluster was.&#160; When you get to a trigger point, e.g. starting&#160; to work on your second last host, you get an alert.&#160; The resolution is buy a server and rack it.&#160; You can then use whatever build mechanism you want to deploy the host.&#160; The next bit might be an option if you do have servers sitting around and can trigger it using Wake-On-Lan.<\/p>\n<p>ConfigMgr will run a job to deploy an operating system to the idle server.&#160; It\u2019s just a plain Windows Server installation image.&#160; Thanks to task sequences and some basic Server Manager PowerShell cmdlets, you can install the Hyper-V role and the Failover Clustering feature after the image deployment.&#160; A few reboots happen.&#160; You can then add it to the Hyper-V cluster.&#160; You can approach this one from other angles, e.g. add the host into VMM which triggers a Hyper-V installation.<\/p>\n<p>Now that is optimisation and dynamic IT!&#160; All that\u2019s left is for the robots to rise \u2013 there\u2019s barely a human to be seen in the process once its all implemented.&#160; I guess your role would be to work on the next generation of betas and release candidates so you can upgrade all of this when the time comes.<\/p>\n<p>I\u2019ve not read much about <a href=\"http:\/\/www.microsoft.com\/pathways\/opalis\/\" target=\"_blank\">Opalis<\/a> (recently aquired by Microsoft) but I reckon it could play a big role in this sort of deployment.&#160; Microsoft customers who are using <a href=\"http:\/\/systemcentercentral.com\/BlogDetails\/tabid\/143\/IndexID\/60435\/Default.aspx\" target=\"_blank\">System Management Suite CAL\u2019s (SMSE\/SMSD) will be able to use Opalis<\/a>.&#160; Integration packs for the other System Center products are on the way in Q3.<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:0767317B-992E-4b12-91E0-4F059A8CECA8:68a8ae5f-17f2-49dc-a7bb-bb7e69957cbb\" class=\"wlWriterEditableSmartContent\">Technorati Tags: <a href=\"http:\/\/technorati.com\/tags\/Hyper-V\" rel=\"tag\">Hyper-V<\/a>,<a href=\"http:\/\/technorati.com\/tags\/VMM\" rel=\"tag\">VMM<\/a>,<a href=\"http:\/\/technorati.com\/tags\/Operations+Manager\" rel=\"tag\">Operations Manager<\/a>,<a href=\"http:\/\/technorati.com\/tags\/ConfigMgr\" rel=\"tag\">ConfigMgr<\/a>,<a href=\"http:\/\/technorati.com\/tags\/Windows+Server+2008+R2\" rel=\"tag\">Windows Server 2008 R2<\/a>,<a href=\"http:\/\/technorati.com\/tags\/Virtualisation\" rel=\"tag\">Virtualisation<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Today I was working with a customer who needed to grow their hosted presence with us due to performance and scaling requirements.&#160; OpsMgr ProTips alerts made us aware of certain things that got the customer and us working.&#160; A VMM library template machine was quickly deployed to meet the sudden requirements.&#160; That got me thinking &hellip; <a href=\"https:\/\/aidanfinn.com\/?p=10492\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Elastic Virtualisation With System Center&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[20],"tags":[173,181,83,195,196,117],"class_list":["post-10492","post","type-post","status-publish","format-standard","hentry","category-hyper-v","tag-configmgr","tag-hyper-v","tag-operations-manager","tag-virtualisation","tag-vmm","tag-windows-server-2008-r2"],"aioseo_notices":[],"jetpack_featured_media_url":"","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/10492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10492"}],"version-history":[{"count":0,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/10492\/revisions"}],"wp:attachment":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}