• Private Cloud Architecture - Part 3: Concepts

     

    In the first part of this series (here and here), I started by some discussion regarding the basic definition that we will build upon toward achieving the Private Cloud Promises. In the second part (here and here) I discussed the Core Principles for Private Cloud.

    In this post, I will discuss the main concepts behind Private Cloud. The concepts are guided by and directly support the principles we discussed previously.

    Approaching Availability Holistically: Uptime was the main measure of availability in general, the more you add nines the more your system is available (for example, 99.999 is better than 99.99).

    Let’s define two new terms here: MTBF (Mean Time between Failures) that measures the time between service outages (reliability). MTRS (Mean Time to Restore Service) that measures the resiliency.

    In traditional data centers, the availability is solved by throw in more redundant H/W that could pick up the workload to provide more up time. For example, in Active/Passive SQL Server Cluster or having two or more Web Front End (WEF) servers with a load balancer in SharePoint Farm. Private cloud approach this by mainly two software approaches:

    • Virtualization: by removing the traditional model of physical redundancy and replacing it with a virtualization layer. This abstract the service from the server layer and allowing the workload to transport or restart smoothly from a failed virtual server to another. To be fair, you will remove the redundancy from the computing layer, but you will still need it in the storage and network layer. Still a significant cost saving while achieves the same or better availability.
    • Monitoring: Automation of detection and response to failure can reduce MTRS significantly.

    Using the same physical hardware: to drive predictability, the underlying infrastructure needs to provide a consistent experience to the workloads that it hosts on the computing, storage and network layers. Private cloud provides that by moving server stock keeping unit to the logical level than the physical level. Once we reach that level of homogenize on the compute layer (so all servers have the same processing power, RAM, same connection to storage resources with same network connectivity), then failed servers could move transparently from one failed server to another without impact on the service behavior.

    Shared Pool of Resources: this is a key to the success of Private Could. All resources (compute/storage/network) are grouped in a pool that creates a fabric that hosts the virtualized workloads.

    Infrastructure Virtualization: to decrease or eliminate downtime, enhance portability, simplify management and be able to share resources you will need to virtualize all infrastructure components (compute/storage/network)

    Fabric Management: Fabric is where all groups of compute, storage and network resources are connected to form the private cloud. It is a different layer above virtualization as an orchestration engine to manage the lifecycle of consumer’s workload. It added a new VM or reduces the number of VMs to the workload according to the need.

    Elastic Infrastructure: this enables the perception of infinite capacity by allowing resources to be allocated and released based on demand. Scale down (or releasing resources when not needed) is normally a forgotten practice. It is important to use consumption-based pricing model to incent consumers to be responsible of scaling down their need for resources when not needed.

    Service Cost Transparency: this is a direct view of taking service provider’s approach to deliver infrastructure. This will provide a more accurate picture of the true cost of utilizing share resources.

    Pay per Consumption: based on classification of services and service cost transparency, business will pay per usage (similar to the electricity utility bill). The main aim is to encourage the business of a good behavior usage of resource based on the pay per need rather than paying a big amount of money for the capital owning without actually a need for all the resources paid for.

    In the next blog I will discuss the patterns of implementing Private Cloud.

    Credit and thanks go to the Microsoft Team (Kevin Sangwell, Laudon Williams and Monte Whitbeck), the authors of the original document, for allowing me to summarize and publish to the community.

  • SharePoint 2010 User Profile Service: Part 1a Configuration

    I wanted to write a series about how to get SharePoint 2010 user profiles service and synchronization scenario working. So this is the first post of this series and I will talk about the configuration alternatives of the user profiles service. The user profile service can be configured either on a single server installation or in a server farm. Although it can be installed on a single server installation this is not the supported production environment scenario.

    If you are installing on a server hosting also the domain controller then you have to remember while you initially configure SharePoint to not use the FQDN for the SQL server name. if you do so already you can roll this back by disconnecting the server from the farm and reconnecting it again while giving just the machine name as the SQL server name.

    If you are using a named SQL instance then you MUST configure an alias for SQL. To do this we should run the SQL Server Client Network Utility (which is installed on every SharePoint machine).

    1. Start… Run..
    2. Type cliconfg and click OK.
    3. Click TCP/IP and then the Enable >> button.
      image
    4. Click the Alias tab.
    5. Click the Add button.
    6. Select the TCP/IP radio button.
    7. Enter the alias you wish to use (e.g. SHAREPOINT) in the Server alias text box.
    8. Enter the address of your instance (e.g. SQL1\SHAREPOINT) in the Server name text box.
    9. Deselect the Dynamically determine port check box.
    10. Enter the port of your instance (e.g. 1433) in the Port number text box.
      image
    11. Click OK to save the alias.
    12. Click OK to save the configuration and close SQL Server Client Network Utility.

    Once we have an alias we can create our farm using it. However there is also another step necessary for reliable startup of the UPS service instance. Basically what happens is that we can provision UPS, but when we restart the machine (for example after patching the box) the UPS services will fail to start. We should configure this before starting the UPS service instance for the first time to avoid the issue completely.

    We need to open up network access to the Local DTC on the machine hosting the UPS Service Instance, which is done using the Component Services MMC Snap In:

    1. Start… Administrative Tools… Component Services.
    2. Expand Component Services > Computers > My Computer > Distributed Transaction Coordinator.
      image
    3. Right click Local DTC and choose Properties.
    4. Click the Security tab.
    5. Check the Network DTC Access check box and the Allow Remote Clients check box.
      image
    6. Click OK.
    7. You will be prompted to restart MSDTC, click Yes.

    Now we can provision UPS and it will start reliably following a machine restart.

    First: Single Server Installation

    1. Logon to the server using the farm account the same account will be used later for the user profiles synchronization service. This account should be a local machine administrator and already have access to SQL server. If you are using the domain administrator as the farm administrator then you jump to step 4.
    2. Give the account the log on locally right on the server.
    3. Give the account the replicating directory changes on the domain controller.
    4. Open the central administration site.
    5. Now for the farm it is not recommended to use the wizard but for a single server install it can be. Click on the link configuration wizards.image
    6. Click on the link “Launch the farm configuration wizard”.
      image
    7. Click on the button “Start the Wizard”.
      image
    8. Make sure that the “User Profile Service Application” is selected and make sure you are selecting the managed account you will be using for profile synchronization service later. (The same account you already used to logon to the server in step 1)
      image
    9. Click “Next”.
    10. Once this process finishes just click skip for creating the initial site collection. And click “Finish” to complete the Wizard.
    11. Now the user profile service application is configured but we still need to make sure it is running and then configure the synchronization service.
    12. Return back to the home screen of the central administration and make sure the UPS is running on the server by clicking the link “Manage services on server”
      image
      image
      If it is not started start it by clicking start.
    13. Now while you are on the same screen, start the user profiles synchronization service by clicking start.
      image
    14. Now you will have to wait and I mean really wait. It might take from 5 minutes and up to 30 minutes to be provisioned and started. You can still monitor that it is running by looking in the running timer jobs for a job called “UserProfileSyncronizationSetup”.

    In the next post I will discuss to configure this on a farm.

  • Using a custom user profile property for people search results scopes

    The scenario is simple; what have configured people search and allowed that to search using a custom metadata property that is being populated into the user profiles from an external system like a BCS system. For this post I assume that the user profiles synchronization is up and running and that we added an extra profile property for example SubDepartment from an external system and people search is already configured. So here are the steps.

    1- Make sure that the “Managed Metadata Service” is provisioned and running before you perform this procedure.

    2- Once the initial full synchronization is completed we should check that the custom property is populated to the users profiles as expected.

    3- Open the SharePoint central administration web site.

    4- Create a new metadata property pointing to your custom user profile property.
    Click “Metadata Properties”
    clip_image002
    clip_image003
    clip_image004
    Click “Add Mapping”
    clip_image005
    clip_image006
    clip_image007
    Select “People:SubDepartment” (This is the crawled property and you will never find it until you perform the initial full crawl of the users profiles) and then OK
    Click “Allow this property to be used in scopes (check box)”
    clip_image009

    5- Once this is done and this is a very important step RUN ANOTHER INCREMENTAL CRAWL.

    6- Now open your search center and select people search and search for anything just to display the results page.

    Edit this page and then edit the refinements web part.
    clip_image010
    clip_image012
    clip_image013
    Enter the following text
    <Category Title="SubDepartment" Description="Use this filter to restrict results to a specific organization" Type="Microsoft.Office.Server.Search.WebControls.ManagedPropertyFilterGenerator" MetadataThreshold="1" NumberOfFiltersToDisplay="4" MaxNumberOfFilters="50" SortBy="Frequency" SortDirection="Descending" SortByForMoreFilters="Name" SortDirectionForMoreFilters="Ascending" ShowMoreLink="True" MappedProperty="SubDepartment" MoreLinkText="show more" LessLinkText="show fewer"/>

    7- Uncheck the check mark "Use Default Configuration"

    8- Click ok twice and then the user will have the capability to restrict the results depending on the SubDepartment of the employee.

    Happy SharePointing Smile

  • Configuring WCF connection timeout for BCS

    The scenario is that you have configured a BCS system connecting to a WCF service. Now this service is not connecting to a reliable system and you have a failover node for it. But since BCS by default will keep waiting for the service to respond you will not be able to fail to the other node. You want to change the WCF client (BCS in this case) timeout. To do this it is simple enough but hidden.

    You need to change the registry on the SharePoint server. The keys are located under HKEY_CURRENT_USER\Software\Policies\Microsoft\office\14.0\Common\Business Data.

    Key

    Type

    Value

    Description

    Limits\Wcf\Timeout\Max

    REG_ DWORD

    1-75,000,000 (milliseconds)

    Specifies the number of milliseconds to wait until an open Web service connection is terminated.

    Typical values range from 5,000 to 180,000 milliseconds (5 seconds to 3 minutes). The default is no time-out.

    To see the complete list of available Business Connectivity Services policy settings, refer to the Office2010GroupPolicyAndOCTSettings_Reference.xls file that is included on the following download page: Office 2010 Administrative Template files (ADM, ADMX, ADML) and Office Customization Tool (http://go.microsoft.com/fwlink/?LinkId=189316).

  • SharePoint 2010 People Search using Metadata

    The scenario is simple; what you want is to configure people search and allow that to search using a custom metadata property that is being populated into the user profiles from an external system like a BCS system. I will dedicate several posts for configuring the user profiles service and synchronization from an external source. But for this post I assume that the user profiles synchronization is up and running and that we added an extra profile property for example employee ID from an external system. So here are the steps.

    1. Make sure that the “Managed Metadata Service” is provisioned and running before you perform this procedure.
    2. Once the initial full synchronization is completed we should check that the custom property is populated to the users profiles as expected.
    3. Open the SharePoint central administration web site.
    4. Create a new content source for your user profiles
      clip_image002
      Select your configured search application
      clip_image004
      Click Manage
      clip_image006
      clip_image008
      clip_image010
      Fill in the required fields and mark how we write the URL of the SharePoint site to the my sites host URL with a special sps3 protocol.
      clip_image011
      Create schedules as required
      clip_image012
      Select full crawl check box (you can do that later if you want)
      clip_image013
      Click OK
      clip_image014
    5. Keep refreshing the content sources page until the crawl has finished.
      clip_image016
    6. Create a new metadata property pointing to your custom user profile property.
      Click “Metadata Properties”
      clip_image018
      clip_image019
      clip_image020
      Click “Add Mapping”
      clip_image021
      clip_image022
      clip_image023
      Select “People:EmployeeID” (This is the crawled property and you will never find it until you perform the initial full crawl of the users profiles) and then OK
      clip_image024
      clip_image025
    7. Once this is done and this is a very important step RUN ANOTHER INCREMENTAL CRAWL.
    8. Open your search center that you want the user to use the new metadata property and now we will customize this page to add the new managed property.
      Click the “People” link.
      clip_image027
      Click on site actions and then edit page.
      Open the search box web part properties
      clip_image028
      clip_image029
      clip_image030
      Now in this window add a new line like this:
      <Property Name="EmployeeID" ManagedName="EmployeeID" ProfileURI="urn:schemas-microsoft-com:sharepoint:portal:profile:EmployeeID"/>
      clip_image031
      Click ok twice
      Now when you click on search options you see this view
      clip_image032
      clip_image033
      And if you enter any employee ID in the designated section you get results as following
      clip_image035
      Please note the query format.

    So now your users are able to search for a user profile using their HR system employee ID.

    Please note one thing if you want to localize the name of the property you will have to change the field name in this line to whatever you want.

    <Property Name="EmployeeID" ManagedName="EmployeeID" ProfileURI="urn:schemas-microsoft-com:sharepoint:portal:profile:EmployeeID"/>

    Happy SharePointing Smile