在单台服务器上安装了 SharePoint Server 2013,并且创建了具有默认搜索拓扑的 Search Service 应用程序。在默认搜索拓扑中,所有搜索组件都位于承载管理中心的服务器上。SharePoint 2013中的搜索具备了非常强大的功能,但所消耗的资源也是巨大的。所以,在具备硬件条件下,合理的规划SharePoint 2013搜索拓扑结构是非常有必要的。
要规划搜索的拓扑结构,那么有必要先了解SharePoint Farm的拓扑结构。
规划SharePoint搜索拓扑结构
下图是我去年实施的一个SharePoint Farm,将Database和SharePoint的分离:
在默认搜索拓扑中,所有搜索组件都位于承载管理中心的服务器上,进入到SharePoint Central Administration可以一看究竟,如下图默认的Search Application Topology:
如今需要在此基础上配置搜索,考虑到SharePoint 2013搜索需要占用大量的资源,故再增加一台APP服务器,用来承载搜索和其他Service Application角色,拓扑结构如下所示:
其中查询处理组件用来处理用户的请求,我将他部署在WFE服务器上,同时为了提高性能和效率,我也将索引组件部署在了WFE服务器上。
由于新增加的APP 服务器具备非常强劲的性能,将承载如下搜索组件
- 分析处理组件
- 内容处理组件
- 爬网组件
- 搜索管理组件
更改默认搜索拓扑
1.准备工作
SharePoint 2013更改默认的搜索拓扑必须使用PowerShell,在Central Administration中并没有提供界面。
首先你执行PowerShell(即登陆OS的账号)必须是如下两者之一:
- 是 Farm Administrators 组的成员
- 是 Search Service Application的管理员
并且确保没有启动任何爬网并且搜索索引为空。
详情:https://technet.microsoft.com/zh-CN/library/jj862356.aspx#begin
2.移动搜索组件
如果要将搜索组件从一台服务器移到另一台服务器,则先向搜索拓扑添加新的搜索组件,然后再删除旧的搜索组件。
具体的操作步骤如下:
- 克隆活动搜索拓扑。
- 将新的搜索组件添加到你最终希望其托管此搜索组件的服务器。
- 激活搜索拓扑。此拓扑将具有一个不必要的搜索组件。
- 确保当前活动拓扑运行正常。在"管理中心"的"搜索管理"页中查看搜索拓扑的状态或运行 Windows PowerShell cmdlet Get-SPEnterpriseSearchStatus。
- 再次克隆搜索拓扑。
- 删除不必要的搜索组件。
- 再次激活搜索拓扑。
完整的PowerShell如下:
Add-PSSnapin Microsoft.SharePoint.PowerShell # 1. 克隆一个激活的搜索拓扑 $ssa=Get-SPEnterpriseSearchServiceApplication $active=Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active $clone=New-SPEnterpriseSearchTopology -SearchApplication $ssa -Clone -SearchTopology $active #此时新的搜索拓扑的状态为未激活 # 2.将新的搜索组件添加到你最终希望其托管此搜索组件的服务器 $app01 = Get-SPEnterpriseSearchServiceInstance -Identity "Your APP Server Name" #New-SPEnterpriseSearchAdminComponent -SearchTopology $clone -SearchServiceInstance $app01# #New-SPEnterpriseSearchCrawlComponent -SearchTopology $clone -SearchServiceInstance $app01# #New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $clone -SearchServiceInstance $app01# New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $clone -SearchServiceInstance $app01 # 3.启动APP Server上的Search Service Instance Start-SPEnterpriseSearchServiceInstance -Identity $app01 #4.激活搜索拓扑 Set-SPEnterpriseSearchTopology -Identity $clone #5.因为无法在当前搜索拓扑状态为Active下进行后续操作,故再次克隆搜索拓扑 $ssa=Get-SPEnterpriseSearchServiceApplication $active=Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active $clone=New-SPEnterpriseSearchTopology -SearchApplication $ssa -Clone -SearchTopology $active #6得到要被删除的组件Id $component=Get-SPEnterpriseSearchComponent -SearchTopology $clone -Identity "Your Component Name" $componentId=$component.ComponentId #7.移除搜索组件 Remove-SPEnterpriseSearchComponent -Identity $componentId.Guid -SearchTopology $clone -Confirm:$false #再次激活新创建的搜素拓扑 Set-SPEnterpriseSearchTopology -Identity $clone
可以使用如下PowerShell来添加搜索组件
- New-SPEnterpriseSearchAdminComponent
- New-SPEnterpriseSearchAnalyticsProcessingComponent
- New-SPEnterpriseSearchContentProcessingComponent
- New-SPEnterpriseSearchCrawlComponent
- New-SPEnterpriseSearchQueryProcessingComponent
执行完以上PowerShell脚本之后,即更改了默认的搜索拓扑,进入Central Administration一看究竟:
可以看出App Server承载了耗费资源的搜索组件,并且查询处理组件和索引组件在同一台Server上有利于性能的提升。
小结
配置完搜索拓扑之后,可以放心大胆的爬网了,具体可以参考这篇文章——