Microsoft SharePoint 2010: 設定跨伺服器陣列的服務
您可以設定 SharePoint 跨越伺服器陣列界限進行通訊,藉此共用和使用其他伺服器陣列的服務。
Shannon Bray
Microsoft 在 SharePoint 提供和取用服務的方式上有了一些改進。 在 SharePoint 2007 中,服務是在所謂的共用服務提供者 (SSP) 中供您使用。 雖然 SSP 比起 SharePoint 2003 是邁進了一大步,但仍舊有些挑戰。
SharePoint 2007 架構的主要問題出在它是一種非全有即全無的設定。 Web 應用程式都是繫結到特定的 SSP,而無法有選擇性地取用服務。 比方說,若是 SSP 同時設定了 Search Service 和 Excel Service,那麼任何 SharePoint Web 應用程式要是取用企業搜尋,也得存取 Excel Services。
SSP 架構也不可擴充。 您無法使用相同的 SSP 基礎結構建立自己的服務。 最後,也是最重要的是,在 SharePoint 2007 中很難跨伺服器陣列設定服務。而 SharePoint 2010 中的新服務架構則解決了所有這些問題。
了解服務應用程式架構
在深入探討如何讓服務跨 SharePoint 伺服器陣列界限進行通訊之前,重要的是先了解促成此目標的元件和服務。 以下是伺服器應用程式架構的一些重要特性:
- 您可以「分項」取用服務
- 服務架構可擴充
- SharePoint Foundation 上支援服務
- 您可以向外擴充服務
- 服務可具彈性/備援
- 您可以聯盟服務
不像 SharePoint 2007 中的服務,您現在能夠決定哪些 SharePoint Web 應用程式可以取用您的服務。 您不再侷限於內建 SSP, 而可以挑選適當的架構。
服務應用程式架構現在可以擴充,表示您可以建置自己的自訂服務。 如此可省下大量的時間、金錢和資源,因為您可以部署自訂解決方案,跨越網站集合甚或是 SharePoint Web 應用程式運作。
SharePoint 2010 並沒有提供任何 SharePoint Foundation 的現成服務,但是有基礎結構可以支援服務。 您可以建置自己的服務,並在 SharePoint Foundation 中使用它們。 全新的服務應用程式架構可讓您將負載分散於數部伺服器,使您的設計得以應付適當的負載。
改造最徹底的服務之一是企業搜尋。 在 SharePoint 2007 中,索引伺服器是單一失敗點。 而在 SharePoint 2010 中,您可以讓搜尋編目服務橫跨數部伺服器。 當其中一部失敗時,有備援可以讓系統繼續如預期運作。
您現在也可以跨越伺服器陣列界限來共用服務。 如此可讓您將要共用的服務整合到單一伺服器陣列,同時將服務提供給數名取用者。
了解關鍵概念
「服務應用程式」一詞的濫用, 使得人們難以了解元件所在以及它們的作用。 為了真正掌握實際的運作方式,釐清以下用詞很重要:
服務: 部署到伺服器陣列內之伺服器的應用程式二進位碼檔案。
服務機器執行個體: 在伺服器上執行之服務的實際執行個體。
服務應用程式: 包含服務應用程式資訊和資料庫連接字串等服務設定和管理的邏輯元件。
服務應用程式 Proxy: 服務取用者與服務和負載平衡器進行通訊所用的介面,以便得知要聯繫哪部伺服器,以及如何取用實際的服務。 要特別注意的是,服務應用程式 Proxy 並非 Web 服務或 Windows Communication Foundation (WCF) Proxy。
服務取用者: 取用服務的任何應用程式或服務。
服務 Proxy 群組: 與特定 Web 應用程式相關聯的服務應用程式群組。
部署服務的方法有好幾種,包括設定精靈、管理中心或 Windows PowerShell。 設定精靈會以預設值來設定許多服務, 因此您不應該將此用於生產環境。 有很多服務都應該手動設定以確保順利運作。
在管理中心內,有幾項服務可以透過填入與該些服務相關聯的欄位的方式來設定。 雖然使用「伺服器陣列設定精靈」具有稍高的控制能力,但是大多數 SharePoint 專業人員都選擇使用 Windows PowerShell。
Windows PowerShell 可讓您全權掌控您的環境,但是在設定許多服務應用程式時可能需要一點技巧。 若要詳細了解如何使用 Windows PowerShell 佈建各種 SharePoint 服務,請參考 Shannon Bray 與 Gary Lapointe 所著的《Automating SharePoint 2010 with Windows PowerShell 2.0》(Wiley,2011 年)。
當您設定 SharePoint 伺服器陣列時,有兩項服務會自動建立。 它們是服務要如何運作的重要元件, 這些服務包括:
- 應用程式探索和負載平衡器服務應用程式
- Security Token Service (STS) 應用程式
服務應用程式必須公開 Web 端點,因為其間所有的通訊都是在 HTTPS 上進行。 另外,還有一點也很重要的是,服務應用程式是在 TCP 連接埠 32843 和 32844 通訊。自訂服務應用程式一般則是使用連接埠 32845。
了解服務聯盟的運作方式
對服務聯盟的方式有了充分的了解之後,讓我們來看一下支援聯盟的服務:
- Search
- User Profiles
- Managed Metadata
- Business Connectivity Services (BCS)
- Secure Store
- Web Analytics
有其他幾項服務是跨越 WAN 支援, 包括 Search、Managed Metadata、Business Data Connectivity、User Profile 和 Secure Store。 雖然這些服務都有受到支援,但只建議使用 Search 和 Managed Metadata。
在 WAN 環境內,Search 在編目時會增加延遲。 BCS 第一次叫用時在資料快取之前會遇到效能緩慢的情況。 User Profile Service 有使用者設定檔複寫引擎,因此不建議跨越 WAN 操作。 應用程式使用 Secure Store 時會產生延遲。
範例伺服器陣列
在本例中,我們要建立兩個伺服器陣列。 其中一個將裝載企業服務;另一個裝載內容 Web 應用程式。 這兩個我們都會從頭開始建立,並且會略述每個步驟,讓您了解如何在任一種環境內聯盟服務。
這兩個伺服器陣列都將位於相同網域內,但是也可以輕易地跨網域建置。 這些範例我們都會使用相同的網域,因此您可以建立含四部伺服器的範例: TechED-AD、TechED-SQL、TechEd-Services 和 TechEd-SP。
首先在 Active Directory 中建立適當帳戶, 包括如下: spFarm、spServices、spContent、spCrawl、spUPS 和 spC2WTS。 要加速此程序,您可以使用 Windows PowerShell 從我們的其中一個 SharePoint 伺服器陣列來新增帳戶 (詳情請參閱**[圖 1]**)。 要特別注意的是,我們會在受管理的服務帳戶組織單位 (OU) 內建立這些帳戶,因此若是您開始並不是使用 Windows Server 2008 R2,就需要在 [圖 1] 中的指令碼內變更 CN 位置。
[圖 1] 新增 SharePoint 帳戶至 Active Directory。
$domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SharePoint Services") $objUser.Put("sAMAccountName","spServices") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo() $domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SharePoint Content") $objUser.Put("sAMAccountName","spContent") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo() $domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SharePoint Search Crawl") $objUser.Put("sAMAccountName","spCrawl") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo() $domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SharePoint User Profile Services Sync") $objUser.Put("sAMAccountName","spUPS") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo() $domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SharePoint C2WTS") $objUser.Put("sAMAccountName","spC2WTS") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo() $domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SharePoint Farm") $objUser.Put("sAMAccountName","spFarm") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo()
設定好帳戶之後,我們要把重點放在企業服務環境上。 就此範例,我們要將伺服器陣列設定為只包含支援聯盟並且可迅速佈建的服務 (Managed Metadata、BCS 和 Secure Store)。 為了建立企業服務環境,我們要借助 Windows PowerShell 來完成吃重的工作。 這一點很重要,因為它可確保一致性,並且應該可以讓您處於已知狀態。 [圖 2] 將建置伺服器陣列, 而我們等一下馬上就會佈建該些服務。
用於設定取用者伺服器陣列的指令碼,類似於 [圖 3] 中所示。
[圖 2] 建置企業伺服器陣列。
Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0 # Settings $databaseServer = "TECHED-SQL" $configDatabase = "Enterprise_Farm_Config" $adminContentDB = "Enterprise_Farm_Content_Admin" $passphrase = "pass@word1" $farmAccountName = "TECHED\spfarm" $farmAccount = Get-Credential $farmAccountName $passphrase = (ConvertTo-SecureString $passphrase -AsPlainText -force) #will error, but fix the regkey... psconfig.exe -cmd upgrade Write-Host "Creating Configuration Database and Central Admin Content Database..." New-SPConfigurationDatabase -DatabaseServer $databaseServer -DatabaseName $configDatabase ` -AdministrationContentDatabaseName $adminContentDB ` -Passphrase $passphrase -FarmCredentials $farmAccount $spfarm = Get-SPFarm -ErrorAction SilentlyContinue -ErrorVariable err if ($spfarm -eq $null -or $err) { throw "Unable to verify farm creation." } Write-Host "ACLing SharePoint Resources..." Initialize-SPResourceSecurity Write-Host "Installing Services ..." Install-SPService Write-Host "Installing Features..." Install-SPFeature -AllExistingFeatures Write-Host "Creating Central Administration..." New-SPCentralAdministration -Port 2010 -WindowsAuthProvider NTLM Write-Host "Installing Help..." Install-SPHelpCollection -All Write-Host "Installing Application Content..." Install-SPApplicationContent Write-Host "Enterprise Farm Creation Complete!"
[圖 3] 建置取用者伺服器陣列。
Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0 # Settings $databaseServer = "TECHED-SQL" $configDatabase = "Consumer_Farm_Config" $adminContentDB = "Consumer_Farm_Content_Admin" $passphrase = "pass@word1" $farmAccountName = "TECHED\spfarm" $farmAccount = Get-Credential $farmAccountName $passphrase = (ConvertTo-SecureString $passphrase -AsPlainText -force) #will error, but fix the regkey... psconfig.exe -cmd upgrade Write-Host "Creating Configuration Database and Central Admin Content Database..." New-SPConfigurationDatabase -DatabaseServer $databaseServer -DatabaseName $configDatabase ` -AdministrationContentDatabaseName $adminContentDB ` -Passphrase $passphrase -FarmCredentials $farmAccount $spfarm = Get-SPFarm -ErrorAction SilentlyContinue -ErrorVariable err if ($spfarm -eq $null -or $err) { throw "Unable to verify farm creation." } Write-Host "ACLing SharePoint Resources..." Initialize-SPResourceSecurity Write-Host "Installing Services ..." Install-SPService Write-Host "Installing Features..." Install-SPFeature -AllExistingFeatures Write-Host "Creating Central Administration..." New-SPCentralAdministration -Port 2010 -WindowsAuthProvider NTLM Write-Host "Installing Help..." Install-SPHelpCollection -All Write-Host "Installing Application Content..." Install-SPApplicationContent Write-Host "Consumer Farm Creation Complete!"
佈建企業服務環境
您現在可以建立幾個打算與其他伺服器陣列共用的服務。 前面有提到,您可以聯盟六項服務。 在這裡先建置其中的幾個,這樣才有東西可以建置,如 [圖 4] 所示。
[圖 4] 佈建企業服務環境。
Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0 # App Pools $saAppPoolName = "SharePoint Web Services Default" $saAppPoolUserName = "TECHED\spservices" # Service Application and DB names $stateName = "Enterprise Farm State Service" $stateDBName = "Enterprise_Farm_StateService" $usageName = "Enterprise Farm Usage and Health Data Collection Service" $usageDBName = "Enterprise_Farm_Usage" # Create Managed Accounts and Application Pools # Service Apps Write-Host "Please supply the password for the $saAppPoolUserName Account..." $appPoolCred = Get-Credential $saAppPoolUserName $saAppPoolAccount = New-SPManagedAccount -Credential $appPoolCred $saAppPool = New-SPServiceApplicationPool -Name $saAppPoolName -Account $saAppPoolAccount # Create State Service Application and Proxy, and add to default proxy group Write-Host "Creating $stateName Application and Proxy..." $stateDB = New-SPStateServiceDatabase -Name $stateDBName $state = New-SPStateServiceApplication -Name $stateName -Database $stateDB New-SPStateServiceApplicationProxy -Name "$stateName Proxy" -ServiceApplication $state -DefaultProxyGroup # Setup the Usage Service App Write-Host "Creating $usageName Application and Proxy..." $serviceInstance = Get-SPUsageService New-SPUsageApplication -Name $usageName -DatabaseName $usageDBName -UsageService $serviceInstance # app pool $saAppPoolName = "SharePoint Web Services Default" $appPoolUserName = "TECHED\spServices" # Gets app pool or quits Write-Host "Getting Application Pool..." $saAppPool = Get-SPServiceApplicationPool -Identity $saAppPoolName -EA 0 if($saAppPool -eq $null) { Write-Host "Cannot find the Application Pool $appPoolName, please ensure it exists before continuing." Exit -1 } # MMS specifics $mmsInstanceName = "MetadataWebServiceInstance" $mmsName = "Enterprise Farm Managed Metadata Service" $mmsDBName = "Enterprise_Farm_Managed_Metadata" # Sets up Managed Metadata service instance & service app and proxy Write-Host "Creating $mmsName Application & proxy..." $mms = New-SPMetadataServiceApplication -Name $mmsName -ApplicationPool $saAppPoolName -DatabaseName $mmsDBName $proxy = New-SPMetadataServiceApplicationProxy -Name "$mmsName Proxy" -ServiceApplication $mms -DefaultProxyGroup Write-Host "Starting the $mmsInstanceName..." Get-SPServiceInstance | where{$_.GetType().Name -eq $mmsInstanceName} | Start-SPServiceInstance Write-Host "Enterprise MMS Complete!" # BDC specifics $bdcInstanceName = "Business Data Connectivity Service" $bdcName = "Enterprise Farm Business Data Connectivity Service" $bdcDBName = "Enterprise_Farm_BDC" # Sets up Business Data Connectivity Service Application and Proxy and Service Instance Write-Host "Creating $bdcInstanceName Application and Proxy..." $bdc = New-SPBusinessDataCatalogServiceApplication -Name $bdcName -ApplicationPool $saAppPoolName -DatabaseName $bdcDBName Write-Host "Starting the $bdcInstanceName Instance..." Get-SPServiceInstance | where-object {$_.TypeName -eq $bdcInstanceName} | Start-SPServiceInstance Write-Host "Enterprise BDC Complete!" # SSS Specifics $sssInstanceName = "Secure Store Service" $serverName = "TechED-Services" $sssName = "Enterprise Farm Secure Store Service" $sssDBName = "Enterprise_Farm_SecureStore" # Sets up Secure Store Service Application & Proxy and Service Instance Write-Host "Creating $sssName Application & Proxy..." $sss = New-SPSecureStoreServiceApplication -Name $sssName -ApplicationPool $saAppPoolName -DatabaseName $sssDBName -auditingEnabled:$true -auditlogmaxsize 30 -Sharing:$false $proxy = New-SPSecureStoreServiceApplicationProxy -Name "$sssName Proxy" -ServiceApplication $sss -DefaultProxyGroup Write-Host "Starting the $sssInstanceName Instance..." $sssInstance = Get-SPServiceInstance | where-object{$_.TypeName -eq "Secure Store Service" -and $_.Server.Address -eq $serverName} | Start-SPServiceInstance Write-Host "Enterprise SSS Complete!"
佈建取用環境
對於發佈伺服器陣列,所有困難的工作都已完成。 我們現在要把重點放在要使用企業服務的伺服器陣列上。 您可以在這裡建立任何服務, 但最重要的是,了解您可以取用其他伺服器陣列的服務,並仰賴該伺服器陣列提供該些資源。
在取用者伺服器陣列中,您也會佈建 SharePoint 內容 Web 應用程式,這個應用程式可以用來示範企業服務,如 [圖 5] 所示。
[圖 5] 佈建 SharePoint 內容。
# App Pools $saAppPoolName = "SharePoint Web Services Default" $saAppPoolUserName = "TECHED\spservices" $waAppPoolName = "SharePoint Content" $waAppPoolUserName = "TECHED\spcontent" # Web App details $mainURL = "http://teched-sp" $webAppName = "TechED Consumer" $contentDBName = "Consumer_Farm_Content_Web_Application" # Root Site Collection details $ownerEmail = "administrator@teched.com" $ownerAlias = "TECHED\administrator" # Web app Write-Host "Please supply the password for the $waAppPoolUserName Account..." $appPoolCred = Get-Credential $waAppPoolUserName $waAppPoolAccount = New-SPManagedAccount -Credential $appPoolCred <# Create a new Web App using Claims (Windows (NTLM)) #> $authProvider = New-SPAuthenticationProvider $webApp = New-SPWebApplication -ApplicationPool $waAppPoolName -ApplicationPoolAccount $waAppPoolAccount -Name $webAppName -Port 80 -AuthenticationProvider $authProvider -DatabaseName $contentDBName # Set sensible content db limits Set-SPContentDatabase $contentDBName -MaxSiteCount 50 -WarningSiteCount 30 <# Create Site Collection at root #> New-SPSite -Url $mainURL -owneralias $ownerAlias -ownerEmail $ownerEmail Write-Host "WebApp Complete!"
設定憑證
伺服器陣列現已完成。 接下來,我們要發佈要與取用者共用的企業服務。 這可以用幾個步驟來完成:
- 在企業伺服器陣列上建立憑證
- 在取用者伺服器陣列上建立憑證
- 交換憑證
- 在企業伺服器陣列上匯入憑證
- 在取用者伺服器陣列上匯入憑證
- 在企業伺服器陣列上建立憑證
首先,您需要從企業伺服器陣列匯出根憑證。 要這麼做,請建立匯出憑證的路徑 (請參閱 [圖 6])。 確認路徑之後,使用 Get-SPCertificateAuthority Cmdlet 匯出您的伺服器陣列的憑證。
[圖 6] 建立憑證的路徑。
# Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0 $path = "C:\Certs" # Test and Create Path If ((test-path $path) -eq $false) { [IO.Directory]::CreateDirectory("$path") } # Export Cert $rootCert = (Get-SPCertificateAuthority).RootCertificate $rootCert.Export("Cert") | Set-Content "C:\Certs\EnterpriseServicesRootCert.cer" -Encoding byte
在取用者伺服器陣列上建立憑證
在取用者伺服器陣列上,不單是根憑證,另外也需要匯出 STS 憑證 (請參閱 [圖 7])。 後者是使用 Get-SPSecurityTokenServiceConfig Cmdlet 匯出。
為了簡化這個程序,您也可以取得取用者伺服器陣列的伺服器陣列 ID,然後建立一個文字檔。 再將伺服器陣列 ID 新增至企業伺服器陣列上的發佈權限,以便存取服務。
[圖 7] 匯出 STS 憑證。
# Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0 $publisher = "TECHED-Services" $consumer = "TECHED-SP" $path = "C:\Certs" # Test and Create Path If ((test-path $path) -eq $false) { [IO.Directory]::CreateDirectory("$path") } # Run the following to export the necessary certificates on the consumer farm to c:\temp on the server: $rootCert = (Get-SPCertificateAuthority).RootCertificate $rootCert.Export("Cert") | Set-Content "C:\Certs\IntranetRootCert.cer" -Encoding byte $stsCert = (Get-SPSecurityTokenServiceConfig).LocalLoginProvider.SigningCertificate $stsCert.Export("Cert") | Set-Content "C:\Certs\IntranetSTSCert.cer" -Encoding byte #On the consumer farm, run the following command to get the id of the consumer farm: $farmID = (Get-SPFarm).Id New-Item C:\Certs\IntranetConsumerFarmID.txt -type file -force -value "$farmID" #On the consumer farm, run the following command to copy the IntranetConsumerFarmID.txt to the publisher farm Copy-Item \\$consumer\c$\Certs\IntranetConsumerFarmID.txt \\$publisher\c$\Certs
交換憑證
您這樣就有了兩邊的伺服器陣列所需的憑證。 使用 Copy-Item Cmdlet 取得 EnterpriseServicesRootCert.cer,並將它複製到取用者伺服器陣列,然後將 IntranetRootCert 和 IntranetSTSCert 憑證複製到企業伺服器陣列,如此處所示:
$publisher = "TECHED-Services" $cconsumer = "TECHED-SP" # Copy to Consumer Copy-Item \\$publisher\c$\Certs\EnterpriseServicesRootCert.cer \\$cconsumer\c$\Certs Copy-Item \\$cconsumer\c$\Certs\IntranetRootCert.cer \\$publisher\c$\Certs Copy-Item \\$cconsumer\c$\Certs\IntranetSTSCert.cer \\$publisher\c$\Certs
發行者憑證匯入
您現在應該在企業伺服器陣列上匯入兩個內部網路憑證,並建立信任。 您必須使用伺服器陣列 ID 來設定權限。 請使用您在前幾個步驟建立的文字檔,好讓過程能順利進行,然後在發行者伺服器陣列上執行如 [圖 8] 所示的命令,來建立與取用者伺服器陣列之間的信任關係。
[圖 8] 建立與取用者伺服器陣列的信任關係。
$trustCert = Get-PfxCertificate "C:\certs\IntranetRootCert.cer" New-SPTrustedRootAuthority Intranet -Certificate $trustCert $stsCert = Get-PfxCertificate "c:\certs\IntranetSTSCert.cer" New-SPTrustedServiceTokenIssuer Intranet -Certificate $stsCert $farmID = Get-Content C:\Certs\IntranetConsumerFarmID.txt $security = Get-SPTopologyServiceApplication | Get-SPServiceApplicationSecurity $claimProvider = (Get-SPClaimProvider System).ClaimProvider $principal = New-SPClaimsPrincipal -ClaimType "https://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmID Grant-SPObjectSecurity -Identity $security -Principal $principal -Rights "Full Control" Get-SPTopologyServiceApplication | Set-SPServiceApplicationSecurity -ObjectSecurity $security
取用者憑證匯入
與憑證相關還有最後一個步驟, 那就是在取用者伺服器陣列上,您必須執行以下指令碼來匯入 EnterpriseServicesRootCert,並在取用者伺服器陣列上執行這些命令,來建立與發行者伺服器陣列之間的信任關係。
$trustCert = Get-PfxCertificate "C:\Certs\EnterpriseServicesRootCert.cer" New-SPTrustedRootAuthority EnterpriseServices -Certificate $trustCert
發佈服務
我們建立了兩個伺服器陣列、在取用者伺服器陣列上從企業伺服器陣列匯入了根憑證、將根憑證與 STS 憑證從取用者伺服器陣列匯入到企業伺服器陣列,並且用了取用者伺服器陣列 ID 在兩個伺服器陣列之間建立信任。 現在我們要探討一下管理中心及發佈服務。
下一步是檢閱服務應用程式。 找出您要共用的六項服務的其中一項,將它強調顯示後按一下功能區中的 [發佈] 按鈕。 您會看到一個對話方塊,讓您選擇要如何發佈服務。 將 [連線類型] 變更為 [HTTPS],然後勾選 [將此服務應用程式發佈至其他伺服器陣列]。 請記下發行者 URL。 使用它的方法有好幾種。
取用服務
SharePoint 提供您幾種不同的途徑使用取用者服務。 首先,強調顯示功能區中的 [連線] 按鈕。 按下功能區中的 [連線] 按紐後,您會看到 [連線至遠端服務應用程式] 對話方塊。 取得上節的完整 URL,並將它貼入文字方塊中。 按一下 [確定] 後您會看到一個特定的服務。 這是經過特別識別的服務。 您也可以直接使用 HTTPS 位址來查看所有已發佈的服務。
如此可幫助確認您的憑證已正確設定。 最後,請指定要建立的連線類型。 如果發行者共用的幾種服務應用程式都是相同的類型,這麼做蠻有幫助的。 請特別注意您使用的是 HTTPS 路徑, 因此最終的結果只會看到原始指定類型的服務應用程式。
疑難排解聯盟服務方案
有好幾件事可能會影響您的聯盟服務。 網路防火牆和基礎結構實作是需要考量的其中幾件事。 如果伺服器陣列位於不同的網域,那麼 User Profile Service 應用程式會要求兩個網域必須彼此信任。
要使 Business Data Connectivity 和 Secure Store Service 應用程式管理功能能夠從取用伺服器陣列運作,發行者伺服器陣列的網域必須信任取用伺服器陣列的網域。 其他跨伺服器陣列的服務應用程式,在網域間不需要信任就可以運作。 除了檢查網域信任外,您還必須確認以下事項:
- 確保網域信任
- 確保取用者具有使用拓撲服務的權限
- 檢查 ACL
- FQDN
- 憑證
在接下來的範例,我們要嘗試從取用者伺服器陣列存取其中一項服務。 注意一下「網站拒絕顯示此網頁」的錯誤。您可以瀏覽企業伺服器陣列,並且允許取用者伺服器陣列使用該特定服務來修正此問題。
若要設定取用者伺服器陣列權限,請強調顯示要設定的服務應用程式,然後按一下 [權限]。 您會取得取用者伺服器陣列的伺服器陣列 ID。 如果您還記得的話,您之前有建立一個內含取用者伺服器陣列 ID 的文字檔, 並且已把它傳輸到取用伺服器陣列。 請在 c:\certs 找出該檔案。 將伺服器陣列 ID 貼入文字方塊中,然後按一下 [新增]。 接著勾選適當的權限。 現在就可以開始測試服務了。
測試聯盟服務方案
您應該能夠從取用者伺服器陣列與服務互動。 在這個實驗室環境內,您將使用四個 Hyper-V 映像。 其中兩個映像是用於裝載環境,另外兩個用於取用環境。 您可以輕易擴充伺服器數目,但是基於示範環境上的硬體限制,最簡單的方式是將一部伺服器用於 Active Directory,然後在另一部上共用 SQL Server 和 SharePoint 2010 角色。
雖然沒有嚴格規定要按部就班地照這些步驟來進行,不過為了確保一致的結果,還是建議您這麼做。 關於網路設定已超出本文的範圍,不過您可以在我的部落格上找到相關資訊。
每部伺服器是以下列設定值來設定:
伺服器名稱: TechED-AD IP 位址 192.168.110.1
網域: TechED.local 樹系操作等級 Windows Server 2008 R2
管理密碼: pass@word1
伺服器名稱: TechED-SQL IP 位址 192.168.110.2
網域: TechED.local 樹系操作等級 Windows Server 2008 R2
管理密碼: pass@word1
伺服器名稱: TechED-Serives IP 位址 192.168.110.11
網域: TechED.local 樹系操作等級 Windows Server 2008 R2
管理密碼: pass@word1
伺服器名稱: TechED-SP IP 位址 192.168.110.12
網域: TechED.local 樹系操作等級 Windows Server 2008 R2
管理密碼: pass@word1
將四台機器建置妥當後,在網域控制站 (DC) 上建立一個新的網域樹系。 此例的網域為 TechED.local。 請使用 DCPromo 公用程式將伺服器升階到 DC。 使用先前記下的設定將適當的 IP 位址指定給網路卡,並適當地為電腦重新命名。
建立 DC 並設定好其 IP 位址之後,您現在就可以加入要裝載 SQL Server 和 SharePoint 2010 的伺服器。在每部裝載 SQL Server 和 SharePoint 的伺服器上啟用 Windows PowerShell 整合式指令碼環境 (或 ISE) 功能。 如此管理 Windows PowerShell 起來會更容易得多。
現在在 TechED-SQL 伺服器上安裝 SQL Server 2008 R2 (請參閱 [圖 9])。 您應該在主機上下載適當的 .iso,以便使用 [媒體] | [光碟機] | [插入光碟片] 將它附加到虛擬機器。
[圖 9] 安裝 SQL Server。
# Set Exec Policy Set-ExecutionPolicy -executionPolicy Unrestricted # Add SQL Service Account to AD $domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SQL Service") $objUser.Put("sAMAccountName","sqlService") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo() # Install SQL Server with the following settings # Disable Firewall # # SQL Server Feature Installation # Check … # Database Engine Services, SQL Server Replication, Full-Text Search # Business Intelligence Development Studio # Management Tools - Complete # Microsoft Sync Framework # ----------------------------- # Default Instance # Use account above for all services # Select Windows Authentication Mode and click Add Current User # Complete Wizard
安裝好 TechED-SQL 之後,請只安裝 SharePoint 必要條件和二進位碼檔案, 而不要執行精靈。 在開始進行任何動作之前,應該先為全部四台機器建立快照集, 以防萬一。
Shannon Bray 是 SharePoint 推廣者兼 Microsoft 認證講師。 他目前受雇於 Planet Technologies,並擔任技術架構設計師一職,專門負責 Microsoft SharePoint。 Bray 擅長於使用 Microsoft 技術進行架構設計及方案開發。 他是 Colorado SharePoint User Group 的總裁,並且曾在 Microsoft TechReady 與 Tech·Ed 發表 SharePoint 演說。 Bray 編寫過幾段 SharePoint 影片訓練系列,目前正合著《Automating Microsoft SharePoint 2010 Administration with Windows PowerShell 2.0》(Wiley,2011 年) 一書。