Navigate Up
Sign In

SharePoint on Windows Azure - Part 4: SharePoint Farm

Item is currently unrated. Press SHIFT+ENTER to rate this item.1 star selected. Press SHIFT+ENTER to submit. Press TAB to increase rating. Press SHIFT+ESCAPE to leave rating submit mode.2 stars selected. Press SHIFT+ENTER to submit. Press TAB to increase rating. Press SHIFT+TAB to decrease rating. Press SHIFT+ESCAPE to leave rating submit mode.3 stars selected. Press SHIFT+ENTER to submit. Press TAB to increase rating. Press SHIFT+TAB to decrease rating. Press SHIFT+ESCAPE to leave rating submit mode.4 stars selected. Press SHIFT+ENTER to submit. Press TAB to increase rating. Press SHIFT+TAB to decrease rating. Press SHIFT+ESCAPE to leave rating submit mode.5 stars selected. Press SHIFT+ENTER to submit. Press SHIFT+TAB to decrease rating. Press SHIFT+ESCAPE to leave rating submit mode.

You may also be interested in: Documentation Toolkit for SharePoint


Editor's note: Contributor Wahid Saleemi is is a Senior Consultant with Microsoft Services. Follow him @wahidsaleemi

2013-03-28-SPA-Part04-01.pngLet’s review the previous articles in this series:

Part 1: Introduction – We showed how to set up tools to interact with Windows Azure.
Part 2: Storage – We showed how to setup Windows Azure storage, how to upload vhd’s and some tools to manage storage.
Part 3: Networking – We showed how virtual networking works, the advantages of using Cloud Services and how to setup the first virtual machine.


Continuing on the networking theme, let’s talk about endpoints, load balancing, and probes for a minute since we’ll use this concept a bit later on. When you create a VM, an endpoint is automatically created by default as well. This is what allows you to use RDP (Remote Desktop Protocol) to connect to your VM. Here’s how that looks in the management portal:


Windows Azure assigns a random high port number for the public port that maps to the RDP port (3389). If you’re familiar with NAT (network address translation), this is similar in concept. Note, this one is not load balanced.

So, how do we use this for our SharePoint Web Applications? To get a load balanced port that’s publically accessible, we simply define a local port and public port that’s the same for each VM. For example, we can open port 80 (public) and map it to port 80 (private) for one of our SharePoint Web Servers. If we do this a second time, Windows Azure recognizes that we want this port to be load balanced against all the virtual machines we’ve specified.

On a related topic, probes are used to check the health of a server, especially in a load balanced set. For example, you may have 3 SharePoint Web Servers but one of them is down. The probe can detect this and prevent users from hitting that server. This is also useful in cases where you just don’t want users accessing one of the servers (to apply updates, for example).

Here’s the PowerShell cmdlets we’ll use:

Add-AzureEndpoint -Name 'http' -LBSetName 'lbhttp' -LocalPort 80 -PublicPort 80 ` 
            -Protocol tcp -ProbeProtocol http -ProbePort 80 -ProbePath '/healthcheck/iisstart.htm'

In this example, we’re asking Windows Azure to create an endpoint called “http” on port 80 and target the “iisstart.htm” webpage. For this to work, the machine must have a website at that path that will respond (i.e., it’s started in IIS). If not responding, the probe will fail and users won’t be routed to that machine. For our scenario, we’ll keep the IIS “Default Web Site” to use for probing purposes.

SharePoint Servers

Now, it gets much easier. We’re going to provision the rest of the SharePoint Farm. Once again, let’s do a quick connection test. Open Windows Azure PowerShell and type in the following:

Get-AzureSubscription | Select SubscriptionName, CurrentStorageAccount

Hopefully you can still connect. Next, we’ll assign some values to our account variables as we did before. Remember to use the values you got when you ran the previous command.

# your imported subscription name 
$subscriptionName = "Windows Azure Wahid" 
$storageAccount = "wahidstore" 
Select-AzureSubscription $subscriptionName 
Set-AzureSubscription $subscriptionName -CurrentStorageAccount $storageAccount

Now, we’re going to specify parameters for a new Cloud Service. In my previous example, I used CS-ArchSP2013. For this one, I’m going to call it ArchSharePoint. Use any name that’s available, to test for available names, use Test-AzureName –Service ‘<your chosen name>’

# Cloud Service Paramaters 
$serviceName = " ArchSharePoint" 
$serviceLabel = " ArchSharePoint" 
$serviceDesc = "Cloud Service for SharePoint Farm"

I’ll specify the networking parameters using the same $vnetname, $ag, and $primaryDNS as before but the other $subnetName I created:

# Network Paramaters 
$vnetname = 'vNet-Arch' 
$subnetName = 'SharePoint' 
$ag = 'AG-SharePoint-Arch' 
$primaryDNS = ''

If you’re creating a brand new farm, rather than using uploaded images, specify these two parameters too:

#VM Image names taken from: Get-AzureVMImage | select Label, ImageName | fl
$spimage= 'MSFT__Win2K8R2SP1-120612-1520-121206-01-en-us-30GB.vhd' 
$sqlimage = 'MSFT__Sql-Server-11EVAL-11.0.2215.0-05152012-en-us-30GB.vhd'

Next, we’ll specify a few availability sets. Think of availability sets as a way to configure high availability. We’re telling Windows Azure that VMs in an availability set have the same role. This instructs Windows Azure to put these VMs on different racks and/or different servers to avoid any single points of failure.

# Availability Sets 
$avsetwfe = 'avset-arch-web' 
$avsetapps = 'avset-arch-apps' 
$avsetsql = 'avset-arch-sql'

Specify a location for these VMs. I’ve created a folder under my “vhds” container called “Arch” and I want these VMs to go there. Unless you have a lot of VMs, there’s no reason to create folders.


# MediaLocation 
$mediaLocation = “”

The next thing we’re going to specify is the VM configuration. Since there’s a lot going on in the next set of PowerShell scripts, let me explain. The $size variable is self-explanatory. I’m going to use “Large” which gives me 4 cores and 7 GB of RAM. The recommendation here is to use smaller VM’s that you can scale out (by adding more), rather than Extra Large VMs. You pay for compute hours based on the size, so many times several smaller ones are better than fewer larger ones.

For $vmStorageLocation, we’re going to specify the $mediaLocation above, plus a name for the vhd. If you uploaded VM’s use the name of the vhd you uploaded.

I’m going to skip it below, but you can use the following command to automate joining the domain by piping it after $vmLocaction:

$vmStorageLocation | 
        Add-AzureProvisioningConfig -WindowsDomain -Password $dompwd ` 
            -Domain $domain -DomainUserName $domuser -DomainPassword $dompwd ` 
            -MachineObjectOU $advmou -JoinDomain $joindom

So, let’s define our VM configuration:

## Create SP Web1 
$size = "Large" 
$vmStorageLocation = $mediaLocation + "Arch-SPWeb1.vhd" 
$spweb1 = New-AzureVMConfig -Name 'Arch-SPWeb1' -AvailabilitySetName $avsetwfe ` 
            -DiskName $vmStorageLocation -InstanceSize $size | 
        Add-AzureEndpoint -Name 'https' -LBSetName 'lbhttps' -LocalPort 443 -PublicPort 443 ` 
            -Protocol tcp -ProbeProtocol http -ProbePort 80 -ProbePath '/healthcheck/iisstart.htm' | 
        Set-AzureSubnet $subnetName

  • Note: If you’re creating new VMs, rather than using uploaded VMs, make the following changes.
    Change –DiskName $vmStorageLocation to –ImageName $spimage (or $sqlimage for the SQL servers).
    After –InstanceSize $size, type in –MediaLocation $vmStorageLocation
    After Set-AzureSubnet $subnetName, add the following line:
    Add-AzureProvisioningConfig -Password 'pass@word1' -Windows

We can copy the above set of commands as a template to build out our farm. In my case, I’ve got another SharePoint Web Server, a SharePoint App Server, and an Office Web Apps server.

## Create SP Web2
$size = "Large" 
$vmStorageLocation = $mediaLocation + "Arch-SPWeb2.vhd" 
$spweb2 = New-AzureVMConfig -Name 'Arch-SPWeb2' -AvailabilitySetName $avsetwfe ` 
            -DiskName $vmStorageLocation -InstanceSize $size | 
        Add-AzureEndpoint -Name 'https' -LBSetName 'lbhttps' -LocalPort 443 -PublicPort 443 ` 
            -Protocol tcp -ProbeProtocol http -ProbePort 80 -ProbePath '/healthcheck/iisstart.htm' | 
        Set-AzureSubnet $subnetName
## Create SP App1 
$size = "Large" 
$vmStorageLocation = $mediaLocation + "Arch-SPApp1.vhd" 
$spapp1 = New-AzureVMConfig -Name 'Arch-SPApp1' -AvailabilitySetName $avsetwfe ` 
            -DiskName $vmStorageLocation -InstanceSize $size | 
        Add-AzureEndpoint -Name 'https' -LBSetName 'lbhttps' -LocalPort 443 -PublicPort 443 ` 
            -Protocol tcp -ProbeProtocol http -ProbePort 80 -ProbePath '/healthcheck/iisstart.htm' | 
        Set-AzureSubnet $subnetName
## Create WAC 
$size = "Large" 
$vmStorageLocation = $mediaLocation + "Arch-WAC1.vhd" 
$wac1 = New-AzureVMConfig -Name 'Arch-WAC1' -AvailabilitySetName $avsetwfe ` 
            -DiskName $vmStorageLocation -InstanceSize $size | 
        Add-AzureEndpoint -Name 'https' -LBSetName 'lbhttps' -LocalPort 443 -PublicPort 443 ` 
            -Protocol tcp -ProbeProtocol http -ProbePort 80 -ProbePath '/healthcheck/iisstart.htm' | 
        Set-AzureSubnet $subnetName

Similarly, I’m going to specify the configuration for the SQL Server. There’s not much different here except that I don’t need to create an endpoint. However, I do want to create a data disk.

## Create SQL Server1 
$size = "Large" 
$vmStorageLocation = $mediaLocation + "Arch-SQL1.vhd" 
$spsql1 = New-AzureVMConfig -Name 'Arch-SQL1' -AvailabilitySetName $avsetsql -DiskName $vmStorageLocation -InstanceSize $size | 
        Add-AzureDataDisk -CreateNew -DiskSizeInGB 100 -DiskLabel 'data' -LUN 0 –HostCaching “None” | 
        Set-AzureSubnet $subnetName

Now, DOUBLE-CHECK everything before you move forward. Undoing this configuration can be complicated. We have just created our configurations, nothing has actually happened just yet, that’s what the following commands do:

$dns1 = New-AzureDns -Name 'DNS1' -IPAddress $primaryDNS 
New-AzureVM -ServiceName $serviceName -ServiceLabel $serviceLabel ` 
            -ServiceDescription $serviceDesc ` 
            -AffinityGroup $ag -VNetName $vnetname -DnsSettings $dns1 ` 
            -VMs $spweb1,$spweb2,$spapp1,$wac1, $spsql1

Hit Enter and away it goes. If you run into any problems, I’ll try to cover the ones I’ve encountered in the next article. If everything went smooth, you’ll see something like the screenshot below. This will take a few minutes, sit back and enjoy some coffee or something. In my demo, this was taking a while on the second VM and I really wanted to hit CTRL+C or something, DON’T – just be patient.


Categories: Azure; SharePoint; Management; Cloud


china wholesale

china wholesale

Posted 01-Jul-2013 by china wholesale
Andrew Walman

Smart load balancing for SharePoint

Great article. Further to you load balancing tips, you can also ensure that the probe is checking the SharePoint application pool, which increases the probe's usefulness - I've outline how at

Posted 07-Aug-2013 by Andrew Walman
make money from home


.eJxNyiEOgDAMAMC_4LsZPoBBL0GgCyyjgnZpS0Z4PeBwJ65rrQUW34nLcrrtqLkKsYdVjmjk2SJ5VYkJy-vpC-kLIAwz8SbNYLhPzZBQHXr4lRH1CGj16h4yYCcF.2FIP01B4srai4uBFQMWfyZQHKCg cmjdavwnh5yx, canon 5d history relevant website relevant website uj5df41, sje7fiysoxjbfj3, nikon d7100 uxc8tr6tx8xk3t7t, canon 6d talking to

Posted 26-Dec-2013 by make money from home
gopro hero 3 xp driver


1861 Click On this site m0ntrij, 6041 4029 nikon d800 nikon d3100 nikon d3100 kit my homepage 4790 canon t5i weight describes it canon t3i charger

Posted 26-Dec-2013 by gopro hero 3 xp driver


fyipoglc1evwqwm, nikon d5200 nwxbh1ozjz4opwv, 6413 sony rx100 used sony rx100 3ybiygchl32, canon 60d vs t5i canon 60d sale canon eos 60d 3374 canon sl1 k3mvdxerxjnw7jy, 515 canon eos rebel t3i nikon d7000 timer nikon d7000 tips.

canon 70d


2406 please click the next site fkpelrrwyjr7, navigate to this site saobrb254y, canon eos 7d 8981 garcinia cambogia for weight loss

Posted 26-Dec-2013 by canon 70d


El rally de Marruecos clásico Relojes de imitacion sigue siendo una experiencia excepcional, que consta de pruebas de regularidad Hublot replica y precisión, lo que impone un manejo del tiempo estricto, una maestría de la optimización de la velocidad y el rendimiento, abierto a señores controladores, entusiastas y propietarios de autos.

Posted 18-Apr-2014 by yitoyitoytyo

Notify me of comments to this article


Add Comment