Развертывание SharePoint 2010: Шаг 2 – Сервисные приложения

Рубрика: SharePoint,Новое. Автор: Илья Рудь. Четверг 10 Мар 2011 в 12:00

hand-tools-list-importantПродолжаем конфигурировать SharePoint 2010, если вспомнить, то в предыдущей статье мы запустили сервисы, но не стали создавать сервисные приложения. Напомню, что большинству сервисов для работы необходимо наличие сервисного приложения, при создании которого вы получаете Application Pool в рамках которого работает сервисное приложение, в некоторых сервисах так же создаются базы данных SQL, хранящие данные сервиса. Если воспользоваться классической настройкой, то в Центре администрирования нужно проследовать по пути: CA -> Manage Service Application -> New. И далее выбрать интересующее сервисное приложение и ввести необходимые данные. (Рисунок 1)

 

1

 

Рисунок 1. Создание сервисного приложения в центре администрирования.

 

Данные указываемые при создании сервисного приложения следующие:

 

1. Имя – ну имя и имя, ни на что кроме отображения не влияет

2. Пул. Использование существующего или создание нового пула приложений (Application Pool). Возможно два подхода, первый – создание каждого сервисного приложения в отдельном пуле, при данном способе вы получаете изоляцию процессов, возможность перезапускать каждый процесс независимо, задавать различные учетные записи для каждого процесса. Но при этом платитесь производительностью. Есть рекомендация говорящая о том, что на одном SharePoint сервере не должно выполняться больше десяти пулов приложений. А если учесть, что у нас впереди создание портала, который так  же можно вынести в отдельный пул, то делаем вывод о том, что пулами раскидываться не стоит. Поэтому переходим ко второму варианту, который МС рекомендует для маленьких ферм, а именно использование единственного пула для всех сервисных приложений. Для этого в Active Directory нужно создать учетную запись, от имени которой будет работать пул приложений. У меня данная учетная запись имеет имя ServicePool.

3. Прокси группа. Необходимость добавления в прокси группу (ProxyGroup). Опять же напоминаю, что для использования сервисного приложения вместе с ним необходимо создать прокси сервисного приложения (Service application proxy), такая точка подключения к нашему сервису. Впоследствии эти прокси мы объединим в группу и закрепим за веб-приложением нашего портала. У нас уже есть одна прокси группа Default, которая применяется к новым веб-приложениям, вот ее мы и задействуем.

4.Базы данных. Некоторые сервисные приложения, создают базы данных SQL, делают это те приложения, которым нужно хранить какие либо данные. (например: User Profile Synchronization Service, Managed Metadata Web Service). Поскольку SQL сервер в данной конфигурации один, то на нем расположены и базы данных сервисных приложений.

 

Но идти классическим путем и по порядку в админке создавать сервисные приложения достаточно  долго, я предлагаю слегка все ускорить и автоматизировать, используя скрипт написанный на PowerShell с использованием коммандлетов SharePoint 2010.

 

##----------------------------------------------------------------

Шаг 1. Объявляем переменные, которые будут содержать имена наших сервисных приложений. Единственное, что вам нужно здесь поменять, это переменную $databaseServerName , т.к она содержит имя сервера баз данных. Вы естественно  "alfa.itband.ru" замените на имя собственного сервера баз данных.

##----------------------------------------------------------------

$apppoolname = "ServicePool"
$accesssSAName = "Access Services"
$bcsSAName = "Business Data Connectivity Service"
$excelSAName = "Excel Services Application"
$metadataSAName = "Managed Metadata Web Service"
$performancePointSAName = "PerformancePoint Service"
$searchSAName = "SharePoint Server Search"
$stateSAName = "State Service"
$secureStoreSAName = "Secure Store Service"
$usageSAName = "Usage and Health Data Collection Service"
$userProfileSAName = "User Profile Synchronization Service"
$visioSAName = "Visio Graphics Service"
$WebAnalyticsSAName = "Web Analytics Service"
$WordAutomationSAName = "Word Automation Services"
$databaseServerName = "alfa.itband.ru"

##----------------------------------------------------------------

Шаг 2. Регистрируем в рамках текущей сессии PowerShell набор коммандлетов SharePoint 2010.  Нужно для того, что скрипт выполнялся не только в SharePoint 2010 Management Shell.

##----------------------------------------------------------------

Add-PSSnapin Microsoft.SharePoint.PowerShell

##----------------------------------------------------------------

Шаг 3.  Запрашиваем у запустившего скрипт учетные данные и на основе их создаем управляемую учетную запись. Далее создаем пул приложений, который будет стартовать от имени этой управляемой учетки. (ManagedAccount)  Формат ввода учетных данных должен быть типа “itband\ServicePool”

##----------------------------------------------------------------

$cred = Get-Credential
New-SPManagedAccount -Credential $cred >$null
$serviceAcc = Get-SPManagedAccount | where {$_.username -like $cred.UserName}
$UserName =  ($serviceAcc).UserName

New-SPServiceApplicationPool -Name $apppoolname  -Account $UserName >$null

##----------------------------------------------------------------

Шаг 4.  Собственно само действие – создание сервисных приложений и прокси с закреплением их прокси группе по-умолчанию. Так же в скрипт включена проверка запущены ли необходимые сервисы и если какой то сервис не запущен, производится его старт.

##----------------------------------------------------------------

Write-Host "Visio Graphics Service and Proxy..."

New-SPVisioServiceApplication -Name $visioSAName -ApplicationPool $apppoolname -AddToDefaultGroup >$null
Get-SPServiceInstance | where-object {$_.TypeName -eq "Visio Graphics Service"} | Start-SPServiceInstance > $null

Write-Host "Excel Services Application and Proxy..."

New-SPExcelServiceApplication -Name $excelSAName -ApplicationPool  $apppoolname -Default >$null
Get-SPServiceInstance | where-object {$_.TypeName -eq "Excel Calculation Services"} | Start-SPServiceInstance > $null

Write-Host "Creating Usage Service and Proxy..."
$serviceInstance = Get-SPUsageService
New-SPUsageApplication -Name $usageSAName -DatabaseServer $databaseServerName -DatabaseName "UsageDB" -UsageService $serviceInstance > $null

Write-Host "Creating Access Services and Proxy..."
New-SPAccessServiceApplication -Name $accesssSAName -ApplicationPool $apppoolname –Default > $null
Get-SPServiceInstance | where-object {$_.TypeName -eq "Access Database Service"} | Start-SPServiceInstance > $null

Write-Host "Creating BCS Service and Proxy..."
New-SPBusinessDataCatalogServiceApplication -Name $bcsSAName -ApplicationPool $apppoolname  -DatabaseServer $databaseServerName -DatabaseName "BusinessDataCatalogDB" > $null
Get-SPServiceInstance | where-object {$_.TypeName -eq "Business Data Connectivity Service"} | Start-SPServiceInstance > $null
 
 
Write-Host "Creating State Service and Proxy..."
New-SPStateServiceDatabase -Name "StateServiceDB" -DatabaseServer $databaseServerName | New-SPStateServiceApplication -Name $stateSAName | New-SPStateServiceApplicationProxy -Name "$stateSAName Proxy" -DefaultProxyGroup > $null
 
 
Write-Host "Creating Word Conversion Service and Proxy..."
New-SPWordConversionServiceApplication -Name $WordAutomationSAName -ApplicationPool $apppoolname -DatabaseServer $databaseServerName -DatabaseName "WordAutomationDB" -Default > $null
Get-SPServiceInstance | where-object {$_.TypeName -eq "Word Automation Services"} | Start-SPServiceInstance > $null
 
 
Write-Host "Creating Metadata Service and Proxy..."
New-SPMetadataServiceApplication -Name $metadataSAName -ApplicationPool $apppoolname -DatabaseServer $databaseServerName -DatabaseName "MetadataDB" > $null
New-SPMetadataServiceApplicationProxy -Name "$metadataSAName Proxy" -DefaultProxyGroup -ServiceApplication $metadataSAName > $null
Get-SPServiceInstance | where-object {$_.TypeName -eq "Managed Metadata Web Service"} | Start-SPServiceInstance > $null
 
Write-Host "Creating Performance Point Service and Proxy..."
New-SPPerformancePointServiceApplication -Name $performancePointSAName -ApplicationPool $apppoolname > $null
New-SPPerformancePointServiceApplicationProxy -Default -Name "$performancePointSAName Proxy" -ServiceApplication $performancePointSAName > $null
Get-SPServiceInstance | where-object {$_.TypeName -eq "PerformancePoint Service"} | Start-SPServiceInstance > $null

Write-Host "Creating User Profile Service and Proxy..."
$userProfileService = New-SPProfileServiceApplication -Name $userProfileSAName -ApplicationPool $AppPoolName -ProfileDBServer $databaseServerName -ProfileDBName "ProfileDB" -SocialDBServer $databaseServerName -SocialDBName "SocialDB" -ProfileSyncDBServer $databaseServerName -ProfileSyncDBName "SyncDB"
New-SPProfileServiceApplicationProxy -Name "$userProfileSAName Proxy" -ServiceApplication $userProfileService -DefaultProxyGroup > $null
Get-SPServiceInstance | where-object {$_.TypeName -eq "User Profile Service"} | Start-SPServiceInstance > $null

Write-Host "Creating Web Analytics Service and Proxy..."
$stagerSubscription = "<StagingDatabases><StagingDatabase ServerName='$databaseServerName' DatabaseName='StagerDB'/></StagingDatabases>"
$reportingSubscription = "<ReportingDatabases><ReportingDatabase ServerName='$databaseServerName' DatabaseName='WarehouseDB'/></ReportingDatabases>"
New-SPWebAnalyticsServiceApplication -Name $WebAnalyticsSAName -ApplicationPool $AppPoolName -ReportingDataRetention 20 -SamplingRate 100 -ListOfReportingDatabases $reportingSubscription -ListOfStagingDatabases $stagerSubscription > $null
New-SPWebAnalyticsServiceApplicationProxy -Name "$WebAnalyticsSAName Proxy" -ServiceApplication $WebAnalyticsSAName > $null
Get-SPServiceInstance | where-object {$_.TypeName -eq "Web Analytics Web Service"} | Start-SPServiceInstance > $null
Get-SPServiceInstance | where-object {$_.TypeName -eq "Web Analytics Data Processing Service"} | Start-SPServiceInstance > $null
 
Write-Host "Creating Secure Store Service and Proxy..."
New-SPSecureStoreServiceapplication -Name $secureStoreSAName -Sharing:$false -DatabaseServer $databaseServerName -DatabaseName "SecureStoreServiceAppDB" -ApplicationPool $AppPoolName -auditingEnabled:$true -auditlogmaxsize 30 | New-SPSecureStoreServiceApplicationProxy -name "$secureStoreSAName Proxy" -DefaultProxygroup > $null
Get-SPServiceInstance | where-object {$_.TypeName -eq "Secure Store Service"} | Start-SPServiceInstance > $null

##----------------------------------------------------------------

Целиком скрипт можно скачать отсюда. Как можно заметить из скрипта, в нем не создается сервисное приложение поиска. Я не стал включать его, поскольку планирую посвятить поиску отдельную статью и создавать сервисное приложение, после разбора архитектуры.

Остается проверить работу скрипта, ну прежде всего в центре администрирования нужно выбрать “Manage Service Application”, вы должны увидеть список созданных сервисных приложений и их прокси. (Рисунок 2)

 

2

Рисунок 2. Просмотр списка сервисных приложений и их прокси.

Далее, необходимо убедиться, что прокси сервисных приложений попали в прокси группу Default, т.е закреплены за ней. Для этого идем по пути: CA –> Application Management –> Configure service application associations –>  View –> Service Applications –>  Application Proxy Group –> Default. И получаем на выходе следующую картинку. (Рисунок 3)

 

3

 

Рисунок 3. Просмотр прокси группы Default.

Но и это еще не все. В самом начале скрипта мы создавали ManagedAccount  (New-SPManagedAccount ), в 2010 версии SharePoint слегка изменился подход к сервисным учётным записям, т.е тем от которых запущены сервисы.  Теперь подход такой:

     1) Вы создаете учетную запись в AD DS

     2) Регистрируете ее как ManagedAccount в SharePoint

     3) При создании пула приложений выбираете одну из ManagedAccount

Нужно это для того, чтобы снять с администратора бремя устаревания паролей и заставить SharePoint  самостоятельно менять пароль как только доменная политика скажет об этом. Опять же после автоматического изменения пароля, администратору не придется заново прописывать его в десятках окон. Так вот в та учетная запись ServicePool, от которой работает пул сервисных приложений была переведена в ManagedAccount, но включить из PowerShell автоматическую смену пароля у меня не получилось. Поэтому идем по пути: CA –>  Security –> Configure Managed Accounts –> Выбираем нашу учетку  (ServicePool) –> Edit и устанавливаем автоматическую смену пароля “Enable Automatic Password Change. (Рисунок 4)

 

5

 

Рисунок 4 . Установка автоматической смены пароля для конкретной Managed Account.

 

Резюмируем. После всех манипуляций мы получили группу сервисных приложений (все кроме поиска), которые будут закрепляться за каждым порталом вашего  SharePoint , при этом на текущий момент сервисные приложения не сконфигурированы и поэтому перед использованием конкретного сервиса, его необходимо настроить.  Но в тоже время задел уже есть. Что предстоит сделать на следующем шаге. В следующей части я покажу как создать веб-приложение и развернуть на нем коллекцию сайтов. Собственно нужен тестовый портал на котором будет можно отработать действие каждого сервисного приложения из созданных в этой статье.

Продолжение следует ...

 

MCT/MVP Илья Рудь


Версия для печати Версия для печати
14 комментариев »

  1. Отзыв от Евгений — 11 Март 2011 в 11:40

    Спасибо за цикл статей, для начинающих самое то!

  2. Отзыв от Денис М. — 31 Март 2011 в 10:06

    Огромное спасибо, отличный материал. Пробовал развернуть в тестовой среде, все работает отлично.

    Единственный момент, который считаю стоит упомянуть при планировании развертывания — это именование баз данных SQL. Если разворачивать SP10 в рабочую среду MSSQL он создаст множество нелицеприятных имен баз, содержащих GUID в имени. В листинге по созданию сервисных приложений все прекрасно с именами сервисных баз где заведомо указано имя базы -DatabaseName «DatabaseName». Но, например, при создании PerformancePointServiceApplication этот параметр пропущен и результате получаем имя базы вида PerformancePoint service_1503f249b0a8439faa6191625dc27f48. На работу не влияет, вот только если на вашем MSSQL сервере уже крутится несколько рабочих баз, этот момент может затруднить администрирование SQL и в целом портит вид логически выстроенной структуры баз.

    Чтобы этого избежать прежде всего не стоит запускать ни одного визарда. «SharePoint configuration wizard» можно заменить скриптом PowerShell

    New-SPConfigurationDatabase -DatabaseName «SP10_ConfigDB» -DatabaseServer «sqlserver.domain.local\instancename» -AdministrationContentDatabaseName «SP10_Admin_ContentDB» -Passphrase (ConvertTo-SecureString «Passw0rd» -AsPlaintext -Force) -FarmCredentials (Get-Credential)

    иначе мастер создаст базу админки с именем SharePoint_AdminContent_5453eba1-a204-42f0-8519-188ad85ebc6e

    Kerberos включается так New-SPCentralAdministration -Port 50000 -WindowsAuthProvider «Kerberos»

    Особенно не стоит запускать визард по настройку фермы, его прекрасно заменяет скрипт предложенный Ильей.

  3. Отзыв от Семен — 19 Апрель 2011 в 15:39

    Какие права должны быть у учетки, от имени которой запускается Пул приложений? (в Вашем примере itbrand.ru\ServicePool)

  4. Отзыв от Семен — 19 Апрель 2011 в 15:51

    Во время работы возникает столько вопросов, что я даже не успеваю все запомнить. Порекомендуйте литературу/библиотеку, откуда я могу почерпнуть ответы на часто задаваемые вопросы.

    А пока вопросы такие:

    у меня сейчас 3 пула приложений: один созданный мной, два предопределенных.

    Где я могу удалить лишние пулы? Где посмотреть их список? Где посмотреть какие приложения на данный момент, какой пул используют?

    спасибо

  5. Отзыв от Илья Рудь — 19 Апрель 2011 в 19:01

    1. Права необходимые для учетных записей брать отсюда archive.msdn.microsoft.co...x?ReleaseId=5245

    2. Посмотреть пулы можно из IIS либо шэлом с коммандлетом: Get-SPServiceApplicationPool Что лишнее в вашем случае и есть ли лишнее, я не знаю.

  6. Отзыв от Семен — 20 Апрель 2011 в 11:47

    Илья, наверное некорректно, что я превращаю комментарии в конференцию? может быть имеет смысл перейти на другую площадку?

    у меня сейчас такая ошибка:

    Следующие службы в настоящий момент запущены под учетными записями, входящими в группу «Администраторы» этого компьютера: SharePoint Central Administration v4 (Application Pool)

    SPTimerV4 (Windows Service)

    Типа, их надо поменять.

    И при этом указана ссылка где я могу это сделать (vm4:25091/_admin/FarmCred...lManagement.aspx)

    Проблема в том, что в том окне невозможно поменять учетку запускающего пул (SharePoint Central Administration v4) — это только в ИИС

    и саму службу тоже невозможно выбрать — только в стандартной виндовой консоли.

    Это нормально или нет?

  7. Отзыв от Геннадий М. — 28 Апрель 2011 в 9:55

    1.Подскажите, пожалуйста, что это за сервис такой «Usage and Health Data Collection Service»? В предыдущих статьях о нем ничего нет и мастером его не создать

    2. Есть ли случаи, при которых важен порядок создания приложений-служб?

  8. Отзыв от Vladislav Artukov — 31 Июль 2011 в 20:41

    Интересно, что после включения «Enable Automatic Password Change» (обычно) невозможно сменить пароль, нажав кнопочку на той же страничке. Причина простая — по умолчанию в Group Policy установлено минимальное время жизни пароля, 1 сутки.

  9. Отзыв от Костя — 14 Октябрь 2011 в 9:39

    при выполнении скрипта всплывает надпись красным на долю сикунды и резко закрываеться. после выполнения этого скрипта создаеться только Прокси приложения-службы обнаружения и балансировки нагрузки для приложений_9472c921-f213-488a-818b-3f4c568bdd93. Эт так и должно быть?

  10. Отзыв от Ilya Rud — 14 Октябрь 2011 в 16:46

    Костя, думаю имеет смысл выполнить из шэла интерактивно и посмотреть на что ругается.

  11. Отзыв от Ильяс — 17 Октябрь 2011 в 8:26

    Здравствуйте Илья, я запустил Ваш скрипт, забыв поменять имя сервера баз данных в нем. Как следствие сервисные службы создались но с ошибками — часть из них я не могу удалить. Есть ли возможность отката скрипта в PowerShell?

  12. Отзыв от anton — 31 Октябрь 2011 в 10:22

    в предыдущей статье, в итоговом листе запущенных служб не числилась User Profile Synchronization Service.

    В этой части вы ее уже наделяете эту незапущенную службу приложением

    как-то не стыкуется

  13. Отзыв от anton — 31 Октябрь 2011 в 10:42

    ага, прошу прощения, понял что эти службы наоборотные — сначала приложения, потом запуск

    МС маздай однако...

  14. Отзыв от anton — 30 Ноябрь 2011 в 18:16

    Руками проще чем переписывать батник

RSS-лента комментариев. Адрес для трекбека

Ваш отзыв



Я не робот.



Рейтинг@Mail.ru Яндекс цитирования