SharePoint 2010 Shared Service Architecture Part 2


This is a short blog which briefly discusses Shared Service Architecture in a multi farm environment.   I will discuss some core components and describe how these components work together.  I will not go into exact setup steps due to the fact TechNet has a great run through here:


 


Exchanging Certs:      http://technet.microsoft.com/en-us/library/ee704552(office.14).aspx


Publishing a Service Application:    http://technet.microsoft.com/en-us/library/ee704545(office.14).aspx


Connecting to a Published Service Application:  http://technet.microsoft.com/en-us/library/ee704558(office.14).aspx


Special shout-out goes to Ram and Sheyi for some great contributions to this blog.   I recommend reviewing Shared Service Architecture Part 1 blog to build a foundation before continuing further.


 


Basics



SharePoint 2010 Shared Service architecture has been revamped to provide great flexibility in a single farm.   This flexibility in a single farm has been extended to include multiple farms.   For Example, Shared Services can exist in a farm I’ll call “Services Farm”.   All content like SharePoint sites and My-Sites reside in a farm called “Consumer Farm”.   A services farm consists of multiple shared services that can be published and made available to remote farms.   The Consumer Farm can connect to a published service application from the services farm and consume from it.  


For Example:


Services Farm: Published Search Service Application and give Admin access via permissions button for the specified service application.



Consumer Farm:  Consumes Search Service Application from Services Farm



Action from Consumer FarmUser accessing a site performs a search



Results from Services Farm: Search results are pulled from Services Farm.


 


Initial Deployment is a four step process. 




  1. Setup trust between farms by copying\importing  root\STS security token certificates

          Note:  The STS cert is provided to the Publishing farm from the Consumer farm


    2.   On the services farm, publish shared service applications making them available to other farms


    3.   Set Permissions on who can access the published shared service applications


    4.  The consumer farm will use Connect button to discover the services in a destination farm and to create a Proxy to a Shared service in a remote farm.


Note:  A successful attempt at step 4 creates a service application proxy and places in a proxy group within the Consumer farm.  Only web applications mapped to the same proxy group will consume from this published service application.


 






Topology Discovery Service Application


This is known as the Application Discover and Load Balancer Service Application, “I’ll refer to as the topology service”. Within IIS, it’s listed as Topology and runs using WCF web service. 


 




Central Administrator:


clip_image001



 


IIS:


clip_image002



Without a Topology Discovery Service Application, consuming services across farms is not possible.  Why it’s not possible will be answered when the entire blog has been reviewed.


 


Functions of Topology Service on publishing farm



In a services “publishing” farm, the topology service provides a list of published shared service applications that are available for consumption.  It also keeps track of which Published Shared Service application instances are online\offline so that it consistently maintains a fresh list of URI’s.   It maintains a cache of these URI’s to avoid multiple round trips to the configuration database.


 


Functions of Topology Service on consuming farm



The topology service functions in a consuming farm take effect only after a connection is established.  That is, a service application proxy is created on a consumer farm that connects to service application in publishing farm.   In a consumer farm, the topology service connects to the Publishing farms (remote) topology service to retrieve a list of added/removed URI’s.  A timer job controls when this takes place called the Application address refresh timer job.  The default is every 15 minutes.  When it runs, it calls the Publishing farm’s Topology Web Service to retrieve the updated service end-point URI list.  If there is any change, it will update the associated service application proxy.


 



Load Balancer 



The load balancer component provides two functions in a content farm:


1. It ensures request from service application proxies are evenly distributed to remote published shared service instances.


2. Maintains a list of fresh URI’s


On a consumer farm, when a service application proxy is first provisioned that is consuming service in a remote publishing farm,  the service application proxy directly connects to the publishing farms remote topology service to get the list of available URI’s (See the troubleshooting section for more details).  It stores these URI’s in a load balancer cache.  Therefore, each service application proxy in a consuming farm contains a unique load balancer component.   After the initial provision, the load balancer component will not attempt to connect to the remote topology service again to receive URI updates.   It will only receive updates from the local topology service via the Application address refresh timer job.  




Question: What if a load balancer discovers service connection endpoints are down?



Answer: It maintains freshness in that when it discovers service endpoints are no longer available it marks them as down for a period of time and will not use it until that time period has expired.   For further service calls, the load balancer tries to get the next available URI from its cache.   When the time period is over, it will bring the downed link back online.




 


 


Troubleshooting Topology Service (basics)



This section will uncover what takes place behind the scenes “what the trace logs look like” on various aspects of multi farm communication.   I’ll cover each action in its own section.  The data provided will display a glimpse of healthy activity and can be used as a reference based on the type of action taken.  



 


Connecting to Topology Service to consume Search Service Application



In this example, SharePoint administrator in consumer farm is connecting to topology service in publishing farm and selecting a Search Service Application to consume from it: 



03/08/2010 09:03:03.08         w3wp.exe (0x0A00)               0x07AC    SharePoint Foundation           Logging Correlation Data       xmnv       Medium                Name=Request (POST:http://consumerfarm:4444/_admin/ServiceApplicationConnect.aspx?IsDlg=1)           bcb6e7a2-4749-4c2d-99d0-49ad45544e1d



03/08/2010 09:03:03.11         w3wp.exe (0x0A00)               0x07AC    SharePoint Foundation           Topology 84cy        Verbose   Retrieving shared service application information for url: ‘https://servicesfarm:32844/Topology/topology.svc’          bcb6e7a2-4749-4c2d-99d0-49ad45544e1d



03/08/2010 09:03:03.11         w3wp.exe (0x0A00)               0x07AC    SharePoint Foundation           Topology 84d0        Verbose   The specified url is not topology service load balanced. Assuming the uri is hardware load balanced for the topology service ‘https://servicesfarm:32844/Topology/topology.svc’          bcb6e7a2-4749-4c2d-99d0-49ad45544e1d



03/08/2010 09:03:03.30         w3wp.exe (0x0A00)               0x07AC    SharePoint Foundation           Topology e5mc       Medium  WcfSendRequest: RemoteAddress: ‘https://servicesfarm:32844/Topology/topology.svc’ Channel: ‘Microsoft.SharePoint.ITopologyWebServiceApplication’ Action: ‘http://tempuri.org/ITopologyWebServiceApplication/EnumerateSharedServiceApplications’ MessageId: ‘urn:uuid:ace71aeb-f378-41d2-8593-e43af416c98b’        bcb6e7a2-4749-4c2d-99d0-49ad45544e1d



03/08/2010 09:03:03.44         w3wp.exe (0x0A00)               0x07AC    SharePoint Foundation           Logging Correlation Data       xmnv       Medium                Name=Request (GET:http://consumerfarm:4444/_admin/SelectApplication.aspx?proxyId=&typeId=&IsDlg=1)            1aeaeebc-e766-41af-89c7-9d4ece0f24b0



03/08/2010 09:03:03.44         w3wp.exe (0x0A00)               0x07AC    SharePoint Foundation           Topology 84d3        Verbose   The specified url is a topology service url. Not filtering retrieved results              bcb6e7a2-4749-4c2d-99d0-49ad45544e1d



03/08/2010 09:03:03.45         w3wp.exe (0x0A00)               0x07AC    SharePoint Foundation           General   6t8b         Verbose   Looking up context  site http://consumerfarm:4444/_admin/SelectApplication.aspx?proxyId=&typeId=&IsDlg=1 in the farm SharePoint_Config2             140e4dd4-fa79-47f9-b0c5-9e638dad9258



03/08/2010 09:03:03.45         w3wp.exe (0x0A00)               0x07AC    SharePoint Foundation           General   6t8h         Verbose   Found typical site / (cd40b0f0-3b69-484a-94b6-30bdb2def735) in web application SPAdministrationWebApplication.  140e4dd4-fa79-47f9-b0c5-9e638dad9258



03/08/2010 09:03:03.50         w3wp.exe (0x0A00)               0x07AC    SharePoint Foundation           Topology 84d4        Verbose   Getting supporting proxy types for application ‘Search Service Application 1’ using proxyId ‘00000000-0000-0000-0000-000000000000’ and typeId ‘00000000-0000-0000-0000-000000000000’       140e4dd4-fa79-47f9-b0c5-9e638dad9258



03/08/2010 09:03:03.50         w3wp.exe (0x0A00)               0x07AC    SharePoint Foundation           Topology 84d5        Verbose   Found supporting proxy ” for application ‘Search Service Application 1’    140e4dd4-fa79-47f9-b0c5-9e638dad9258


03/08/2010 09:03:11.67         OWSTIMER.EXE (0x0FEC)      0x11AC    SharePoint Server Search       Administration        dk3p        Verbose SearchService.Provision: Begin.             5483fb53-a1f1-4cec-b08f-803a4b15d422


03/08/2010 09:03:11.67         OWSTIMER.EXE (0x0FEC)      0x11AC    SharePoint Server Search       Administration        dk3s        Verbose SearchService.Provision: End.                5483fb53-a1f1-4cec-b08f-803a4b15d422


 







Communication to web services



In this example, user Dan is attempting to edit his profile and populate some properties.   He is logged into Consumer farm which is consuming Profile Service application in services farm.  To find which URI is being used by the User Profile Service Application Proxy, filter the ULS log to (category = Topology and Message contains = WcfSendRequest). 


03/08/2010 06:05:01.23         OWSTIMER.EXE (0x0FEC)      0x1134    SharePoint Foundation           Topology e5mc       Medium  WcfSendRequest: RemoteAddress: ‘http://servicesfarm:32843/fe60ff7b10af4828a2b76ca61ee38da6/ProfilePropertyService.svc’ Channel: ‘Microsoft.Office.Server.UserProfiles.IProfilePropertyService’ Action: ‘http://Microsoft.Office.Server.UserProfiles/GetProfileProperties’ MessageId: ‘urn:uuid:6868c5bd-a277-4593-ba77-4821840c713f’           



03/08/2010 06:30:07.16         OWSTIMER.EXE (0x0FEC)      0x0A60    SharePoint Foundation           Topology e5mc       Medium  WcfSendRequest: RemoteAddress: ‘http://servicesfarm:32843/fe60ff7b10af4828a2b76ca61ee38da6/ProfileDBCacheService.svc’ Channel: ‘Microsoft.Office.Server.UserProfiles.IProfileDBCacheService’ Action: ‘http://Microsoft.Office.Server.UserProfiles/GetUserData’ MessageId: ‘urn:uuid:cd65949f-cccd-425c-8c43-de26e4db9c79’             ffbe7cb1-0db1-4966-8196-f533c54eaccf


This is ideal for troubleshooting in that you can see the URI specified.  Also, this is a valid first step to validate were successfully reaching the service application instance.   This could also be coupled with Netmon and\or Fiddler to get a complete picture.


 




Application address refresh timer job


Again, the Application Address refresh timer job executes on consumer farm and connects to remote Services farm’s topology service.  It fetches changes (Added\Removed URI’s).   In the following example, the consumer topology component is fetching the latest changes for one published service application.   In this example, no updated changes are discovered.


03/08/2010 14:32:16.48         OWSTIMER.EXE (0x0FEC)      0x1200    SharePoint Foundation           Logging Correlation Data       xmnv       Medium                Name=Timer Job job-spconnectedserviceapplication-addressesrefresh             5af1cadb-02f8-4522-a6ab-a5451a738e26



03/08/2010 14:32:15.47         OWSTIMER.EXE (0x0FEC)      0x0AD4   SharePoint Foundation           Timer      5utp         Verbose   Scheduled timer job Application Addresses Refresh Job, id {879484E3-BFEB-436E-9FC1-B26C810BCA29} at 08 Mar 2010 14:32:16 -0800 (now is 08 Mar 2010 14:32:15 -0800)               



03/08/2010 14:32:16.48         OWSTIMER.EXE (0x0FEC)      0x1200    SharePoint Foundation           Topology e5mc       Medium  WcfSendRequest: RemoteAddress: ‘https://servicesfarm:32844/Topology/topology.svc’ Channel: ‘Microsoft.SharePoint.ITopologyWebServiceApplication’ Action: ‘http://tempuri.org/ITopologyWebServiceApplication/GetEndPoints’ MessageId: ‘urn:uuid:282a3a03-4a87-4d81-9fb0-be529953cdf6’       5af1cadb-02f8-4522-a6ab-a5451a738e26



03/08/2010 14:32:16.48         OWSTIMER.EXE (0x0FEC)      0x1200    SharePoint Foundation           Monitoring              nasq        Verbose   Entering monitored scope (ExecuteWcfOperation:http://tempuri.org/ITopologyWebServiceApplication/GetEndPoints)              5af1cadb-02f8-4522-a6ab-a5451a738e26



03/08/2010 14:32:16.53         OWSTIMER.EXE (0x0FEC)      0x1200    SharePoint Foundation           Topology 3ls4         Verbose   Application addresses for connected application: 46ad8378-690c-4568-b8d8-2485b1b89c1b are up-to-date             5af1cadb-02f8-4522-a6ab-a5451a738e26



03/08/2010 14:32:16.53         OWSTIMER.EXE (0x0FEC)      0x1200    SharePoint Foundation           Monitoring              b4ly         Verbose   Leaving Monitored Scope (ExecuteWcfOperation:http://tempuri.org/ITopologyWebServiceApplication/GetEndPoints). Execution Time=49.8323110898173                5af1cadb-02f8-4522-a6ab-a5451a738e26



03/08/2010 14:32:17.31         OWSTIMER.EXE (0x0FEC)      0x1200    SharePoint Foundation           Monitoring              b4ly         Medium  Leaving Monitored Scope (Timer Job job-spconnectedserviceapplication-addressesrefresh). Execution Time=830.343800678578             5af1cadb-02f8-4522-a6ab-a5451a738e26


 



-Russ Maxwell, MSFT


Comments (3)

  1. Jake says:

    What factors determine whether one should have a single farm or multiple farms? What are the guidelines when making this determination? I assume that even if you start single farm you can always expand to multifarm. But when would you do multifarm from the outset? What situations warrant multiple farms?

  2. Servé Hermans says:

    Excellent post. I have tried to add my two cents. Hope you would be able to have a look and verify the contents? Thanks!

    hermansberghem.blogspot.com/…/sp2010-do-we-need-to-load-balance.html

  3. Daniel says:

    The Uri https://ServerName:32844/Topology/topology.svc requires an NLB address for high availability to be consumed by another farm?

    Example: https://NLB_URL:32844/Topology/topology.svc

Skip to main content