I decided it was time to take a look at some of the new Microsoft technologies that are either currently available or on their way. Building a SharePoint 2013 Preview farm allows for exploration of Windows Server 2012, SQL Server 2012 and the SharePoint 2013 Preview. With that in mind, the goal was to build out a SharePoint 2013 Preview farm in a lab environment that would emulate a small/medium production deployment.
Let me just say up front, this is not an extensive step-by-step guide. This is more of a "what I did, what didn't work and how I fixed it" guide. There are plenty of long, detailed and boring SharePoint 2013 Preview resources available on the web. This is ... hopefully ... not one of them. When I ran into problems, a visit to Uncle Google usually found the answer I was looking for. My goal is to consolidate all of the issues and fixes into one easy to follow guide.
The farm was built on an Asus G74 laptop with a quad core processor, 32 GB of RAM and a 512 GB SSD. At a minimum, I recommend a desktop or laptop with a quad core processor, 16 GB of RAM and 100 GB of free hard drive space.
The farm was built in a virtual environment running inside VMware Workstation 9. I suggest taking a deep breath, opening your wallet and shelling out the $249 for VMware Workstation 9. VMware Workstation is invaluable for development and testing, well worth the money in my opinion.
All of the required software can be downloaded and evaluated for free:
VMware Workstation Trial
Windows Server 2012 180 Day Trial
SQL Server 2012 180 Day Trial
SharePoint Server 2013 Preview
I wanted to have the prerequisites downloaded and available so that the farm could be built out without any internet access. This requires downloading the following prerequisite files and setting up a prerequisite installer batch file. If you just want to let the SharePoint installer download everything, you can skip this section. If you want to do do an offline setup/install, follow along:
.NET Framework 4.5
Windows Management Framework 3.0 (CTP2) – PowerShell 3.0
Microsoft SQL Server 2008 r2 Native Client
Windows Identity Foundation (KB974405)
Microsoft Sync Framework Runtime v1.0 SP1 (x64)
Windows Server AppFabric
Windows Identity Extensions
Microsoft Information Protection and Control Client
Microsoft WCF Data Services 5.0
CU Package 1 for Microsoft AppFabric 1.1 for Windows Server (KB2671763)
Create a new folder and copy PrerequisiteInstaller.exe and msvcr100.dll from the root folder of the SharePoint 2013 Preview ISO into it. Create a subfolder named "PrerequisiteInstallerFiles" and copy all the prerequisites that you downloaded into there. Create a subfolder under PrerequisiteInstallerFiles named "NET35" and copy the contents of the Windows Server 2012 ISO \sources\sxs there.
NOTE: Windows Server 2012 comes with .NET 4.5. SharePoint Server 2013 and SQL Server 2012 require .NET V3. Windows Server 2012 considers .NET V3 a "feature on demand" and will download it from the internet when required. If you are doing an offline install this will never work. The .NET V3 install files are included on the Windows Server 2012 installation media/ISO. So, what we've doing is adding the .NET V3 installation to our offline prerequisites install.
Create a batch file to install the prerequisites:
@ECHO OFF set PF="PrerequisiteInstallerFiles" REM INSTALL NETFX3 dism /online /enable-feature /featurename:NetFX3 /All /Source:%PF%\NET35 /LimitAccess REM INSTALL PREREQUISISTES PrerequisiteInstaller.exe /SQLNCli:%PF%\sqlncli.msi ^ /PowerShell:%PF%\Windows6.1-KB2506143-x64.msu ^ /NETFX:%PF%\dotNetFx45_Full_x86_x64.exe ^ /IDFX:%PF%\Windows6.1-KB974405-x64.msu ^ /Sync:%PF%\Synchronization.msi ^ /AppFabric:%PF%\WindowsServerAppFabricSetup_x64.exe ^ /IDFX11:%PF%\MicrosoftIdentityExtensions-64.msi ^ /MSIPCClient:%PF%\setup_msipc_x64.msi ^ /WCFDataServices:%PF%\WcfDataServices.exe ^ /KB2671763:%PF%\AppFabric1.1-RTM-KB2671763-x64-ENU.exe
Save the batch file to wherever you placed the PrerequisiteInstaller.exe and msvcr100.dll files. The file structure should look like this:
c:\SP2013Prereq
C:\SP2013Prereq\PrerequisiteInstallerFiles
C:\SP2013Prereq\PrerequisiteInstallerFiles\NET35
I would suggest creating a Windows Server 2012 template, from which you can quickly clone your farm servers. Fire up VMware Workstation and select "Create a New Virtual Machine". Choose the typical configuration. When asked for the installer disc/ISO, select "I will install the operating system later". Accept the defaults for the rest of the wizard. Connect the Windows Server 2012 ISO to the VM and power it up. Once you've got Server 2012 installed and running, open a command prompt and change directory to c:\windows\system32\sysprep. Execute "sysprep.exe /generalize /oobe /shutdown". Once the VM has shut down, select it (left click) then right click and choose Snapshot -> Take Snapshot. Once you've created a snapshot, right click on the VM and select Settings. Go to the Options tab -> Advanced, select "Enable Template Mode" and click OK. You should now be able to right click the VM and select Manage -> Clone.
NOTE: If you specify the Windows Server 2012 ISO Image when creating the VM rather than choosing "I will install the operating system later", you will receive a fatal error during Windows Server 2012 installation. I don't remember the exact wording, something to do with licensing terms. Hopefully a forthcoming VMware Workstation patch will resolve this.
Clone the Windows Server 2012 template five times. This will be our farm:
DC1 | Active Directory Domain Services and DNS roles |
SPCA | SharePoint 2013 running Central Administration Server |
SPWFE1 | SharePoint 2013 web front end (NLB) |
SPWFE2 | SharePoint 2013 web front end (NLB) |
SPSQL | SQL Server 2012 hosting the SharePoint 2013 databases |
Power up your virtual machines and complete initial configuration. For all VM's, perform the following using Server Manager -> Local Server:
Log onto your domain controller VM and add Active Directory Domain Services. Provision your domain name, which will also install DNS. I used dev.local for my domain name. Create the following domain accounts (the names in brackets are what I used, feel free to use whatever you like):
Launch DNS Manager and add a host record for your portal's network load balanced IP. You may also want to add a reverse lookup zone for your network.
Once your domain controller is up and running, reconfigure the IP settings on your other VM's to use the domain controller VM for DNS. Join the other VM's to the domain.
Log onto your SQL Server 2012 VM.
NOTE: SQL 2012 requires .NET V3, which is considered a "feature on demand" for Windows Server 2012. As such, when SQL Server 2012 installs, .NET V3 will be downloaded from the internet. If you are doing an offline install, this will never work and SQL Server 2012 setup will fail. The .NET V3 files are included on the Windows Server 2012 installation media/ISO. For an offline install, connect the Windows Server 2012 ISO to the VM, open a command prompt and enter the following, replacing DRIVE with your VM's virtual DVD drive letter:
dism /online /enable-feature /featurename:NetFX3 /All /Source:DRIVE:\Sources\sxs /LimitAccess
Connect the SQL Server 2012 ISO image to the VM and run the setup.exe file located in the root folder. I did not change any of the defaults. For "Feature Selection" I enabled/installed "Database Engine Services" and "Management Tools - Complete".
When SQL Server setup is complete, launch SQL Management Studio and create a login for your SharePoint setup account [spsetup] and grant the account dbcreator and securityadmin rights.
The web front ends will require two network adapters to support network load balancing, so add another virtual NIC to both. Configure the second NIC on each front end with a static IP address and ensure that you do NOT configure default gateway or DNS server settings on the second NIC. Use Server Manager to add the Network Load Balancing feature to both front ends. Run the Network Load Balancing Manager on one the front ends to provision a NLB cluster. Create the cluster using the NLB NIC on each front end, and configure the cluster name and IP address.
As an example, this is my farm IP layout:
DC1 | 192.168.159.10/24 |
SPCA | 192.168.159.20/24 |
SPWFE1 | 192.168.159.21/24 (PUBLIC) |
192.168.159.23/24 (NLB) | |
SPWFE2 | 192.168.159.22/24 (PUBLIC) |
192.168.159.24/24 (NLB) | |
NLB IP | 192.168.159.25/24 NLB CLUSTER IP |
SPSQL | 192.168.159.30/24 |
There are a few registry and network interface changes required for SharePoint to operate properly with network load balancing. Perform the following registry changes on each front end using regedit:
Perform the following NLB network interface changes on each front end from a command prompt (as administrator):
* Where "NLB" is the name of your NLB network connection. You should name your interfaces something recognizable, like "PUBLIC" and "NLB"
Finally, we'll need to adjust the binding order of the NIC's. For both front end VM's:
Now it's time to install the SharePoint Server 2013 prerequisites. Perform the following steps for both front ends and the Central Administration VM:
NOTE: I did not try an online setup. When performing the offline setup using the batch file, a reboot is required during prerequisite installation. After the reboot, the prerequisite installer runs again and reports installation failure. Ignore the failure message and run the batch file again. The remaining prerequisites will install and report success.
With the prerequisites out of the way, now it's time to install SharePoint! Perform the following on the CA VM:
Installation on the web front ends is basically the same, except select "join an existing farm". Once SharePoint is installed on all 3 servers, launch Central Administration and begin configuration. The configuration wizard will step through setting up shared services, the initial web application and site collection.
Unless everything has gone horribly wrong, you should now have a fully functional SharePoint 2013 Server Preview Portal!
Whew. I think it took me longer to write this article than it did to actually build the farm! Once you have all the necessary software, the actual deployment of the farm shouldn't take more than about 3-4 hours. It took me considerably longer, as I ran into several *issues* which I had to individually research, test and correct. Hopefully this article will prevent others from experiencing the pain I endured while rolling out SharePoint 2013 Server Preview. Point those shares!