Archive

Posts Tagged ‘SharePoint 2013’

SharePoint 2013 Search Configuration & Tuning

24 janvier 2015 1 commentaire

Hey folks !

En ce moment j’ai beaucoup de demande sur le service de recherche de SharePoint 2013, ce qu’il fait exactement, ce qu’il consomme, où est l’index, quelle est sa taille, comment dois-je dimensionner ma machine, est-ce que je dois répartir les rôles, est-ce que je les répartie sur une instance SQL à part, etc. … Et enfin une fois que l’ensemble des parties d’architecture sont définies, comment je mets le tout en place. Dans le cas de figure nous verrons ce qui est le plus présent dans la majorité des cas c’est-à-dire une architecture en haute disponibilité Frontale, et Applicative.

 

Pour récapituler le moteur de recherche de SharePoint 2013, j’aime à dire que « SharePoint 2010 & Fast qui ont eu un bébé » ; effectivement le moteur de 2013 reprend le meilleur des deux mondes afin d’offrir aux utilisateurs une expérience de recherche riche. Et permettre aussi au power user de moduler l’ensemble des recherches, en fonction d’un ensemble de règles qui feront l’objet d’un prochain article, celui-ci étant plutôt dédié à la mise en place du moteur.

Un peu d’histoire, en 2010 il était encore possible de manipuler l’ajout de crawler, changer le query, etc. … via le GUI de la centrale d’administration de SharePoint. Mais ça c’était avant … oui aujourd’hui c’est tout en PowerShell (il faudrait éventuellement créer un petit projet pour gérer l’ensemble via une petite interface piloté en PShell derrière, question de temps … mais je suis dessus et je vous transmettrai le lienJ) en attendant c’est du Full PShell

 

Les composants du moteur de recherche

Coté SharePoint

Nom du composant de recherche

Description

Composant d’analyse Analyse les sources de contenu pour collecter les propriétés analysées et les métadonnées à partir d’éléments analysés et envoie ces informations au composant de traitement de contenu
Composant de traitement de contenu Transforme les éléments analysés et les envoie au composant d’index. Ce composant mappe également les propriétés analysées sur les propriétés gérées
Composant de traitement de l’analyse Exécute l’analyse de la recherche et l’analyse de l’utilisation
Composant d’index Reçoit les éléments traités du composant de traitement de contenu et les écrits dans l’index de recherche. Ce composant gère également les requêtes entrantes, récupère les informations de l’index de recherche et renvoie le jeu de résultats au composant de traitement de la requête.
Composant de traitement des requêtes Analyse les requêtes entrantes. Cela permet d’optimiser la précision, le rappel et la pertinence. Les requêtes sont envoyées au composant d’index, qui renvoie un jeu de résultats de recherche pour la requête.
Composant d’administration de la recherche Exécute les processus système pour la recherche, puis ajoute et initialise de nouvelles instances des composants de recherche

 

Cote SQL

Si vous en avez la possibilité, n’hésitez pas à mettre les fichiers *.mdf de vos bases de recherche sur des disques gold (SSD ou sur du 15 000tr/min) c’est le jour et la nuit en terme de temps d’indexation et d’analyse.

Ces bases de données peuvent également être stockées dans une autre instance que celle de votre SharePoint avec des capacités beaucoup plus importante aussi.

Nom de la base de données de recherche

Description

Base de données d’analyse Stocke les informations de suivi et d’historique concernant les éléments analysés tels que les documents et les URL. Elle stocke également des informations telles que l’heure de la dernière analyse, le dernier ID d’analyse et le type de mise à jour (ajout, mise à jour, suppression) effectué lors de la dernière analyse.
Base de données de liens Stocke les informations non traitées qui sont extraites par le composant de traitement de contenu et les informations sur les clics de recherche. Le composant de traitement d’analyse examine ces informations.
Base de données de création de rapports d’analyse Stocke les résultats de l’analyse de l’utilisation.
Base de données d’administration de la recherche Stocke les données de configuration de recherche.

 

 

Comment les répartir les rôles sur les serveurs SharePoint

Il est important dans la topologie d’une ferme de répartir les rôles entre les serveurs afin de garantir une réactivité du système, certain composant vont être plus consommateurs que d’autres.

Par exemple la mémoire consommée sera plus importante pour le composant qui s’occupe de traiter le contenu des éléments indexé que le composant d’analyse de recherche.

La plupart du temps lorsque vous pouvez vous le permettre mettez en place des serveurs dédiés à l’indexation et à l’analyse. Les index peuvent être poussés sur les serveurs frontaux si vous voulez offrir des temps de recherche minimum aux utilisateurs. Il est important de répliquer l’index lorsque ce dernier est volumineux et afin de ne pas être obliger de tout ré indexer si vous avez des volumétries très importante.

 

Concrètement les ressources minimum par composant sont les suivants :

Composant

Stockage

Mémoire

Processeur

Bande passante réseau

Index 500 Go pour l’index. 16 Go 64 bits, 4 cœurs minimum, mais 8 cœurs recommandés. 2 Gbits/s
Traitement de l’analyse 300 Go pour le traitement local d’analyses 8 Go 64 bits, 4 cœurs minimum, mais 8 cœurs recommandés 2 Gbits/s
 

Traitement decontenuTraitement des requêtesAdministration de la recherche

8 Go 64 bits, 4 cœurs minimum, mais 8 cœurs recommandés. 2 Gbits/s

Base de données de recherche

Le serveur nécessite 80 Go d’espace disque quel que soit le nombre de bases de données de recherche qu’il héberge.
8 Go pour les déploiements à petite échelle16 Go pour les déploiements à moyenne échelle 64 bits, 4 cœurs pour les déploiements à petite échelle.64 bits, 8 cœurs pour les déploiements à moyenne échelle. 2 Gbits/s

 

Performance pour le stockage

Des composants de recherche

Nom du composant

Détails du composant

Besoins en IOPS

Utilisation de volume/partition de stockage distinct

Composant d’index Utilise le stockage lors de la fusion de l’index et lors de la gestion et de la réponse aux requêtes. 300 IOPS pour 64 Ko de lectures aléatoires100 IOPS pour 256 Ko d’écritures aléatoires200 Mo/s pour les lectures séquentielles

200 Mo/s pour les écritures séquentielles

Oui

Composant analytique Analyse les données localement, en traitement en bloc. Non Oui
Composant d’analyse Stocke le contenu téléchargé localement, avant de l’envoyer à un composant de traitement de contenu. Le stockage est limité par la bande passante réseau. Non Oui

Des bases de données

Nom de la base de données

Besoins en IOPS

Charge classique sur le sous-système d’E/S

Base de données d’analyse IOPS moyennes à élevées 10 IOPS pour un taux d’analyse d’1 document par seconde (DPS)
Base de données de liens IOPS moyennes 10 IOPS pour 1 million d’éléments dans l’index de recherche
Base de données d’administration de la recherche IOPS faibles Non applicable
Base de données de création de rapports d’analyse IOPS moyennes Non applicable

 

La redondance

J’en reviens à la redondance des éléments, tout d’abord les éléments redondants vous permettant une réelle haute disponibilité :

  • Le composant d’index
  • Le composant d’analyse
  • De traitement de contenu
  • De traitement des requêtes
  • Du traitement de l’analyse
  • Et l’administration de la recherche
  • Puis les bases de données de recherche.

Pour les bases de données

Je vous invite à utiliser ce que permet de faire SQL avec la fonctionnalité d’AlwaysOn qui permet de faire du clustering. J’essaierai de vous proposer un autre article sur le sujet à propos de sa mise en place.

 

Pour le composant d’index

Votre index est redondant s’il a au moins deux copies d’index par partition d’index. En cas de défaillance d’un serveur hébergeant une copie d’index, cela peut réduire les performances mais la recherche peut tout de même traiter des requêtes et des éléments d’index. Cependant, si l’environnement doit délivrer des performances constantes à tout moment, la recherche a besoin de composants d’index plus redondants.

Par exemple : vous avez conçu votre topologie de recherche avec deux copies par partition afin de réduire le temps d’attente pour les requêtes et votre environnement nécessite un court temps d’attente pour les requêtes en permanence. Augmentez le nombre de copies d’index par partition.

Toutes les partitions doivent avoir le même nombre de copies. Un composant d’index représente une copie d’index. Par conséquent, si vous voulez deux copies de l’index, vous aurez besoin de deux fois plus de composants d’index que de partitions d’index. Par exemple, un index redondant avec 40 millions d’éléments exige quatre partitions. Huit composants d’index représentent les quatre partitions en cas d’utilisation de deux copies pour chaque partition.

Si vous ajoutez des composants d’index aux partitions existantes en tant que copies sur une installation en cours, la recherche amorce automatiquement les nouvelles copies avec les données de la partition d’index. Plusieurs heures peuvent être nécessaires pour que les nouvelles copies soient opérationnelles.

Pour les composants d’analyse, de traitement de contenu, de traitement des requêtes, de traitement d’analyse et d’administration de la recherché

Prenons le composant d’analyse comme exemple. Si vous devez arrêter l’un des serveurs hébergeant un composant d’analyse pour maintenance, cela peut réduire l’actualisation des résultats mais la recherche peut tout de même analyser tout le contenu.

Cependant, si l’environnement nécessite la même actualisation des résultats en permanence, la recherche a besoin de composants d’analyse plus redondants. Par exemple : vous avez conçu votre topologie de recherche avec trois composants d’analyse et vous voulez la même actualisation de résultats même en cas de défaillance de deux serveurs de composants d’analyse. Ajoutez deux autres composants d’analyse.

Le composant d’administration de la recherche est une exception à ce principe. Un composant d’administration de la recherche a une capacité suffisante pour n’importe quelle topologie de recherche, peu importe sa taille. Ainsi, deux composants d’administration de la recherche sont suffisants pour assurer la redondance.

Les composants de traitement de contenu équilibrent la charge entre eux, donc les composants de traitement de contenu redondants augmentent la capacité de traitement des éléments.

 

Exemple d’archictecture de recherche

http://zoom.it/PKfA

Contexte Small Farm (~10M d’éléments)

Une ferme dédiée à la recherche

Ce qui est assez répandu

 

 

Contexte Medium Farm (~40M d’éléments) – Les serveurs WFE ne sont pas présentés sur le schéma-

 

Script PowerShell

Le script que je vous propose permet la mise en place d’une ferme de recherche avec deux serveurs :

Avant un passage du script, assurez-vous de comprendre ce qu’il fait !!! Je vois trop souvent trop de personne qui ne comprenne pas ce qu’ils font, mais le font… utiliser des machines de test !

$hostB = Serveur WFE qui possède un index ainsi que le rôle de query

$hostA = Serveur APP qui possède le reste des rôles

 

Add-PSSnapinMicrosoft.SharePoint.PowerShell –EA 0#Please Check if there is an Active Search Topology

#Get-SPEnterpriseSearchServiceApplication | Get-SPEnterpriseSearchTopology |? {$_.State -eq « Inactive »}

 

#If there is some Inactive Search Topology, clean it with the following cmdlet

#Get-SPEnterpriseSearchServiceApplication | Get-SPEnterpriseSearchTopology |? {$_.State -eq « Inactive »} |% { Remove-SPEnterpriseSearchTopology -Identity $_ -Confirm:$false};

 

# Create search application pool

$saAppPoolName = « Search SA »

$account = « corp\sp_farm »

 

Write-Host « Creating Application Pool » -foregroundcolor green

New-SPServiceApplicationPool -Name $saAppPoolName -Account $account -Confirm:$false -Verbose

 

# Search Specifics, we are single server farm

$searchServerName = (Get-ChildItem env:computername).value

$serviceAppName = « Search Service Application »

$searchDBName = « SHP_SearchService_DB »

 

# Grab the Appplication Pool for Service Application Endpoint

$saAppPool = Get-SPServiceApplicationPool $saAppPoolName

 

# Start Search Service Instances

Write-Host « Starting Search Service Instances… » -foregroundcolor green

Start-SPEnterpriseSearchServiceInstance $searchServerName

do {$online = Get-SPEnterpriseSearchServiceInstance -Identity $searchServerName; Write-Host « Waiting for service:  » $online.Status}

until ($online.Status -eq « Online »)

Start-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance $searchServerName

do {$online = Get-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance -Identity $searchServerName; Write-Host « Waiting for service:  » $online.Status}

until ($online.Status -eq « Online »)

 

# Create the Search Service Application and Proxy

Write-Host « Creating Search Service Application and Proxy… » -foregroundcolor green

$searchServiceApp = New-SPEnterpriseSearchServiceApplication -Name $serviceAppName -ApplicationPool $saAppPoolName -DatabaseName $searchDBName

$searchProxy = New-SPEnterpriseSearchServiceApplicationProxy -Name « $serviceAppName Proxy » -SearchApplication $searchServiceApp

 

###################################################################################################

###VM-SHP-HOST A

#===Admin component 1

#===Crawl component 1

#===Content processing component 1

#===Analytics processing component 1

###VM-SHP-HOST B

#===Query processing component 1

#===Index component 1 (that belongs to index partition 0)

 

#Application Server

$hostA = Get-SPEnterpriseSearchServiceInstance -Identity « Serveur APP »

#Front Server

$hostB = Get-SPEnterpriseSearchServiceInstance -Identity « Serveur WFE »

 

Write-Host « Starting Search Service Instances… » -foregroundcolor green

Start-SPEnterpriseSearchServiceInstance -Identity $hostA -verbose

do {$online = Get-SPEnterpriseSearchServiceInstance -Identity $hostA; Write-Host « Waiting for service:  » $online.Status}

until ($online.Status -eq « Online »)

 

Write-Host « Starting Search Service Instances… » -foregroundcolor green

Start-SPEnterpriseSearchServiceInstance -Identity $hostB

do {$online = Get-SPEnterpriseSearchServiceInstance -Identity $hostB; Write-Host « Waiting for service:  » $online.Status}

until ($online.Status -eq « Online »)

 

Write-Host « Getting Search Service Instance… » -foregroundcolor green

#Wait until all the search service instances are running. At the Windows PowerShell command prompt, type the following commands until the commands return the state « Online » for each of the search service instances

Get-SPEnterpriseSearchServiceInstance -Identity $hostA -verbose

Get-SPEnterpriseSearchServiceInstance -Identity $hostB -verbose

 

Write-Host « Creating Search Topology… » -foregroundcolor green

#Create a new search topology and a reference to the new search topology.

$ssa = Get-SPEnterpriseSearchServiceApplication -verbose

$newTopology = New-SPEnterpriseSearchTopology -SearchApplication $ssa -verbose

 

Write-Host « Configuring Role Topology Servers… » -foregroundcolor green

#Add all the search components to the new search topology

New-SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $hostA -verbose

New-SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $hostA -verbose

New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA -verbose

New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA -verbose

 

New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostB -verbose

New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostB -IndexPartition 0 –verbose

 

#C’est ici que vous ajouter les rôles nécessaire en fonction de ce que vous souhaitez mettre en place

 

Write-Host « Activating topology… » -foregroundcolor green

#Activate the new search topology

Set-SPEnterpriseSearchTopology -Identity $newTopology -verbose

 

Write-Host « Getting Active Topology… » -foregroundcolor green

#Verify that the new search topology is active

Get-SPEnterpriseSearchTopology -SearchApplication $ssa -verbose

 

Write-Host « Checking Search Topology… » -foregroundcolor green

#Verify that all components of the new search topology are running correctly.

Get-SPEnterpriseSearchStatus -SearchApplication $ssa -Text -verbose

 

#Write-Host « Cleanning Topology… » -foregroundcolor green

#Get-SPEnterpriseSearchServiceApplication | Get-SPEnterpriseSearchTopology |? {$_.State -eq « Inactive »} |% { Remove-SPEnterpriseSearchTopology -Identity $_ -Confirm:$false};

 

Une fois que le tout est mis en place, penser à changer l’emplacement du repertoire d’index de SharePoint, par défaut il est sur le disque système, il convient de le changer de disque. Pour cela je vous invite à consulter le script de Ivan (https://gallery.technet.microsoft.com/office/Move-SharePoint-2013-242869e2)

Vous pouvez bien évidemment ajouter l’option IndexLocation dans le script fourni afin de déclarer l’emplacement de l’index. Cela ressemblerai à :

$indexlocation = e:\SSAIndex

New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostB -IndexPartition 0 –IndexLocation $indexlocation –verbose

N’oubliez pas de créer le répertoire avant, et assurez-vous qu’il soit vide.

 

Le tuning de notre service de recherche

Une fois que les améliorations niveau SQL ont été effectuées

  • TempDB (en fonction du nombre de processeurs)
  • Mémoire dédié
  • Max Parrallelism défini
  • Disque SSD mis en place (bah pourquoi pas…)
  • Mémoire minimum définie
  • Taille de l’autogrowth définie (pour éviter la fragmentation)

Le tout relié à un SAN en FibreNoire, que peut-on améliorer …

Et bien le modèle de ranking utilisé en fonction de template que vous pouvez définir vous-même (promis c’est pas si compliqué que ça) J

Les scopes de recherche, il est absolument nécessaire de bien séparer les scopes de recherche ainsi que les urls qui sont indéxées, l’idée en fait est de faire des groupages, et surtout une planification des différents scopes.

Par exemple les archives peuvent être indexées une fois par semaine, alors que le portail collaboratif doit être indexé toute les 10 voir 5 minutes.

 

Le ranking

Déjà le ranking c’est quoi ?

Le ranking est une évaluation de classement de vos données de manière hiérarchisée basé sur les termes qui identifie votre document (les métadonnées) … (depuis le temps qu’on répète de les mettre … hein … un jour au supermarché on vous enlèvera les étiquettes, super pratique pour trouver la boite de crème de marron hein…) et qui contribue au calcul de pertinence de classement de SharePoint.

Cette fonction s’appelle BM25 (fonction hiérarchise) les articles en fonction de l’apparence de termes de recherche dans l’index. L’entrée BM25 peut être une des propriétés gérées dans l’index de texte intégral.

La fonction rangée BM25 calcule le score de classement de pertinence à l’aide de la formule suivante.


Où :

  • D est un document, représenté sous la forme d’une liste de champs textuels tels que le titre ou du corps.
  • Q est la requête utilisateur, représentée sous la forme d’une liste de termes de recherche, t.
  • S définit la liste des champs qui participent à la pertinence ; Cette liste est définie par le modèle de classement.
  • wf est une valeur numérique qui définit le poids relatif de champ f S; Cette valeur est définie par le modèle de classement.
  • Bf est une valeur numérique qui définit la normalisation de longueur de document pour chaque ordinateur champ f S.
  • TFf (t,D) est le nombre d’occurrences de requête terme t dans le champ f du document D.
  • DLf (D) est le nombre total de mots dans le champ f du document D.
  • N est le montant total des documents dans l’index.
  • nt un montant est de documents qui ont le terme t dans au moins une de leurs propriétés.
  • AVDLf est la moyenne DLf(D) sur tous les documents indexés.
  • k1 est un paramètre scalaire ; Cette valeur est définie par le modèle de classement.

Vous devez mapper les propriétés gérées utilisées pour la fonction de classement BM25 à l’index de texte intégral par défaut dans la Choisir recherche paramètres avancé de l’interface utilisateur.

Au sein d’une requête utilisateur, termes de requête qui font partie des opérateurs suivants sont exclus des calculs de classement de pertinence : NOT(…) dans FQL, NOT(…) dans KQL et FILTER(…) dans FQL.

En outre, les termes de requête qui se trouvent sous étendue, par exemple, title:apple AND body:orange, sont exclus des calculs de classement de pertinence.

Exemple de définition de fonctionnalité de classement BM25

XML

ContentRank » k1= »1″>

<Layer1Weights>

<Weight>0.26236235707678</Weight>

  </Layer1Weights>

<Properties>

name= »body » w= »0.019391078235467″ b= »0.44402228898786156″ propertyName= »body » />

    name= »Title » w= »0.36096989709360422″ b= »0.38179554361297785″ propertyName= »Title » />

    name= »Author » w= »0.15808522836934547″ b= »0.13896219383271818″ propertyName= »Author » />

    name= »Filename » w= »0.15115036355698144″ b= »0.96245017871125826″ propertyName= »Filename » />

    name= »QLogClickedText » w= »0.3092664171701901″ b= »0.056446823262849853″ propertyName= »QLogClickedText » />

    name= »AnchorText » w= »0.021768362296187508″ b= »0.74173561196103566″ propertyName= »AnchorText » />

    name= »SocialTag » w= »0.10217215754116529″ b= »0.55968554315932328″ propertyName= »SocialTag » />

  </Properties>

</BM25Main>

 

Dans cet exemple, le ranking, le classement est effectué si les métadonnées sont renseignés (un document qui a un titre aura un poid de 0,36 en plus de celui qui n’en a pas)

 

Le classement peut aussi être fait en fonction de la proximité de l’utilisateur avec un document, un collègue, etc. …

 

Sur la fréquence d’actualisation d’un document aussi

Actualisation

La valeur par défaut SharePoint 2013 le modèle de classement n’augmenter le rang des résultats de recherche en fonction de leur actualité. Vous pouvez obtenir cela en ajoutant une nouvelle fonctionnalité de classement statique qui combine des informations à partir de la propriété LastModifiedTime gérés avec la propriété de requête DateTimeUtcNow , à l’aide de la fonction de transformation de fraîcheur. La fonction de transformation de fraîcheur est la seule transformation que vous pouvez utiliser pour cette fonctionnalité de classement de fraîcheur, parce qu’elle convertit l’âge de l’élément à partir d’une représentation interne en jours.

La transformation de fraîcheur est basée sur la formule suivante :

Où :

  • c et yfuturessont définies dans le modèle de classement.
  • x est l’âge d’un élément en jours.
  • La valeur de yfuturesdéfinit le gain de fraîcheur des éléments qui ont LastModifiedTime supérieure à la date et l’heure.

Exemple de définition de fonctionnalité rang fraîcheur

XML

name='freshboost' propertyName='LastModifiedTime' default='-1' convertPropertyToDatetime='1' rawValueTransform='compare' property='DateTimeUtcNow'>
    Freshness" constant="0.0333" futureValue="2" />
    <Layer1Weights>
        <Weight>1.0</Weight>
    </Layer1Weights>
</Static>

 

https://msdn.microsoft.com/en-us/library/office/dn169052%28v=office.15%29.aspx

http://blogs.msdn.com/b/ianpal/archive/2008/06/25/tuning-sharepoint-search.aspx

Globalement compter comme cela :

  1. Déterminez la somme des bases de données de contenu SharePoint qui sera analysée. C’est la valeur ContentDBSum
    qui sera utilisée comme corrélation dans les calculs suivants.

     

  2. Déterminez la taille de l’index total (qui est situé sur les composants de requête et est utilisé pour les requêtes de texte intégral) :

    Multipliez ContentDBSum
    par 0,035. Vous obtenez la valeur TotalIndexSize
    (avant de partitionner et réserver de l’espace pour les fusions et le repartitionnement)

     

    Ensuite, déterminez le nombre de partitions d’index sur lequel sera basé votre scénario. En règle générale, une partition d’index devrait compter 5 à 10 millions d’éléments. Une fois le nombre de partitions d’index déterminé, vous pouvez calculer la taille de stockage du composant de requête.

     

    Divisez TotalIndexSize
    par le nombre de partitions d’index. Vous obtenez la valeur QueryComponentIndexSize
    qui permet de calculer les tailles suivantes :

  • Pour la RAM, multipliez QueryComponentIndexSize
    par 0,33. Vous obtenez la RAM minimum requise pour ce composant de requête, s’il est actif.
    • S’il s’agit d’un composant de basculement, il ne nécessite pas de RAM tant qu’il est inactif.
    • Pour un serveur donné, si vous avez plusieurs composants de requête actifs sur le même serveur, vous devez additionner la RAM de chaque composant de requête actif pour obtenir les besoins en RAM du serveur.
  • Pour le stockage disque, utilisez QueryComponentIndexSize
    comme suit pour estimer les besoins en disque, selon que vous envisagez de repartitionner ou non l’index (c’est-à-dire, si vous prévoyez une croissance de l’index supérieure à 10 millions par partition) :
    • Multipliez QueryComponentIndexSize
      par 3 pour calculer le stockage disque pour un seul composant de requête en laissant la place pour la fusion d’index.
    • Multipliez QueryComponentIndexSize
      par 4 pour calculer le stockage disque pour un seul composant de requête en laissant la place pour le repartitionnement d’index.

Pour un serveur donné, si vous avez plusieurs composants de requête sur le même serveur, vous devez prévoir le stockage pour chacun selon les besoins d’E/S par seconde répertoriés dans la section Détails d’échelle de la section Système de requête de recherche, plus haut dans cet article.

  1. Déterminez la taille des bases de données de propriétés de la manière suivante :
  • Multipliez ContentDBSum par 0,015. Vous obtenez la valeur TotalPropertyDBSize
    avant partitionnement.
  • Multipliez ContentDBSum par 0,0031. Vous obtenez la valeur TotalPropertyDBLogSize avant partitionnement. Cela suppose que vous utilisez le mode de récupération simple pour les bases de données SQL Server.
  • Multipliez ContentDBSum par 0,00034. Vous obtenez la valeur TempDBSize de la base de données de propriétés. Comme il est recommandé que 33 % des tables clés de la base de données de propriétés soient en RAM, l’utilisation de la base de données temporaire est légère.

Ensuite, déterminez le nombre de bases de données de propriétés que vous aurez, en fonction de votre scénario. En règle générale, une base de données de propriétés devrait compter jusqu’à 50 millions d’éléments, en supposant qu’il n’y ait pas de problèmes de performances des requêtes et que vous n’ayez qu’un nombre limité de propriétés gérées (configuration standard).

  • Divisez TotalPropertyDBSize par le nombre de bases de données de propriétés. Vous obtenez la valeur PropertyDatabaseSize.
  • Divisez TotalPropertyDBLogSize par le nombre de bases de données de propriétés. Vous obtenez la valeur PropertyDatabaseLogSize.
  • Pour la RAM, multipliez PropertyDatabaseSize par 0,33. Vous obtenez la quantité minimum de RAM recommandée pour cette base de données de propriétés.

Pour un serveur de bases de données particulier, si vous avez plusieurs bases de données de propriétés sur le même serveur, vous devez prévoir le stockage et la RAM pour chacune selon les besoins d’E/S par seconde et de RAM répertoriés dans la section Détails d’échelle de la section Système de requête de recherche, plus haut dans cet article.

  1. Calculez les tailles des bases de données d’analyse :
  • Multipliez ContentDBSum par 0,046. Vous obtenez la valeur TotalCrawlDBSize avant partitionnement.
  • Multipliez ContentDBSum par 0,011. Vous obtenez la valeur TotalCrawlDBLogSize avant partitionnement. Cela suppose que vous utilisez le mode de récupération simple pour les bases de données SQL Server.
  • Multipliez ContentDBSum par 0,0011. Vous obtenez la valeur TempDBSize de la base de données d’analyses. Comme le système d’analyse de recherche affecte les performances de la base de données temporaire, il est déconseillé de placer d’autres bases de données sur les serveurs qui hébergent la base de données d’analyse ou des bases de données qui seraient affectées par cela.

Ensuite, déterminez le nombre de bases de données d’analyse que vous aurez, en fonction de votre scénario. En règle générale, une base de données d’analyse devrait compter jusqu’à 25 millions d’éléments, en supposant qu’il n’y ait pas de problèmes de performances de l’analyse.

  • Divisez TotalCrawlDBSize par le nombre de bases de données d’analyse. Vous obtenez la valeur CrawlDatabaseSize.
  • Divisez TotalCrawlDBLogSize par le nombre de bases de données d’analyse. Vous obtenez la valeur CrawlDatabaseLogSize.

Pour un serveur donné, si vous avez plusieurs bases de données d’analyse sur le même serveur, vous devez prévoir le stockage pour chacune selon les besoins d’E/S par seconde répertoriés dans la section Détails d’échelle de la section Système d’analyse de recherche plus haut dans cet article. Pour la RAM, nous recommandons au moins 16 Go sur les serveurs de bases de données dédiés aux bases de données d’analyse.

  1. Déterminez la taille de la base de données d’administration de la recherche
  • Multipliez le nombre d’éléments de l’index (en millions) par 0,3. Vous obtenez la valeur SearchAdminDBSize.
  • Pour la RAM, multipliez SearchAdminDBSize
    par 0,33. Vous obtenez la quantité minimum de RAM recommandée pour cette base de données d’administration de la recherche.

Pour un serveur de bases de données particulier, si vous avez plusieurs bases de données sur le même serveur, vous devez prévoir le stockage et la RAM pour chacune selon les besoins d’E/S par seconde et de RAM répertoriés dans la section Détails d’échelle de la section Système de requête de recherche, plus haut dans cet article.

  1. Pour déterminer l’espace disque requis pour sauvegarder une application de service de recherche, effectuez le calcul suivant :

  • TotalCrawlDBSize + TotalPropertyDBSize + TotalIndexSize + SearchAdminDBSize = taille de sauvegarde de base.

Cette taille de sauvegarde de base est un point de départ. Elle peut être affectée par les facteurs suivants :

  • La taille d’index supplémentaire qui est incluse dans TotalIndexSize pour toute analyse effectuée depuis la dernière fusion principale.
  • La croissance au cours du temps due à des éléments, des requêtes et des descripteurs de sécurité supplémentaires.

Plus de détails par ici :
https://technet.microsoft.com/fr-fr/library/gg750251%28v=office.14%29.aspx

 

Estimer les performances de recherche sous SharePoint 2010

Estimate performance and capacity requirements for enterprise intranet collaboration environments

 

Aujourd’hui Microsoft mets en place Delve http://products.office.com/en-us/business/explore-office-delve qui est principalement basé sur le même concept.Au vu des volumétries qu’il est nécessaire d’indéxer et de la puissance de calcul nécessaire à mettre en place Delve ne sera pour le moment jamais porté sur des technologies OnPremise.

 

 

Hope this helps & Stay tuned !

Publicités

La Migration SharePoint 2013 – Présentation

Hi folks,

Vous trouverez ci après la présentation faites lors de la rencontre UGSF du 11 Décembre 2013.

Migration SharePoint 2013_v2

Enjoy & Have Fun !

Catégories :Migration, Office 15, SharePoint Étiquettes : ,

Backup Error SharePoint 2013

Hi folks,

Un petit post rapide concernant les sauvegardes SharePoint 2013 (RTM),

Lorsque vous effectuez une sauvegarde SharePoint, il est nécessaire que vous ayez les droits adéquats (Ecriture, modification, création de folder) dans le dossier cible de sauvegarde sinon quelques erreurs peuvent apparaitre.

Problème 1 :

La première est clairement une question de droits :

FatalError: Object Search SA failed in event OnBackup. For more information, see the spbackup.log or sprestore.log file located in the backup directory.

    FaultException: Management called failed with System.InvalidOperationException: ‘Job failed: Have tried to perform backup/restore operation twice on all in-sync members in cluster SPb23a814e1ed2.0, but none succeeded.

Last failure message: Microsoft.Ceres.SearchCore.Seeding.SnapshotTransferException: Could not send chunk ms\%default\gen.0000000000000000.state: Localpath:

    [0-147> to target BackupDirectoryTarget[directory=F:\FarmBackup\spbr0000\I.0.0,validateTransfers=False]

at Microsoft.Ceres.SearchCore.Seeding.SnapshotSender.SendChunks(ISnapshot snapshot, ISeedSource source, ISeedTarget target, SeedStatus status, Func`1 checkAborted, Int32 targetFragIndex)

at Microsoft.Ceres.SearchCore.Seeding.SnapshotSender.FirstPhaseTransfer(ISeedSource source, ISeedTarget target, Action`1 updateProgress, Func`1 shouldAbort)

at Microsoft.Ceres.SearchCore.Seeding.BackupWorker.BackupWork.DoFirstPhaseWork()’ at at Microsoft.Ceres.SearchCore.IndexController.BackupService.ThrowOnFailure(JobStatus status)

at Microsoft.Ceres.SearchCore.IndexController.BackupService.ProgressFirstPhase(String handle)

at Microsoft.Ceres.SearchCore.IndexController.IndexControllerManagementAgent.WrapCall[T](Func`2 original)

Could not send chunk ms\%default\gen.0000000000000000.state

Résolution :

  1. Attribuer le full control ou la full ecriture à everyone è Rapide, mais loin d’être sécure sauf si vous appliquez la règle du (« si l’utilisateur ne sais pas qu’il a accès, il n’ira pas »)
  2. Attribuer les droits nécessaires aux comptes nécessaires

    Le service du minuteur Windows SharePoint Services Timer V4 (SPTimerV4) et le compte de service SQL Server dans SharePoint 2013 effectuent des opérations de sauvegarde et restauration au nom des utilisateurs. Ces comptes de service nécessitent des autorisations de type contrôle total sur tous les dossiers de sauvegarde.

Problème 2 :

Cette problématique a été rencontrée chez un client

Description de l’erreur : SharePoint essaie de faire un job de backup sur le service Search SA et essaie plusieurs fois, mais n’y arrive pas « Could not prepare first phase backup » alors la stack trace apparait (et me parle de composant d’administration de recherche et d’index) les erreurs suivantes sont liées à la non sauvegarde du service de recherche «Aborted due to error in another component. »

FatalError: Object Search SA failed in event OnBackup. For more information, see the spbackup.log or sprestore.log file located in the backup directory.

    FaultException: Management called failed with System.InvalidOperationException: ‘Job failed: Have tried to perform backup/restore operation twice on all in-sync members in cluster SP987sjz98768.0, but none succeeded.

Last failure message: Microsoft.Ceres.SearchCore.Seeding.SnapshotTransferException: Could not prepare first phase backup snapshot

at Microsoft.Ceres.SearchCore.Seeding.SnapshotSender.FirstPhaseTransfer(ISeedSource source, ISeedTarget target, Action`1 updateProgress, Func`1 shouldAbort)

at Microsoft.Ceres.SearchCore.Seeding.BackupWorker.BackupWork.DoFirstPhaseWork()’ at at Microsoft.Ceres.SearchCore.IndexController.BackupService.ThrowOnFailure(JobStatus status)

at Microsoft.Ceres.SearchCore.IndexController.BackupService.ProgressFirstPhase(String handle)

at Microsoft.Ceres.SearchCore.IndexController.IndexControllerManagementAgent.WrapCall[T](Func`2 original)

Debug:

Server stack trace:

at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)

at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)

at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)

at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:

at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)

at Microsoft.Ceres.SearchCore.Admin.IIndexControllerManagementAgent.ProgressFirstPhase(String handle)

at Microsoft.Office.Server.Search.Administration.BRIndexComponent.RetryWhileNoEndPoint[T](Func`2 action, SPBackupRestoreInformation args, Guid ssaId, TimeSpan retryTimeout)

at Microsoft.Office.Server.Search.Administration.BRIndexComponent.RetryWhileNoEndPoint[T](Func`2 action, SPBackupRestoreInformation args, Guid ssaId, TimeSpan retryTimeout)

at Microsoft.Office.Server.Search.Administration.BRIndexComponent.<>c__DisplayClass13`1.<RetryWhileNoEndPoint>b__12()

at Microsoft.SharePoint.SPSecurity.<>c__DisplayClass5.<RunWithElevatedPrivileges>b__3()

at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)

at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)

at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode)

at Microsoft.Office.Server.Search.Administration.BRIndexComponent.RetryWhileNoEndPoint[T](Func`2 action, SPBackupRestoreInformation args, Guid ssaId)

at Microsoft.Office.Server.Search.Administration.BRIndexComponent.WaitPhaseComplete(SPBackupInformation args, Func`2 getProgress, Int32 sleepTime)

at Microsoft.Office.Server.Search.Administration.BRIndexComponent.WaitFirstPhaseBackupComplete(SPBackupInformation args)

at Microsoft.Office.Server.Search.Administration.TwoPhaseBackupHelper.WaitFirstPhaseBackupCompleteChildren(SPBackupInformation args)

at Microsoft.Office.Server.Search.Administration.SearchServiceApplication.OnBackup(SPBackupInformation args)

Verbose: Starting object: http.

Verbose: Starting object: https.

Verbose: Starting object: Search SA.

FatalError: Object Search SA failed in event OnBackup. For more information, see the spbackup.log or sprestore.log file located in the backup directory.

    Aborted due to error in another component.

Résolution :

  1. Vu ce que me racconte ce très chère fichier de logs, je decide d’aller faire un petit tour sur le moteur de recherché via la Centrale d’Administration.
  2. Quand tout fonctionne bien, tout est vert

    Les warning sont en jaune,

    Les erreurs sont en rouge,

    Jusque-là je pense que comme n’importe qui, si vous apercevez la moindre icône non verte, alors le stress vous envahi… mais pas de panique

    Dans le cas de figure ci-dessus, le service de recherche ne se sauvegardai pas car il était en warning sur les Index, ce qui semble logique vu ce que nous avons trouvé dans les logs.

    Pour résoudre cette petite problématique :

    1. Détruire le service et le reconstruire è Rapide, Net, Pas besoin de se poser trop de question c’est bon si vous n’êtes pas en prod là
    2. Construire un nouvel index avec PowerShell : http://technet.microsoft.com/en-us/library/jj862355.aspx#Search_Index_Part

Par contre il faut noter qu’il y a pas mal de problème concernant la manipulation du service de recherche de SharePoint 2013 en version RTM et que quasiment toutes les modifications (Index, Crawler, etc. …) ce solde généralement par la recréation du service de recherche en entier.

La mise à jour de SharePoint 2013 avec les derniers Cumulatif Update du mois d’Aout http://technet.microsoft.com/en-us/sharepoint/jj891062.aspx permettent de manipuler de manière plus sereine le moteur de recherche.

Je n’ai pas encore testé le CU d’Aout avec le moteur de recherche, mais je pense que le plus propre dans l’ordre serai soit :

  1. Delete Search SA > MAJ > New Search SA
  2. Backup > Delete Search SA > MAJ > Restore Search SA
  3. Backup > MAJ > Restore
  4. MAJ

A voir ce que le prochain Service Pack de SharePoint 2013 apportera.

Enjoy & Have Fun !

Work Management Application

10 septembre 2013 1 commentaire

Hey !

De plus en plus de clients mettent en place le Work Management Service Application (WMA) mais souvent les tâches agrégées posent problème…

Aussi je vous propose de voir un peu plus en détails de quoi il s’agit, et vous donner quelques « trucs » que l’on appelle aussi des Best Practice.

C’est quoi le « Tâches » / « Tasks » sur mon profil SharePoint ?

 

Dans SharePoint, la liste des tâches agrège et vous montre toutes les tâches qui sont assigné à l’utilisateur connecté (tâches de Workflow, Liste, …)

C’est dispo dans SharePoint Online également.

 

A quoi ça sert ?

Dans les versions précédentes de SharePoint, l’utilisateur devait se connecter à l’ensemble des systèmes (Exchange, Project, …) pour connaitre ses tâches affectées. Il n’y avait aucune coordination et les alertes provenaient de tous les systèmes

Schématiquement nous avions ceci :

 

Maintenant l’ensemble est stocké à un seul endroitJ, l’utilisateur ce connecte à son site, et visionne les tâches à effectuer en un point central, schématiquement nous avons :

 

C’est quoi l’avantage ?

  • Avoir l’ensemble de ces tâches à un seul et unique endroit,
  • Avoir une timeline dynamique agrégeant l’ensemble des tâches,
  • Synchronisation avec Outlook (Uniquement avec Exchange 2013)

    http://technet.microsoft.com/en-us/library/jj554516.aspx

  • Catégorisation des tâches,
  • Possibilité de marquer les tâches importantes,
  • Rechercher parmis les tâches,

Ca fonctionne comment ?

Comme tout dans SharePoint via à Service, le WMA (Work Management Application)

Ce nouveau service fourni avec SharePoint 2013 offre les fonctionnalités suivantes à un seul endroit du portail :

  • Donne la possibilité à l’utilisateur de visionner et suivre ses actions (todo list)
  • Agrégation des tâches outlook, project et sharepoint (Merci Exchange 2013)
  • Basé sur un fournisseur afin de connecter d’autres systèmes

Pour que tout se passe bien il faut :

  1. Pour l’agrégation de tâches SharePoint et Project dans le Newsfeed :
    1. WMA
    2. User Profile Service Application
    3. My Site SharePoint
    4. Search Service Application

       

  2. Pour l’agrégation des tâches exchange il faut tout le 1. Plus :
    1. Exchange 2013

Comment ca se configure ?

  1. Création et paramétrage d’un SSA (Search Service App)
  2. Création et paramétrage du MySite Host
  3. Création et configuration de l’UPSA (User Profile Service App)
  4. Création du Work Management Service App (WMA)
  5. Création d’un sites SharePoint ou Project
  6. Assigner des tâches
  7. Faire un Crawl !

Attention si vous avez un project serveur associé à SharePoint 2013, considérer les points suivants :

  1. Créer WMA dans un Application Pool trusté par Project Server c’est plus simple pour provisionner les sites PWA APRES que le WMA soit créé.
  2. Si le PWA existe déjà, vous devrez donner les droits manuellement au compte WMA sur la base de données de Project Server (PSDataAccess role)

Le souci courant

SharePoint ne rafraichi pas les tâches… et reste en 1901…

Problème 1

Symptômes

Solution

Donner les droits au compte qui est en Full Control sur le WMA, le full control sur l’UPSA

Voici la configuration de l’UPSA

 

Et celle du WMA

 

Problème 2

Symptômes

L’agrégation ne fonctionne pas

Essayer sur un nouveau site, nouvelle liste, nouvel utilisateur.

Les tâches sont assignées mais rien n’apparait dans les tâches du MySite

Même si vous attendez plusieurs heures

 

Solution

Le processus n’est pas réellement documenté mais il peut s’agir d’un contrôle temporel, donc lié à la recherche, plus précisément au Crawl

Vérifier que l’utilisateur à bien un MySite, que ces tâches sont rafraichies, et surtout d’un crawl ai eu lieu

Vérifier que la recherche fonctionne,

Vérifié également que l’utilisateur à bien accès aux tâches de la liste, s’il n’a pas la permission de les voir, rien ne s’affichera…

Vérifier le Crawl Continu pour les sites SharePoint, et gérer les intervalles de temps du Crawl Continu :

$ssa= get-spenterprisesearchserviceapplication

$ssa.SetProperty(« ContinuousCrawlInterval »,x)

X étant le nombre de minutes entre chaque intervalle (par default il est de 15min), le plus court est de 1minute.

A Savoir

L’agrégation multi ferme du WMA n’est pas supportée même si la ferme est dans le même domaine.

La configuration ne s’effectue qu’en PShell

Pas d’option dans la CA

Set-SPWorkManagementServiceApplication

Les paramètres les plus importants sont en Jaune et Rouge

Paramètre

Obligatoire

Description

Identity

Obligatoire

Spécifie l’application de service à mettre à jour.

Le type doit correspondre à un GUID valide au format 12345678-90ab-cdef-1234-567890bcdefgh, un nom d’application de service de paramètres d’abonnement valide (par exemple SubSettingsApp1), ou une instance d’un objet SPWorkManagementServiceApplication valide

ApplicationPool

Facultatif

Spécifie le nom d’un pool d’applications à utiliser ; par exemple, SharePoint – 1213. Si aucune valeur n’est spécifiée, le pool d’applications par défaut est utilisé.

AssignmentCollection

Facultatif

Gère les objets de manière à optimiser leur libération. L’utilisation d’objets, tels que SPWeb ou SPSite, peut consommer des quantités de mémoire élevées et le recours à ces objets dans des scripts Windows PowerShell implique une gestion appropriée de la mémoire. À l’aide de l’objet SPAssignment, vous pouvez affecter des objets à une variable et les libérer dès qu’ils ne sont plus nécessaires afin de libérer de la mémoire. Lorsque les objets SPWeb, SPSite ou SPSiteAdministration sont utilisés, ils sont automatiquement libérés si une collection d’attributions ou le paramètre Global ne sont pas utilisés.

Remarque :

Lorsque le paramètre Global est utilisé, tous les objets sont contenus dans le magasin global. Si des objets ne sont pas utilisés immédiatement ou libérés à l’aide de la commande Stop-SPAssignment, un scénario d’insuffisance de mémoire peut se produire.

Confirm

Facultatif

Vous demande confirmation avant d’exécuter la commande. Pour plus d’informations, tapez la commande suivante : get-help about_commonparameters

MinimumTimeBetweenEwsSyncSubscriptionSearches

Facultatif

Spécifie le délai minimal (en minutes) pour trouver de nouveaux clients qui veulent synchroniser des tâches liées aux services web Exchange. Chaque client doit être trouvé une seule fois à l’aide de cette routine. Les utilisateurs de ce client seront inclus lors de la prochaine synchronisation de client.

MinimumTimeBetweenProviderRefreshes

Facultatif

Spécifie le délai minimal (en minutes) entre les actualisations d’un fournisseur pour un utilisateur donné. Il ne peut pas y avoir d’actualisation des données si la valeur n’est pas atteinte et si toutes les opérations d’actualisation contiennent une valeur Null avant une actualisation. La valeur par défaut est 5 minutes.

MinimumTimeBetweenSearchQueries

Facultatif

Spécifie le délai minimal (en heures) entre les demandes de recherche pour un utilisateur donné. Ce paramètre sert à découvrir les nouveaux fournisseurs inconnus afin de leur affecter des tâches pour cet utilisateur. La valeur par défaut est 3 heures.

Name

Facultatif

Spécifie le nom de l’application de service Gestion du travail.

NumberOfSubscriptionSyncsPerEwsSyncRun

Facultatif

Spécifie le délai minimal (en minutes) entre les recherches d’un nouveau client pour la synchronisation des tâches liées aux services web Exchange. Chaque client doit être trouvé une seule fois à l’aide de cette méthode. La valeur par défaut est 30 minutes.

NumberOfUsersEwsSyncWillProcessAtOnce

Facultatif

Spécifie le nombre maximal d’utilisateurs qu’un ordinateur d’une instance de service doit synchroniser à l’aide des services web Exchange en une seule fois parmi tous les clients. Ceci a une influence directe sur la charge de l’ordinateur. Chaque synchronisation dure 45 secondes (constante). La valeur par défaut est 10.

NumberOfUsersPerEwsSyncBatch

Facultatif

Spécifie le nombre maximal d’utilisateurs qu’une instance de service tentera de synchroniser sur un client donné à l’aide des services web Exchange en fonction de l’intervalle du travail du minuteur. La valeur par défaut est 100.

WhatIf

Facultatif

Affiche un message qui explique l’effet de la commande au lieu de l’exécuter. Pour plus d’informations, tapez la commande suivante : get-help about_commonparameters

 

Concernant l’agrégation des tâches exchange, elles tournent via un Job SharePoint configuré pour fonctionner toutes les minutes.

C’est SharePoint qui appel Exchange, plus simple en terme de configuration, et nécessité uniquement un seul trust.

Par défaut la fonction de ferme est activée

Une fois configurer les utilisateurs peuvent alors utiliser la nouvelle action du ruban :

 

Recommandations

Si Exchange 2013 ne fait pas parti de votre SI, alors il est recommandé de désactiver la fonction d’agrégation de la ferme SharePoint afin de ne pas perturber plus l’utilisateur.

Le bouton Sync to Outlook n’apparaitra pas, et le bouton Connect to Outlook le remplacera.

Pour plus de détail je vous invite a lire le White Paper suivant : https://www.microsoft.com/en-us/download/details.aspx?id=38799

« My Tasks Aggregation in SharePoint Server and ExchangeTask Integration« 

Mettre à jour les Office Web Apps

Hi folks !

Aujourd’hui je vous propose un article légèrement moins technique que d’habitude concernant les Office Web Applications de SharePoint 2013, la partie qui sert à visionner des fichiers Word, Excel, … depuis un portail SharePoint, un peu comme ça :

Les WAC sont à installées sur un autre serveur que celui de SharePoint, récemment il y a eu une mise à jour Des Office Apps 2013.

Pour l’installation des WAC, je vous invite à consulter cet article : https://mickey75019.wordpress.com/2012/08/27/installation-des-offices-web-applications-sharepoint-2013/

Une fois que vous avez installé les mises à jour des WAC, vous vous retrouverez avec une erreur lors de la consultation en ligne d’un fichier Office.

Pour rappel les logs de WAC se trouvent ici : C:\ProgramData\Microsoft\OfficeWebApps\Data\Logs\ULS

Cette erreur est due à la mise à jour d’un fichier XML relatif à la topologie de la ferme de WAC :

Il est alors nécessaire d’effectuer les commandes suivantes sur le serveur WAC :

Remove-OfficeWebAppsMachine

New-OfficeWebAppsFarm –InternalURL « http://SP15WAC &raquo; –ExternalURL « http://10.10.10.10 &raquo; –AllowHttp –EditingEnabled

A noter si vous avez plusieurs serveur WAC dans votre ferme, il est nécessaire de passer la commande suivante :

New-OfficeWebAppsMachine –MachineToJoin « SP15WAC2.corp.com »

Qu’est-ce que cette mise à jour de Mars a apportée ?

  • 6 Nouveaux binding pour Excel
  • La possibilité de lire les PDF 🙂
  • Le View & Preview depuis les vues mobiles pour les PDF aussi (cf le WordPDF – c’est le nouveau nom du WOPIBinding associé)

Pour ajouter le nouveau Binding, il faut passer la commande suivante :

New-SPWOPIBinding –ServerName « SP15WAC.corp.com » –Application WordPDF

Si vous obtenez l’erreur suivante, passer alors la commande avec -AllowHTTP

111

Avec le –AllowHttp et tout se passera bien 🙂

1111

Et voilà la fameuse erreur de non disponibilité des WAC est corrigée, tout est rentré dans l’ordre et en plus les WAC sont up to date J

Update : Pour visualiser votre fichier PDF, il sera évidemment nécessaire d’installer un viewer PDF supporté. Hélas ça ne marche pas avec l’ensemble… j’ai testé avec Adobe Reader (Classique) ça fonctionne 🙂

Enjoy & Have fun !

Le Cache Distribué

12 avril 2013 3 commentaires

Hi Folks !

Aujourd’hui j’ai envie de vous parler du DistributedCache de SharePoint 2013  alias le Cache Distribué ou encore le AppFabrikCache

Ce cache est de base prévu pour le cloud de Microsoft, Azure mais a été porté pour les versions OnPremise également.
Je vous propose à travers ce post d’apprendre à connaitre un peu ce nouvel ami (Distributed Cache) de voir comment est-ce qu’il s’installe, ce configure, ce paramètre et quelques commandes SharePoint PowerShell pour gérer un peu tout ceci.

Tout d’abord, le Distributed Cache, qu’est-ce que c’est ?

Lorsque vous envisagez de mettre en œuvre le service de cache distribué, considérer que le service Distributed Cache peut être déployé en deux modes:

Le mode dédié

Le mode co-localisée.

En mode dédié, tous les services autres que le service de cache distribué est arrêté sur le serveur d’application qui exécute le service de cache distribué.

En mode co-localisée, le service Distributed Cache fonctionne avec d’autres services sur le serveur d’applications. Mode dédié est le mode recommandé dans lequel déployer le service de cache distribué.

En image c’est plus simple :

Lorsque le programme d’installation de SharePoint Server 2013 fonctionne préalable, il installe Windows Server AppFabric. Telle est l’approche recommandée pour l’installation de Windows Server AppFabric sur un serveur qui exécute SharePoint Server 2013.

On y met quoi dans le cache ?

Tout est fait automatiquement !

Il y a quelque morceau de data, mais la majorité proviens des fonctionnalités sociales de SharePoint 2013 (tags, activité de documents) Il y a également pas mal de morceau d’authentification et de sécurité qui sont mises en cache pour des questions de performances (Claims, token, security trimming, …)

La liste complète ce trouve ici : http://technet.microsoft.com/en-US/library/jj219700.aspx

 

Planification de la capacité pour le service Distributed Cache

Plan & Use Distributed Cache :

http://www.microsoft.com/en-us/download/details.aspx?id=35557

 

Le Distributed Cache stocke des données en mémoire et n’a pas de dépendance à l’égard des bases de SharePoint. Services de SharePoint demande des ressources importantes de mémoire qui peuvent affecter la performance du service de cache distribué.

La performance du service de cache distribué est fortement influencée à la fois par le choix de l’architecture et de l’allocation de mémoire pour le service de cache distribué.

Le tableau suivant répertorie les différentes recommandations de la mémoire et de l’architecture pour le service de cache distribué, en fonction du nombre total d’utilisateurs.


Dans une ferme SharePoint Server 2013, il doit y avoir au moins un hôte de cache qui exécute le service de cache distribué.

L’allocation de mémoire

Le service d’allocation de mémoire cache distribuée pour la taille du cache est réglé sur une valeur par défaut de 10 pour cent de la mémoire physique totale lorsque SharePoint Server s’installe.

Il est possible de modifier l’allocation de mémoire pour le service de cache distribué uniquement en PowerShell avec la commande Update-SPDistributedCacheSize.

Le service Distributed Cache peut se voir attribuer un maximum de 16 Go de mémoire par hôte de cache dans le cluster de cache. Il est vivement conseillé de conserver 2 Go de mémoire pour d’autres services qui s’exécutent sur le serveur, et d’affecter la mémoire restante pour le service de cache distribué.

Important:
Sur un serveur qui possède plus de 16 Go de mémoire physique totale, allouer un maximum de 16 Go de mémoire pour le service de cache distribué. Si vous allouez plus de 16 Go de mémoire au service de cache distribué, le serveur peut cesser de répondre.

Si vous avez besoin de plus de mémoire, vous pouvez configurer le service de cache distribué pour fonctionner sur plusieurs serveurs d’application. Dans ce cas, le cache s’étend sur tous les serveurs qui exécutent le service de cache distribué, et agit comme un cache qui prend en charge l’ensemble de la ferme. Pour ajouter un autre serveur d’application, adhérer au nouveau serveur d’applications à la batterie de serveurs à l’aide de l’Assistant Configuration de SharePoint. Vous devez décider si le nouveau serveur d’applications doit s’exécuter en mode dédié ou co-implantés.

Vous devez vous assurer que l’allocation de mémoire affecté au service de cache distribué est le même sur tous les serveurs qui exécutent le service de cache distribué. Données mises en cache sont stockées sur un serveur, et non pas les deux serveurs.

Lorsque le service de cache distribué est exécuté en mode colocalisé, la mémoire physique du serveur doit être augmentée et tous les services non essentiels arrêté.

Pour plus de performance, il est recommandé de ne pas faire fonctionner l’ensemble des services suivant sur la même machine :

  • SQL Server 2008 ou SQL Server 2012
  • Service de recherche
  • Excel Services dans SharePoint
  • Services de Project Server

Lors de la planification des postes de travail des développeurs, poste de travail du développeur devrait avoir un minimum de 32 Go de mémoire physique totale. Sur les stations de travail des développeurs, SharePoint Server 2013 est installé comme un déploiement de serveur unique. Cela signifie que le service de cache distribué est déployé en mode colocalisé. En mode co-localisée, il y aura concurrence pour les ressources mémoire. Pour gérer l’allocation des ressources mémoire, un développeur peut arrêter les services qui ne sont pas utilisés, ou ils peuvent périodiquement redémarrer SQL Server.

Important:
Le service de cache distribué peut fonctionner sur un serveur physique ou virtuel. Lors de l’utilisation de la virtualisation, n’utilisez pas de mémoire dynamique pour gérer les ressources de mémoire partagée parmi d’autres machines virtuelles et les serveurs de cache distribué. L’allocation de mémoire pour serveurs virtualisés cache distribué doit être fixé.

Distribué séquence de configuration du cache de service

Démarrage et arrêt du service de cache distribué en résulte une manière non planifiées dans le service Distributed Cache devenir instable. Lorsque vous effectuez la configuration initiale d’un serveur SharePoint 2013 ferme, effectuez les étapes suivantes dans l’ordre suivant:

  1. Exécutez l’Assistant Configuration de rejoindre tous les serveurs de la batterie de serveurs. Le service de cache distribué est démarré sur tous les serveurs Web et les serveurs d’applications de la batterie de serveurs.
  2. Lorsque vous êtes prêt à configurer le service de cache distribué, vérifiez que le service de cache distribué est en cours d’exécution sur tous les serveurs de la batterie de serveurs. Ensuite, arrêter le service de cache distribué sur tout serveur qui n’est pas destiné à faire partie du cluster de cache.

Important:
Si vous arrêtez le service de cache distribué sur tous les serveurs qui exécutent le service de cache distribué, ne redémarrez pas le service de cache distribué sur un seul serveur. Redémarrez le service de cache distribué sur tous les serveurs de cache distribué en même temps. Bien que le service Distributed Cache-ci redémarre, le rendement initial est affecté pendant une courte période.

Comme alternative à la méthode précédente, un administrateur peut installer SharePoint Server 2013 sans l’inscription du service de cache distribué sur les serveurs ne sont pas destinés à faire partie du cluster de cache. Ceci peut être réalisé en utilisant le paramètre skipRegisterAsDistributedCachehost avec la New-SPConfigurationDatabase ou les applets de commande Connect-SPConfigurationDatabaseWindows PowerShell, ou lors de l’exécution psconfig.exe à la ligne de commande.


Remarques concernant la configuration du pare-feu
Le service Distributed Cache utilise les ports de communication suivants:

  • 22233
  • 22234
  • 22235
  • 22236

Port Name

Default Value

Application Configuration File Attribute

Cluster Configuration File Attribute

Cache port 22233 cachePort cachePort
Cluster port 22234 Not applicable clusterPort
Arbitration port 22235 Not applicable arbitrationPort
Replication port 22236 Not applicable replicationPort

Remarque:
Autorisé les connections entrantes et sortantes du service de cache distribué ICMPv4.

Un peu de debug de Cache

Start & stop Distributed Cache service

Via la Central Administration

  1. Depuis la Central Administration, click Application Management.
  2. Depuis Service Applications, click Manage Services on Server.
  3. Sélectionner Distributed Cache service.
  4. Si le service de cache distribué est started et que vous souhaitez le stopped click Stop ; sinon Start.

Via PowerShell

At the Windows PowerShell command prompt, run the following command:

$instanceName = »SPDistributedCacheService Name=AppFabricCachingService »

$serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) –eq $instanceName –and ($_.server.name) –eq $env:computername}

$serviceInstance.Provision()

Via PowerShell

At the Windows PowerShell command prompt, run the following command:

$instanceName = »SPDistributedCacheService Name=AppFabricCachingService »

$serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) –eq $instanceName –and ($_.server.name) –eq $env:computername}

$serviceInstance.Unprovision()

Allouer de la mémoire au Distributed Cache service

Lorsque SharePoint s’installe, 10% du total de la mémoire physique est alloué. Le Distributed Cache service utilize 50% de cette mémoire allouée comme stockage (aka cache size), et l’autre moitié est utilisée pour gérer la mémoire. Lorsque le cache « grandi » le service utilise les 10% alloué.

Vous souhaitez augmenter l’allocation mémoire du cache distribué si :

  • Vous ajouter de la mémoire au serveur.

    Le Distributed Cache service ne recalcule pas automatiquement les 10% de mémoire allouée, donc si vous augmentez la mémoire du serveur, alors penser à augmenter également la taille mémoire du cache.

  • Si vous ferme possède un serveur de cache dédié.

    Utiliser alors la méthode suivante pour calculer combien de mémoire alloué au Cache Distribué :

    • Determiner la mémoire total du serveur. Par exemple vous avez un serveur avec 16Go de RAM total de disponible sur le serveur.
    • Réserver 2Go pour les autres processus. Par exemple, 16Go – 2Go = 14Go.
    • Prennez 50% des 14Go et convertisser le en Mo. 14Go/2 = 7Go = 7 000MoTake half of the remaining memory, and convert it to MB. For example, 14 GB/2 = 7 GB or 7000 MB. C’est votre cache size ! (Ne doit pas dépasser les 16Go)
    • Utiliser ensuite les commandes suivantes pour allouer la mémoire.

Change the memory allocation of the Distributed Cache

Use this procedure to reconfigure the memory allocation of the cache size of the Distributed Cache service.

  • Use-CacheCluster
  • Get-AFCacheHostConfiguration -ComputerName -CachePort « 22233 »

Où:

  • Stopper le Distributed Cache service sur tous les caches hosts.
  • Update-SPDistributedCacheSize -CacheSizeInMB CacheSize

Où:

  • CacheSize est la taille mémoire en Mo (7 000Mo du serveur qui as 16Go)
  • Restart le Distributed Cache service sur tous les serveurs du cache host.

Ajouter / Supprimer un serveur dans un cluster de Cache Distribué

Lorsque vous supprimer un serveur du cluster de cache, assurez-vous que le service soit stoppé. Puis ensuite dé commissionner le serveur proprement afin de le dé enregistrer de la ferme.

Désenroller le service signifie qu’il ne sera pas visible depuis la page listant les services du serveur SharePoint dans la Central Administration.

Ajouter un serveur au cache cluster et démarrer le Distributed Cache service

Add-SPDistributedCacheServiceInstance

Retirer un serveur du cache cluster

Remove-SPDistributedCacheServiceInstance

Graceful shutdown du Distributed Cache service

Dans SharePoint 2013, un cluster de cache existe lorsqu’une ou plusieurs machines effectue le service de Distributed Cache.

Lors des périodes de maintenances des serveurs, vous pouvez être amené à sortir le serveur du cluster de cache. Afin d’éviter une perte de données associé vous devez utiliser la procédure suivante (Graceful) avant de retirer le serveur du cluster de cache.

La procédure Graceful est exécutée sur l’hôte de cache qui est retiré du cluster de cache. Cet hôte de cache stocke une partie des données mises en cache. La procédure d’arrêt progressif (Graceful) transfère toutes les données mises en cache de l’hôte de cache sur lequel la procédure d’arrêt progressif est en cours d’exécution sur un autre hôte de cache à la ferme.

Le processus de transfert est de 15 minutes ou plus selon le nombre d’articles existe dans le cache. Lorsque le processus de transfert est terminé, retirer l’hôte de cache à l’aide de la cmdlet Remove-SPDistributedCacheServiceInstance n’entraîne pas de perte de données.

Stop-SPDistributedCacheServiceInstance -Graceful

Remove-SPDistributedCacheServiceInstance

Changer le compte de service

Quand une ferme SharePoint est configure, le compte de service utilisé est celui d’installation pour le service AppFabric Caching service. Pour le mettre à jour suivez la procedure suivante:

  1. $farm = Get-SPFarm
  2. $cacheService = $farm.Services | where {$_.Name -eq « AppFabricCachingService »}
  3. $accnt = Get-SPManagedAccount -Identity domain_name\user_name
  4. $cacheService.ProcessIdentity.CurrentIdentityType = « SpecificUser »
  5. $cacheService.ProcessIdentity.ManagedAccount = $accnt
  6. $cacheService.ProcessIdentity.Update()
  7. $cacheService.ProcessIdentity.Deploy()

Réparer un cache host

Au cours de l’installation, de la configuration ou de la maintenance, le service Distributed Cache peut tomber dans un état de non-fonctionnement.

Indice : Suivez de près les règles de santé dans l’Administration centrale, ou lorsque les utilisateurs utiliser les fonctionnalités de SharePoint Server 2013, qui s’appuient sur le cache distribué. Par exemple, l’échange de News sur mon site d’un utilisateur démarre avec des erreurs de déclaration. En outre, les administrateurs peuvent recevoir le message d’erreur « cacheHostInfo est nul »

Utilisez alors la procédure suivante :

  1. Get-SPServiceInstance pour lister all services de tous les serveurs de la ferme. Noter le GUID du Distributed Cache service du serveur à réparer.
  2. $s = Get-SPServiceInstance GUID
  3. $s.delete()
  4. Add-SPDistributedCacheServiceInstance pour reinstaller et start le Distributed Cache service.

Etat de santé du cache host

Le calcul de l’état de santé du service de Distributed Cache s’effectue de la manière suivante:

Health score = 100/ nombre total de partitions de cache

Pour trouver le nombre total de partitions, éxécuter la commande Get-CacheClusterHealth.

Cette commande donne le nombre de partition de cache par serveurs du cluster de cache.

Exemple:

Nous avons 3 serveurs dans la ferme SharePoint ou le service CacheCluster est activé.

Chaque serveur possède 10 partitions, nous avons donc 30 partitions.

Le Health score sera donc de 100/30= 3.33 par serveur.

L’article suivant permet de mieux comprendre le principe : http://msdn.microsoft.com/en-us/library/ff921010(v=azure.10).aspx
– Health Monitoring Tools (Windows Server AppFabric Caching)

Health Category

Description

Healthy
The cache is operating normally. This is the target state for all caches.
UnderReconfiguration
The cache is under reconfiguration. This is an internal state that may have several causes, but it should be temporary and resolve to healthy.
NotPrimary
The cache is not currently available. This can happen when secondary copies are promoted to primary. During this transition, the cache may temporarily have a state of NotPrimary. This state should typically resolve to healthy.
NoWriteQuorum
The cache is read-only, because the cache is unable to create the required number of replicas on secondary cache hosts. This occurs when the cache has the high availability option enabled (Secondaries = 1). In this scenario, there must be at least two running cache hosts in the cluster, one for the primary copy of the cached item and another for the secondary copy.
Throttled
The cache is read-only, because the cache host is in a throttled memory state. This is a low-memory condition.

Ce qu’il faut retenir

Manipuler le cache avec beaucoup de précaution avec l’option Graceful pour éviter de perdre de données.

N’attribuer pas de mémoire dynamique à SharePoint => Cela ce conclura par une réinstallation de votre plateforme si c’est le cas.

N’allouez pas plus de 16Go de RAM à la totalité des hôtes du cluster et pas plus de 16 Machines dans le ClusterCache

Les commandes suivantes seront très utiles pour avoir le Health Score de votre Cache-Cluster

Use-CacheCluster

Get-CacheClusterHealth

N’ignorez pas les alertes de performances du ruban rouge de la Centrale d’Administration !!

Enjoy & Have fun !

Catégories :Office 15, SharePoint Étiquettes : ,

Access Services 2013

10 octobre 2012 2 commentaires

Hey folks !

Dans cet article je vais vous parler d’Access, jusque-là ça devrait aller, donc parlons de Access 2013 (ahhhh) et plus précisément de SharePoint 2013 et d’Access 2013 à travers les Apps.

Si vous aussi vous avez eu des problèmes d’installation, des fausses joies lorsque Access envoie le tout vers SharePoint, puis qu’une fois sur le site SharePoint, vous voyez bien votre apps, mais avec quelques problèmes … Et bien nous allons démystifier tout ça maintenant à travers quelques copie d’écran J

Tout d’abord coté pré requis :

  • SharePoint Server 2013
  • Access 2013
  • SQL 2008 R2 SP1, ou SQL 2012 et si vous voulez le SP1

Jusque-là je pense que tout le monde suit, continuons un peu plus dans la technique, et voici les éléments nécessaire pour que fonctionne bien du premier coup 🙂

Windows

Créer un domaine isolé

Les Apps, sujet d’actualité du moment, et nouveau modèle applicatif de SharePoint, il est nécessaire de configurer un domaine isolé dédié aux apps. Voici la procédure :

http://technet.microsoft.com/en-us/library/fp161236%28v=office.15%29.aspx

 

SQL

Configurer SQL Server pour Access Services

Tout d’abord les fonctionnalités suivantes doivent être installées :

  • Database Engine Services
  • Full-Text and Semantic Extractions for Search
  • SQL Management Tools
  • Client Tools Connectivity

Si SQL est déjà installé, vous pouvez simplement ajouter ces fonctions via le setup.


Voici les fonctionnalités nécessaires au minimum:

– DataBase Engine Service

– Full-Text and semantic Extractions for Search

– Client Tools Connectivity

– Management Tools – Basic

– Management Tools – Complete

– SQL Client Connectivity SDK

Ensuite il faut activer la fonction « Enable Contained Databases » mettre la valeur à « true »

(Depuis le server management studio, click droit sur les propriétés du serveur)


Le mode de sécurité de SQL, il est nécessaire que la double authentification soit activée (Windows & SQL) car Access travail directement avec SQL et s’authentifie également de cette manière.


Ajuster les permissions du compte applicatif SharePoint.

Quand vous crééz un service applicative Access 2013, vous serez prompté pour savoir si vous souhaitez créer un nouveau pool d’application ou en utiliser un existant. L’identité du pool d’application doit avoir les droits de création de bases de données. Le compte que j’utilise en demo est spservice, ce compte doit donc avoir les rôles suivants:

  • dbcreator,
  • public,
  • securityadmin


Activer les Named Pipes & TCP/IP

Depuis la console de configuration de SQL, vous devez activer les protocols suivants :


Créer les règles pour le firewall,

Créer deux règles entrantes pour activer les ports 1433 et 1434 sur les instances SQL en TCP et en UDP. Activer ces règles pour les profils Domain et Private. Ce n’est pas utile pour le Public.




Une fois SQL correctement paramétré, passons à Access 2013

Coté SharePoint, il est maintenant nécessaire de configurer Access Services 2013

Depuis la console d’administration centrale de SharePoint

  • Manager services on server et vérifier que les services suivants sont bien démarré.
  • Access Services (this is the Access Services 2013 service)
  • Access Database Service 2010 (for viewing and modifying existing 2010 Access Web databases)
  • App Management Service
  • Microsoft SharePoint Foundation Subscription Settings Service
  • Secure Store Service


Si ce n’est pas le cas, ou si certain ne sont pas créer, créée les avec la procédure suivantes :

[http://msdn.microsoft.com/fr-fr/library/fp179923%28v=office.15%29.aspx]

Voir les scripts en PowerShell 🙂

Créer le Secure Store Service Application


Une fois que le Secure Store Service Application est créer il est possible que vous deviez effectuer un iisreset.

Générer une Secure Store Key


Assurez-vous que le service Secure Store est bien démarré.

Coté mémoire, surveillé bien, car il vous faut au minimum 5% de mémoire disponible sinon les appels WCF vont échouer…

Créer l’Access Services 2013 Service Application

On y est …. presque,

Créer un nouveau Access Services service application.  Il y a deux options, la première pour Access Services, et la seconde pour Access Services 2010.  Sélectionner Access Services 2013, la seconde option permet de vérifier le fonctionnement avec des applications Access 2010


Le nom de la base de données n’est pas automatiquement créer, car la logique serait d’utiliser un serveur SQL différent / une autre instance pour contenir les bases de données d’Access Services 2013.


Coté Access 2013

Lancer Access (Pas trop loin 🙂 ) sélectionner « Custom web app ».  Entrer un nom (celui de votre Apps) puis une URL là ou sera déployé l’Apps Access. Puis valider


Quelques instant plus tard, votre apps access est bien créée


Ouvrer l’app dans Access 2013, créer vos tables, et c’est parti ! (Il y a des template assez sympa pour commencer)


 

Sinon vous pouvez effectuer la création de l’apps depuis SharePoint même

> Add an Apps > (sur la 2ème page) > Access, donner lui un titre, patientez quelques secondes

 

What Did It Do?

Pourquoi tant de configuration dans SQL ? Que s’y passe t il ??

En fait lorsque vous créer une Apps Access, le service créer une base de données dans SQL et lui applique un ensemble de paramètes que nous avons défini, Certains de ces paramètres sont nécessaire au bon fonctionnement d’Access.


Si vous partez d’un template, ouvrez une des tables, et regarder de plus près la table Customers que vous venez de créer avec Access.


Dans Access Service 2010, les tables sont conerties en listes, les vues, en pages aspx, …

Dans Access Services 2013, fini le cirque de remise en forme, tout est en base de données donc dans SQL… Vous voyez pourquoi il est plutôt recommandé d’utiliser une instance différente de celle de SharePoint maintenant 😉

 

Enjoy & Have Fun !