<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Skylera Blog</title>
	<atom:link href="http://blog.skylera.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.skylera.com</link>
	<description>Practical Cloud</description>
	<lastBuildDate>Mon, 13 May 2013 15:40:38 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Using Windows Azure Virtual Machines to Learn: Networking Basics</title>
		<link>http://blog.skylera.com/?p=27</link>
		<comments>http://blog.skylera.com/?p=27#comments</comments>
		<pubDate>Tue, 29 Jan 2013 08:45:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.skylera.com/?p=27</guid>
		<description><![CDATA[Until recently I’ve used a personal hypervisor to experiment and learn new Windows technologies. Over the past few years my personal productivity machines have become more like mini datacenters &#8211; tons of cores, memory and storage. You know how it is, you go shopping for a new sub 2 pound / $1K notebook and by [...]]]></description>
				<content:encoded><![CDATA[<p>Until recently I’ve used a personal hypervisor to experiment and learn new Windows technologies. Over the past few years my personal productivity machines have become more like mini datacenters &#8211; tons of cores, memory and storage. You know how it is, you go shopping for a new sub 2 pound / $1K notebook and by the time you click “add to cart” it gained about 4 pounds and $3K.</p>
<p>Enter Windows Azure. With only a browser and an RDP client I can spin up and manage just about anything. In other words, I could get away with an old PC or even a thin client and get out of the personal datacenter business. That $3K notebook just turned into a couple years of compute and storage in a real datacenter.</p>
<p>Don’t already have a Windows Azure account? Go <a href="http://aka.ms/mshosting" target="_blank">here</a> for a free trial.</p>
<p>Anyway, speaking of experimenting in the cloud, let’s talk about networking in Windows Azure Virtual Machines…</p>
<h2>Did I just see a server with a DHCP-assigned IP address?</h2>
<p>Windows Azure introduces a new concept when it comes to networking – DHCP for everything regardless of workload. That’s right, even servers are assigned IP addresses via DHCP. This comes as a surprise to hard core server admins. We have become religious about our IP spreadsheets, almost charging people when asked for one of our precious intranet addresses. Like labeling our network cables, this is another thing we’re going to have to let go when migrating workloads to the cloud.</p>
<p>The platform is now our label maker. As long as a virtual machine exists, it will be assigned the same IP address. Wait a minute, I thought DHCP only leased IP addresses out for a finite amount of time. What happens when the lease expires? Well, let’s find out when our lease is up on my domain controller using ipconfig /all:</p>
<p><a href="http://blog.skylera.com/wp-content/uploads/2013/05/dhcplease.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="dhcplease" alt="dhcplease" src="http://blog.skylera.com/wp-content/uploads/2013/05/dhcplease_thumb.png" width="668" height="331" border="0" /></a></p>
<p>Wow. Our virtual machine has a lease on 10.1.1.4 for over 100 years. I think we’re good. Even still, the platform automatically renews the lease for a given virtual machine.</p>
<h2>What’s the point of subnetting in Windows Azure?</h2>
<p>Most of the time we subnet to segregate tiers of a service, floors of a building, roles in an organization, or simply to make good use of a given address range. In Windows Azure, I typically use subnets when defining service layers:</p>
<p><a href="http://blog.skylera.com/wp-content/uploads/2013/05/adarch540.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="adarch540" alt="adarch540" src="http://blog.skylera.com/wp-content/uploads/2013/05/adarch540_thumb.png" width="540" height="476" border="0" /></a></p>
<p>In this case we have a simple 3-tier application that uses classic Windows authentication. There is a management subnet containing the domain controllers, a database subnet with SQL servers, and an application subnet with the web front ends.</p>
<p>Here is another type of deployment where we simply wanted to isolate virtual classrooms from each other:</p>
<p><a href="http://blog.skylera.com/wp-content/uploads/2013/05/classvnet.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="classvnet" alt="classvnet" src="http://blog.skylera.com/wp-content/uploads/2013/05/classvnet_thumb.png" width="387" height="172" border="0" /></a></p>
<p>The deployment shared a common Active Directory, however each classroom had its own instructor and students.</p>
<h2>What can I do with subnets once they’re created?</h2>
<p>Once you have defined your subnets and their services, you can secure those services by applying Windows Firewall rules and settings in a consistent manner. For example, you can define rules where servers on the application subnet (10.1.3.0) should only be able to reach the database subnet (10.1.2.0), and only over ports relevant to the SQL Server database engine service instance (i.e. TCP 1433).</p>
<p>In other words, subnetting in Windows Azure allows you to organize objects in the cloud for many of the same reasons you do on-premise. In this case we’re using it to contain similar services and create logical boundaries to simplify firewall configuration settings. When you create a consistent deployment topology for cloud services in Windows Azure Virtual Machines, you can then take advantage of other Windows technologies such as <a href="http://technet.microsoft.com/en-us/library/cc947846(v=ws.10).aspx" target="_blank">WMI Filters</a> and Group Policy to automate and apply consistent security settings.</p>
<p>We’ll talk about applying role-specific firewall settings via Group Policy in a future blog.</p>
<p>Don’t already have a Windows Azure account? Go <a href="http://aka.ms/mshosting" target="_blank">here</a> for a free trial.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skylera.com/?feed=rss2&#038;p=27</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integrating Active Directory into Windows Azure Virtual Machines</title>
		<link>http://blog.skylera.com/?p=32</link>
		<comments>http://blog.skylera.com/?p=32#comments</comments>
		<pubDate>Wed, 23 Jan 2013 08:40:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.skylera.com/?p=32</guid>
		<description><![CDATA[Most of the work I’ve been doing lately involves migrating traditional client/server applications to Windows Azure Virtual Machines. The majority of these workloads use Active Directory Domain Services as their authentication provider, or in other words, classic Windows authentication. In this blog we’ll walk through the basic building blocks of creating a private forest within [...]]]></description>
				<content:encoded><![CDATA[<p>Most of the work I’ve been doing lately involves migrating traditional client/server applications to Windows Azure Virtual Machines. The majority of these workloads use Active Directory Domain Services as their authentication provider, or in other words, classic Windows authentication.</p>
<p>In this blog we’ll walk through the basic building blocks of creating a private forest within Windows Azure.</p>
<h2>If Active Directory is not available, you better be</h2>
<p>As we all know, if AD is down so is your app. Imagine setting up a single domain controller responsible for both name resolution (DNS) and authentication. You just created another synonym for single-point-of-failure.</p>
<p>At a minimum you should deploy two (2) domain controllers, and they should be created as part of an <a href="http://www.windowsazure.com/en-us/manage/windows/common-tasks/manage-vm-availability/" target="_blank">Availability Set</a>. This will ensure that at least one (1) domain controller is always available for authentication and name resolution requests.</p>
<p>If you’re considering saving a few bucks by deploying a single domain controller in non-production environments, let me save you a few more. The first call you get from development or QA will cost you at least 6 months of compute. Telling a dozen upset people on a conference call that you wanted to save the company $50/month will sound pretty bad…</p>
<h2>A private forest for me? Oh you shouldn’t have</h2>
<p>There are currently two major scenarios for providing Windows authentication in Windows Azure Virtual Machines:</p>
<ol>
<li>Deploy a new private forest</li>
<li>Extend an existing on-premise forest</li>
</ol>
<p>In this blog we’ll cover deploying a new private forest. Here is a quick Visio of a classic 3-tier application (using Windows Azure features) to get us started:</p>
<p><a href="http://blog.skylera.com/wp-content/uploads/2013/05/adarch5401.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="adarch540" alt="adarch540" src="http://blog.skylera.com/wp-content/uploads/2013/05/adarch540_thumb1.png" width="540" height="476" border="0" /></a></p>
<p>As you can see, we have a management subnet that contains our domain controllers, as well as separate database and application “tiers”.</p>
<h2>Stop talking and start deploying</h2>
<p>As with any new deployment to Windows Azure Virtual Machines, you will perform the following high-level steps:</p>
<ol>
<li>Create an affinity group</li>
<li>Create a virtual network</li>
<li>Create a storage account</li>
<li>Create virtual machines</li>
</ol>
<p>We’re only going to cover the different off ramps we take to accomplish this scenario. If you need help with any of the fundamentals, here is a great <a href="https://www.windowsazure.com/en-us/manage/windows/how-to-guides/" target="_blank">resource</a>.</p>
<p>While creating the virtual network, you will need to specify that the domain controllers will also be providing name resolution for all of the servers in your deployment. You can do this in the Windows Azure management portal as well as through the management web service. Here is how you do this via PowerShell:</p>
<h4>Specifying custom DNS servers using PowerShell</h4>
<p>Example command line:</p>
<p>Set-AzureVNetConfig –ConfigurationPath “C:\networkConfiguration.xml”</p>
<p>Contents of C:\networkConfiguration.xml:</p>
<p>&lt;NetworkConfiguration&gt;<br />
&lt;VirtualNetworkConfiguration&gt;<br />
&lt;Dns&gt;<br />
&lt;DnsServers&gt;<br />
<span style="background-color: #ffff00;">&lt;DnsServer name=&#8221;skydc01&#8243; IPAddress=&#8221;10.1.1.4&#8243; /&gt;</span><br />
<span style="background-color: #ffff00;">&lt;DnsServer name=&#8221;skydc02&#8243; IPAddress=&#8221;10.1.1.5&#8243; /&gt;</span><br />
&lt;/DnsServers&gt;<br />
&lt;/Dns&gt;<br />
&lt;VirtualNetworkSites&gt;<br />
&lt;VirtualNetworkSite name=&#8221;skyvn&#8221; AffinityGroup=&#8221;skyag&#8221;&gt;<br />
&lt;AddressSpace&gt;<br />
&lt;AddressPrefix&gt;10.1.0.0/16&lt;/AddressPrefix&gt;<br />
&lt;/AddressSpace&gt;<br />
&lt;Subnets&gt;<br />
&lt;Subnet name=&#8221;Management&#8221;&gt;<br />
&lt;AddressPrefix&gt;10.1.1.0/24&lt;/AddressPrefix&gt;<br />
&lt;/Subnet&gt;<br />
&lt;Subnet name=&#8221;Database&#8221;&gt;<br />
&lt;AddressPrefix&gt;10.1.2.0/24&lt;/AddressPrefix&gt;<br />
&lt;/Subnet&gt;<br />
&lt;Subnet name=&#8221;Middleware&#8221;&gt;<br />
&lt;AddressPrefix&gt;10.1.3.0/24&lt;/AddressPrefix&gt;<br />
&lt;/Subnet&gt;<br />
&lt;Subnet name=&#8221;Application&#8221;&gt;<br />
&lt;AddressPrefix&gt;10.1.4.0/24&lt;/AddressPrefix&gt;<br />
&lt;/Subnet&gt;<br />
&lt;/Subnets&gt;<br />
&lt;DnsServersRef&gt;<br />
<span style="background-color: #ffff00;">&lt;DnsServerRef name=&#8221;skydc01&#8243; /&gt;</span><br />
<span style="background-color: #ffff00;">&lt;DnsServerRef name=&#8221;skydc02&#8243; /&gt;</span><br />
&lt;/DnsServersRef&gt;<br />
&lt;/VirtualNetworkSite&gt;<br />
&lt;/VirtualNetworkSites&gt;<br />
&lt;/VirtualNetworkConfiguration&gt;<br />
&lt;/NetworkConfiguration&gt;</p>
<p>In the example above, the IP addresses used assume the domain controllers are the first virtual machines created on the Management subnet. Let’s make sure that’s true by creating them now:</p>
<h4>Creating highly available Domain Controllers using PowerShell</h4>
<p>Relevant excerpts from createService.ps1:</p>
<p>$instanceSize = &#8216;Small&#8217;<br />
$imageName = &#8216;MSFT__Win2K8R2SP1-Datacenter-201210.01-en.us-30GB.vhd&#8217;<br />
$subnetName = <span>&#8216;Management&#8217;</span><br />
$availabilitySetName = &#8216;skydc&#8217;</p>
<p>$password = &#8216;@skyDc01&#8242;<br />
$vmName = &#8216;skydc01&#8242;<br />
$skydc01 = New-AzureVMConfig -Name $vmName -AvailabilitySetName $availabilitySetName -ImageName $imageName -InstanceSize $instanceSize |<br />
Add-AzureProvisioningConfig -Windows -Password $password |<br />
Set-AzureSubnet $subnetName</p>
<p>$password = &#8216;@skyDc02&#8242;<br />
$vmName = &#8216;skydc02&#8242;<br />
$skydc02 = New-AzureVMConfig -Name $vmName -AvailabilitySetName $availabilitySetName -ImageName $imageName -InstanceSize $instanceSize |<br />
Add-AzureProvisioningConfig -Windows -Password $password |<br />
Set-AzureSubnet $subnetName</p>
<p>Once you’ve created the servers, you will need to make them domain controllers, also known as promotion.</p>
<h4>Promoting a server to a Domain Controller using DCPROMO or PowerShell</h4>
<p>Depending on what operating system you have chosen, you can automate forest creation via command line. In the following examples, be sure to replace DOMAIN_HERE with the desired domain name, and replace passwords with those corresponding to temporary password you assigned to the local administrator account on the first (primary) server.</p>
<p><strong>Windows Server 2008 R2 – Create a new forest using DCPROMO</strong></p>
<p>dcpromo.exe /unattend:C:\primaryDomainController.txt</p>
<p>Contents of C:\primaryDomainController.txt:</p>
<p>[DCInstall]<br />
; New forest promotion<br />
ReplicaOrNewDomain=Domain<br />
NewDomain=Forest<br />
NewDomainDNSName=[DOMAIN_HERE].com<br />
ForestLevel=4<br />
DomainNetbiosName=DOMAIN_HERE<br />
DomainLevel=4<br />
InstallDNS=Yes<br />
ConfirmGc=Yes<br />
CreateDNSDelegation=No<br />
DatabasePath=&#8221;C:\Windows\NTDS&#8221;<br />
LogPath=&#8221;C:\Windows\NTDS&#8221;<br />
SYSVOLPath=&#8221;C:\Windows\SYSVOL&#8221;<br />
SafeModeAdminPassword=@skyDc01<br />
RebootOnCompletion=Yes</p>
<p><strong>Windows Server 2012 – Create a new forest using PowerShell</strong></p>
<p>C:\primaryDomainController.ps1</p>
<p>Contents of C:\primaryDomainController.ps1:</p>
<p>Import-Module ADDSDeployment<br />
Install-ADDSForest `<br />
-CreateDnsDelegation:$false `<br />
-DatabasePath &#8220;C:\Windows\NTDS&#8221; `<br />
-DomainMode &#8220;Win2012&#8243; `<br />
-DomainName &#8220;[DOMAIN_HERE].com&#8221; `<br />
-DomainNetbiosName &#8220;DOMAIN_HERE&#8221; `<br />
-ForestMode &#8220;Win2012&#8243; `<br />
-InstallDns:$true `<br />
-LogPath &#8220;C:\Windows\NTDS&#8221; `<br />
-NoRebootOnCompletion:$false `<br />
-SysvolPath &#8220;C:\Windows\SYSVOL&#8221; `<br />
-Force:$true</p>
<p>Part of your homework will be to create the second domain controller in the new forest. There will need to be slight changes made to the answer files above.</p>
<h2>What’s next?</h2>
<p>Creating the rest of servers required by your application seems like the logical next step. However, there are a handful of important tasks I like to do prior to creating ANY additional virtual machines:</p>
<p>Create domain user accounts that will be used for future system administration.</p>
<p>Create containers for major objects such as server computer accounts.</p>
<p>Create core group policies for significant items such as:</p>
<ul>
<li>Remote Desktop Services – Enable Keep-alives (<a href="http://blog.skylera.com/?p=921" target="_blank">posted</a> previously)</li>
<li>User Account Control</li>
<li>Windows Firewall</li>
<li>Windows Update</li>
</ul>
<h4>Important considerations</h4>
<p>When creating a private forest, consider the amount of administrative overhead involved vs. level of isolation. For example, you may want to have a single forest for all pre-production environments so that you only need to perform user account tasks in one place. This is easy to do in Windows Azure.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skylera.com/?feed=rss2&#038;p=32</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
