Tuesday 13 August 2013

AutoSPInstaller configuration for SharePoint 2013 Search

Overview:  AutoSPInstaller is a great tool for building SharePoint 2010 ans 2013 farms.  One section of AutoSPInstaller relates to installing SharePoint 2013 search.  This post examines how to configure the xml that drives AutoSPInstaller and supplemental Ps to build the Search farm you require.
 
Below is an example of a search xml config that will setup Search with full redunancy on 2 servers in the SP farm.  This design provides High Availaibility (HA).  MS recommend keeping each index partition under 10 million items.  So in this scenario if you follow MS recommendations you are limited to having 10 million items in your index (hardware, moving outher roles to more servers, usage of search to query all affect how quickly results will be returned so with tuning you can get your indexes to be larger and provide a good end user experience).

 

Tip: Create a seperate SQL aliase fo your 4 Search databases, this will alow you to move the dbs to a new instance or at 40mill documents MS recommend you consider a dedicate search farm.  The SQL Alaise gives you room to adapt.

Tip: Group your search roles onto servers such as:
  • Index & Query Processing
  • Analytics & Content Processing
  • Crawl, Content processing & Search Admin 
Summary:  As of version 3.87 of AutoSPInstaller for an SP2013 installation, you only have 1 index partition.  To create additional partition indexes use PowerShell.  The example below is use the PS code given to me by Joseph Saad.

$WFE2="WFE2"
$WFE4="WFE4"

$ssa = Get-SPEnterpriseSearchServiceApplication #Assuming you have a single Service application
$active = Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active
$clone = New-SPEnterpriseSearchTopology -SearchApplication $ssa -Clone –SearchTopology $active

New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance $WFE2 -IndexPartition 1
New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance $WFE4 -IndexPartition 1

Set-SPEnterpriseSearchTopology -Identity $clone


More Info:
https://autospinstaller.codeplex.com/discussions/453501

Example:

 4 Server Search farm created using AutoSPInstaller.  AutoSPInstaller version 3.87 only supports creating a farm using one partion index as shown below.
To add "Partion Index 1" to the farm using WFE1 and WFE2 to hold the index components use the following PowerShell:
$ssa = Get-SPEnterpriseSearchServiceApplication #Assuming you have a single Service application
$active = Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active
$clone = New-SPEnterpriseSearchTopology -SearchApplication $ssa -Clone –SearchTopology $active
New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance "WFE1" -IndexPartition 1
New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance "WFE3" -IndexPartition 1
Set-SPEnterpriseSearchTopology -Identity $clone
 
Results in a farm that can handle up to 20 million documents due to the partioned index.

 Another Example:
 

Sunday 11 August 2013

SQL Helper

Problem: I need to to give a user permission to run all stored procs on a specific database.

Resolution:
This is not relevant to SharePoint but I had to look up how to give windows users or groups access to run all stored procs in a database.  User will still need the underlying permissions to work on the database.  I create the "sp_executor" role for executing all stored procs on the db.
T-SQL:

CREATE LOGIN [gstt\pbeck] FROM WINDOWS;
use PBTransDB
GO
CREATE ROLE sp_executor
GO
GRANT EXECUTE TO sp_executor
GO
CREATE USER pbeck FOR LOGIN "demo\pbeck"
GO
EXEC sp_addrolemember 'sp_executor', 'pbeck'
GO



 

Thursday 8 August 2013

Stretched farms, Geo-replication and options

Stretched farm: A stretch farm is where you put a single farm into 2 data centres.  This provides redunancy across locations improving HA and DR.   Generally the 2 data centres will be located relatively close to one another geographically as the ping time needs to be less than 1 ms from any WFE to the primaray SQL Server database and at least 1 gigabit per second bandwidth.  hospitals with multiple sites / data centres that have good network connectivity and are located close together is a perfect example.

Geo-replication: SharePoint 2013 like previous versions does not have Geo-replication built into the product.  You can use PowerShell to provide this functionality.  A more achievable approach is to use a 3rd party tool such as DocAve to achieve and maintain Geo-replication.
SharePoint 2013 Geo-Replication
Another option, without the hassel to GEO-Replication is to use Riverbed devices distributed around your corprate network.  This decreates network requirments and improves the end user experience and does not involve syncronising data to multiple farms.  Riverbed's website.

Finding Correlation Errors on a SP2013 farm

Background: SP 2013 has rich and expansive logging/tracing capabilities.  Logging is done via the Unified Log Service (ULS).  This will add logs to the tracelogs (often refered to as the ULS logs or ULS trace logs or ULS, it doesn't matter except you need to understand the ULS service is not only the trace log) and the Windows Event Viewer.  Anything logged in the Event Viewer log will also be in the ULS trace logs.
It is worth check how your logging is setup on your farm.  I change my default location for my ULS trace logs.  Change the logging so it matches your farms requirements.

On a small farm, it's normally pretty easy to take a Correlation Id / the unique GUID generate for the SharePoint request, open the trace log using notepad and find the error.  The default is to create a trace log every 30 minutes, these log files have a lot of data in them on busy production farms, and as you may have a large farm you also have multiple logs to check. I use Microsofts'd unsupported ULSViewer to look at all my logs regardless of farm size.  You can trace the logs in a live format and then filter out what you need.  Another option is to open existing errors to get historical issues.  If you know the datetime and server where the error occured, you open the correct log file (it is labled with a datetimestamp) and then either filter for the correlationId or look around the time the error occured.

Lastly, timer jobs ship entries from the ULS logs into the SharePoint Logging Database (SP_UsageandHealth).  You can directly query the SP_UsageandHealth database using T-SQL.

Tracing Correlation Errors on a SharePoint 2013 Farm.
User passes you a correlation Id and the date/time when the error occured, find the apprioate ULS trace log.  Open the log using ULSViewer and filter for the CorrelationId.  If you can reproduce the bug, you have the developer dashboard that can be turned on (performane penalty) selectively, their is a new SP2013 tab "ULS" this will show you the ULS trace snippet relating to this request.

On a big farm you may want to1st find out which server in the farm had the error:
Merge-SPLogFile -Path ".\error.log" -Correlation "5ca5555c-8555-4555-555b-f555af4d5555"
Tip: Be aware this is a heavy process, so restrict which logs you will merge.
 
Use ULSViewer to find the correlationId and review the logs.

Use IT tools or Fiddler to examine the http response from SharePoint to get the correlation Id, this is the SPRequestGUID (assuming it is not show on the error message).

 

More Info:

Tobias Zimmergren has a great post on working with Correlation Id's.

http://www.sharepointblog.co.uk/2012/09/logging-capabilities-of-sharepoint/

http://habaneroconsulting.com/insights/An-Even-Better-Way-to-Get-the-Real-SharePoint-Error

List of the ULS viewers

http://www.sharepointblog.co.uk/2012/09/logging-capabilities-of-sharepoint/

SP2013 AutoSPInstaller Error Correction

This post contains alist of issues I have had to correct on multiple farm builds. 

Problem:  After a remote offline install the main CA box shows an upgrade is required.  CA > Manage servers in this farm :Upgrade Required
Resolution: Run cmd > C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\BIN>PSConfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures

Problem: PU or CU is not getting installed.
Resolution: Ensure the .exe are extracted out e.g. ubersrv2013-kb2817414-fullfile-x64-glb.exe this is the June 2013 CU.  Ensure the March 2013 PU is extracted and in the same folder ubersrvsp2013-kb2767999-fullfile-x64-glb.exe.  Ensure they are placed in the correct location for me it is ..\2013\Updates\...  CU are cumulative so you only need the PU and then the latest CU.  Don't rename the CU - this caught me out.

Problem: I kept receiving the error: 17303 Extracted file error for the June CU (ubersrv2013-kb2817414-fullfile-x64-glb.exe).
Resolution:  Looks like the download was corrupt, re downloaded the CU and extracted the contents which fixed the issue.

Problem: I built a 4 SP server 2013 farm.  I had 2 Search nodes setup via AutoSPInstaller and added another 2 search nodes (index partitions with it's corresponding replicated index).  After a reboot I got into the following state and could not get WFE2 to join the search farm.
Using CA and looking at the Search topolgy on WFE2, I can see the error "Administrative status  The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel." and "Unable to retrieve topolgy component health states. This may be because the admin component is not up and running.".
 
Resolution: Check the routing, my CA box is WFE, I also had a CA role on WFE2, while playing with the farm I added a host entry to work with CA on WFE2.  The issue is that this is the same host entry as where my Admin component sits.  Removing the host entry on WFE2 fixed the status of the index and query components.
 
 

Monday 5 August 2013

Installing OWA 2013

Series of Posts for Installing and Configuring Office Web Apps (OWA) 2013 to work with SharePoint 2013.

Overview: Manually Install OWA 2013 on Windows 2008 R2 SP1.

Steps:
  1. Download and install .Net 4.5 (dotNetFx45_Full_setup.exe)
  2. PowerShell 3 (Windows Management Framework 3.0)  Windows Server 2008 R2 SP1 (64-bit versions: Windows6.1-KB2506143-x64.msu)
  3. Install KB2670838 (Windows6.1-KB2670838-x64.msu)
  4. Run PS>Import-Module ServerManager
    PS > Add-WindowsFeature Web-Server,Web-WebServer,Web-Common-Http,Web-Static-Content,Web-App-Dev,Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,Web-Security,Web-Windows-Auth,Web-Filtering,Web-Stat-Compression,Web-Dyn-Compression,Web-Mgmt-Console,Ink-Handwriting,IH-Ink-Support
  5. Install OWA 2013 (wacserver.img)

 

Load balancing in SharePoint

Background: SharePoint 2010 required sticky sessions.  In effect when the 1st request from a user comes into SharePoint 2010 to the load balancer, the request will be directed to a particular SharPoint WFE server that will then serve the subsequent requests (the user now has session affinity/sticky session).

SharePoint 2013 has distributed cache so you no longer need to use sticky sessions, the load balancer merely needs to direct the user to any server (preferably the quietiest).

Possible options for Load Balancers in SharePoint:
F5/BIG-IP (Level 2, 3, 4 &7)
KEMP (Level 4 & 7)
Barracuda (Level 4)
Cisco - I don't think Cisco build dedicate load balancers and more however "Cisco IOS-based router product has load balancing capabilities".
Not familiar with:
http://www.coyotepoint.com/products/compare
http://www.radware.com/Products/ApplicationDelivery/AppDirector/load_balancing.aspx
http://www.a10networks.com/resources/files/DG_MS-SharePoint2013.pdf - NLB and SSL termination.

Key features needed off a Load Balancer:
Distributed Denial of Service (DDoS) attack protection
Http compression
SSL acceleration/ and termination
Persistance/Sticky sessions
HA via distribution of requests and verifying that SP is running.