Wait! What? Did he say “Server”?! Alright, so perhaps that’s cutting close to click baiting but hopefully you’ll see the funny side.
In my original post discussing my reasons for choosing a Surface Pro 3 to replace my laptop I explained that it would need to meet my work needs. In my day job I specialise in SQL Server and so any laptop needs to be able to run the management tools and also full editions of SQL Server. Windows RT based devices aren’t going to be suitable due to their inability to run x86 desktop applications.
The Surface Pro 3 I selected was the top end Core i7 with 8GB of RAM and 512GB SSD for storage. That means I can add the Hyper-V role to Windows 8.1 Professional and host virtual machines configured to provide a Virtual iSCSI SAN and Windows Failover Clusters hosting SQL Server Failover Clustered Instances. As I said, “the tablet that replaces your server”. 🙂
Now at this point I feel it’s important to highlight that I take no credit for the setups I’ve managed to create since the steps to do this have been well documented by Jonathan Kehayias (b|t) who is a very well respected SQL Server MVP. I did have to figure out some of the Cluster Shared Volumes setup myself so perhaps I do take a tiny amount of credit. 😉
So what have I managed to get running on my Surface Pro 3? Here is a rundown of the virtual infrastructure:
|Guest Description||Windows Server Version||SQL Server Version||Roles and Functions|
|Domain Controller 1||Windows Server 2008 R2||Active Directory 1|
|Domain Controller 2||Windows Server 2008 R2||Active Directory 2|
|iSCSI Virtual SAN||Windows Server 2008 R2||iSCSI Host Server / SMB File Shares|
|SQL2K8R2CLSTR1||Windows Server 2008 R2||SQL Server 2008 R2 – Cluster Node 1||Windows Server Failover Cluster Node – SQL Server Clustered Instance (iSCSI) – Uses iSCSI Shared Storage|
|SQL2K8R2CLSTR2||Windows Server 2008 R2||SQL Server 2008 R2 – Cluster Node 2||Windows Server Failover Cluster Node – SQL Server Clustered Instance (iSCSI) – Uses iSCSI Shared Storage|
|SQL2K12CLSTR1||Windows Server 2012||SQL Server 2012 – Cluster Node 1||Windows Server Failover Cluster Node – SQL Server Clustered Instance (SMB) – Uses SMB File Shares for Storage|
|SQL2K12CLSTR2||Windows Server 2012||SQL Server 2012 – Cluster Node 2||Windows Server Failover Cluster Node – SQL Server Clustered Instance (SMB) – Uses SMB File Shares for Storage|
|SQL2K14CLSTR1||Windows Server 2012 R2||SQL Server 2014 – Cluster Node 1||Windows Server Failover Cluster Node – SQL Server Clustered Instance (iSCSI & CSV) – Uses iSCSI Hosted Cluster Shared Volumes|
|SQL2K14CLSTR2||Windows Server 2012 R2||SQL Server 2014 – Cluster Node 2||Windows Server Failover Cluster Node – SQL Server Clustered Instance (iSCSI & CSV) – Uses iSCSI Hosted Cluster Shared Volumes|
There are two key technologies in play that allow me to run these, and even then with only 8GB of memory I can’t run all of these at the same time. The first is the Dynamic Memory features of Hyper-V and secondly the Microsoft iSCSI Host Services available as a free download. The Dynamic Memory feature allows you to specify an upper limit for the memory allocated to a virtual machine (VM), in most cases these are set to 2GB for each VM, but only the memory required by the VM at the time is assigned. That means that the Active Directory and iSCSI VM’s I listed above consume less than 1GB of memory once they settle down. That leaves enough room to run additional VM’s which can either be two nodes of a Windows/SQL Cluster or individual nodes.
Utilising the Microsoft iSCSI Host Services (Jonathan covers all that in his step-by-step guide) I have been able to create a virtual SAN that the two Windows Server 2008 R2 VM’s connect to using the iSCSI Connector software. This allows the Cluster Validation process to complete which is key to being able to create the Windows Failover Cluster.
The two Windows Server 2012 nodes utilise the new support for SMB shares to host the Cluster Quorum and also support for SMB shares in SQL Server 2012 which means the Windows and SQL Server Clustered Instances can be created without the need for iSCSI setup. The Windows Server 2012 R2 and SQL Server 2014 Clustered Instances make use of the new Cluster Shared Volumes which also requires the use of iSCSI hosted drives. The setup is almost the same as for the Windows Server 2008 R2 clusters except that the drives are mounted on both nodes at the same time, using mount points instead of drive letters, and so do not need to failover like a traditional cluster (this makes failover quicker along with some other advantages).
Now at this point you’re probably thinking why is this so special because the reality is that any Intel Core i5 or i7 laptop would support this virtual infrastructure? Well of course that is true but there is something about the look on peoples faces when I explain that the Surface Pro 3 tablet I’m holding is running SQL Server Clustered Instances.
If I could change one thing about that Surface Pro 3 it would be to have 16GB of memory in the top of the range models but using Dynamic Memory I can work around that. Surface Pro 3 isn’t going to replace your server infrastructure but it can make a great machine for SQL Server professionals like me. J
I’m going to follow up with a gallery post showing a few screen shots for those that are interested in seeing more about my setup.
Just in case you’d like to replicate some of this here are the guides I used:
SQL Failover Cluster (iSCSI) – This uses VMware but I used Hyper-V:
Building a Completely Free Playground for SQL Server – 1 – Downloading the Software and Setting up a Windows Server 2008R2 VM Template
Building a Completely Free Playground for SQL Server – 2 – Setting up Active Directory and the iSCSI Virtual SAN
Building a Completely Free Playground for SQL Server – 3 – Creating the Failover Cluster Nodes and Configuring the iSCSI Environment
Building a Completely Free Playground for SQL Server – 4 – Creating the Cluster
SQL Failover Cluster (SMB):
SQL Failover Cluster without Shared Storage – SQL Server 2012 and SMB