GithubHelp home page GithubHelp logo

azure-myriad's Introduction

azure-myriad

Templates for Azure Virtual Machine Scale Sets.

Note: For the latest curated templates for VM Scale Sets go here: https://github.com/Azure/azure-quickstart-templates

VM Scale Sets allow you to deploy and manage a group of identical virtual machines as a set. Advantages include:

  • Autoscale - simply change the instance count and Scale Sets will increase or decrease the number of VMs evenly across update and fault domains.
  • Performance - deploying multiple VMs results in a single call to the fabric, allowing inherent performance optimizations.
  • Customization - built on Azure IaaS, Scale Sets support all Windows and Linux VMs including custom images and extensions.
  • Ease of management - building on the simple declarative modelling introduced with Azure Resource Manager, Scale Sets are the simplest way to manage sets of identical VMs. Focus on compute at scale without managing scaling of storage accounts and NICs.

Limitations

Please note the following limitations:

  • For custom images you can only have a single storage account and are hence limited to 20 VMs in a scale set (or 40 if you set the overprovision property to "false". This will be increased in the future.
  • Maximum number of platform image VMs in a scale set is 100. This will be increased in the future.

Working with scale sets using PowerShell

See: Create a Windows Virtual Machine Scale Set using Azure PowerShell, or just install the latest Azure PowerShell and run:

   gcm *vmss*

Scaling out or scaling in

See Change the instance count of an Azure VM Scale Set

Working with scale sets using CLI

tl;dr Install the latest Azure CLI and run:

   azure vmss -h

   azure vmssvm -h

See Create a Linux Virtual Mache Scale Set using Azure CLI

Templates

Note: Some of these are experimental and some are not maintained. The official repository for VM Scale Set example templates is: Azure Quick Start Templates

vmss-ubuntu-vnet-storage.json

Creates a VNET, storage account, and scale set of identical Ubuntu virtual machines. InstanceCount parameter describes the number of VMs.

Note: If you want to connect to your VMs from outside the VNET you'll need to also create a public IP address associated with a load balancer or virtual machine. Hence think of this template as a fragment you can use as part a larger solution rather than a self-contained solution.

vmss-win-vnet-storage.json

Creates a VNET, storage account, and scale set of identical Windows virtual machines. InstanceCount parameter describes the number of VMs.

Note: If you want to connect to your VMs from outside the VNET you'll need to also create a public IP address associated with a load balancer or virtual machine. Hence think of this template as a fragment you can use as part a larger solution rather than a self-contained solution.

vmss-coreos-vnet-storage.json

Creates a VNET, storage account, and scale set of identical CoreOS virtual machines. InstanceCount parameter describes the number of VMs.

Note: If you want to connect to your VMs from outside the VNET you'll need to also create a public IP address associated with a load balancer or virtual machine. Hence think of this template as a fragment you can use as part a larger solution rather than a self-contained solution.

mesos-vmss-simple-cluster.json

Create a simple mesos cluster with a single master, with a VM Scale Set of slaves. Connect to port 5050 of the public IP address created in your resource group to see the dashboard.

vmss-scale-in-or-out.json

Reduce or increase the number of VM instances in a Scale Set. Platform independent. Note: Check the sku setting in the template and make sure it matches the virtual machine size in your existing VM Scale Set. InstanceCount parameter describes the number of VMs.

vmss-win-iis-vnet-storage-lb.json

Create a VMSS with load balancer, public IP and Windows VMs with IIS and a basic MVC app configured\installed via the custom script extension. Port 80 is load balanced to the web app running on each VM Instance.

vmss-linux-customimage.json

Create a VMSS from a custom image.

vmss-minecraft-custom.json

Create a VMSS from a custom Minecraft server image, including a load balancer rule to route incoming Minecraft default TCP port connections to 25565.

autoscale/vmss-win-autoscale.json

Deploy a simple Windows based scale set.

How to use:

  • Deploy with an instance count of 1.
  • RDP into port 50000 and max the CPU.
  • After a few minutes additional VMs will be created.


autoscale/vmss-ubuntu-autoscale.json

Deploy a simple Linux based scale set.

How to use:

  • Deploy with an instance count of 1.
  • SSH into port 50000 and max the CPU.
  • After a few minutes additional VMs will be created.


autoscale/vmss-lap-autoscale.json

Simple self-contained Ubuntu/Apache/PHP autoscale & load balancing example. Scale Set scales up when avg CPU across all VMs > 60%, scales down when avg CPU < 50%.

  • Deploy the scale set with an instance count of 1
  • After it is deployed look at the resource group public IP address resource (in portal or resources explorer). Get the IP or domain name.
  • Browse to the website (port 80), which shows the current backend VM name.
  • Hit the "Do work" button with an iteration count of say 300 (represents seconds of max CPU).
  • After a few minutes the scale set capacity will increase, and refreshing the browser and going to the home page a few times will show additional backend VM name(s).
  • You can increase the work by connecting to more backend websites, or decrease by letting the iterations time-out, in which case the scale set will scale down – hence after about 10 minutes the capacity should be back down to 1.

Autoscale demo app on Ubuntu 15.10

Simple self-contained Ubuntu autoscale example. VM Scale Set scales up when avg CPU across all VMs > 60%, scales down when avg CPU < 30%.

  • Deploy the scale set with an instance count of 1
  • After it is deployed look at the resource group public IP address resource (in portal or resources explorer). Get the IP or domain name.
  • Browse to the website (port 9000), which shows the current backend VM name.
  • To start doing work on the first VM browse to dns:9000/do_work
  • After a few minutes the VM Scale Set capacity will increase.
  • You can stop doing work by browsing to dns:9000/stop_work.

azure-myriad's People

Contributors

alanst avatar borisb2015 avatar cawams avatar gbowerman avatar sbtron avatar simongdavies avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.