Stefan Plizga - Skype for Business

Partage d'expérience autour de Lync & Skype for Business

Information d'inactivité erronée sur Skype for Business

Lorsqu'on utilise le client Lync ou Skype for Business, on voit en général le temps d'inactivité des personnes de sa liste de contacts, par exemple "Alice - Offline (2 days)".

Suite à une migration de Lync Server 2013 vers Skype for Business Server 2015, certains utilisateurs qui se connectaient régulièrement à Skype for Business apparaissaient avec un status "Offline (45 days)" lorsqu'ils étaient déconnectés, 45 days représentant le nombre de jours depuis la migration de Lync Server 2013 vers Skype for Business Server 2015.

Ce problème est plus ou moins décrit dans la KB http://support.microsoft.com/en-us/kb/3056287, qui indique toucher Skype for Business Online et Skype for Business Server (ce n'est pas très clair dans l'article mais c'est bel et bien le cas). D'après l'article, le problème a été solutionné dans Skype for Business Online mais pas encore dans Skype for Business Server.

Le point intéressant en diagnostiquant ce problème, c'est qu'on se rend compte qu'une partie de l'information d'inactivité, appellée LastActive dans Lync/Skype for Business, n'est pas répliquée correctement dans la base RTCLOCAL des serveurs Front-End qui hébergent le Routing Group de l'utilisateur. Pour ceux que ça intéressent, cela peut se voir simplement en utilisant l'outil DBAnalyze.exe, disponible dans les Resource Kit Tools de Lync Server 2013 (les RK Tools de Skype for Business Server 2015 ne sont pas encore disponibles mais l'outil en version 2013 fonctionne bien pour cet usage). Sur chaque Front End du pool, il faut donc exécuter la commande suivante:

C:\Program Files\Microsoft Lync Server 2013\ResKit>DBAnalyze.exe /report:user /user:<Adresse SIP de l'utilisateur> /sqlserver:.\RTCLOCAL

En analysant ce que l'outil donne, on peut voir que l'attribut LastActive n'a pas la même valeur sur tous les Front End.

Microsoft ne propose pas de solution à ce problème, alors voici la solution que j'ai utilisée. Elle est un peu violente mais fonctionne très bien : il s'agit de réinitialiser le contenu de la base RTCLOCAL, car l'information LastActive n'est pas synchronisée dans le Back End SQL. La procédure est très simple, à faire sur chaque Front End en prenant le temps d'attendre que l'opération soit complètement terminée sur un Front End avant de passer au suivant :

  1. Lancer Skype for Business Server Management Shell en tant qu'administrateur
  2. Stopper les services Skype for Business Server avec Stop-CsWindowsService
  3. Lancer la commande Install-CsDatabase -LocalDatabases -Clean (cela va supprimer les bases de l'instance RTCLOCAL et les recréer)
  4. Redémarrer les services Skype for Business Server avec Start-CsWindowsService
  5. Attendre quelques minutes, car ce démarrage revient au même qu'un premier démarrage d'un Front End après une installation fraîche, il doit donc récupérer de l'information depuis le Back End et Skype for Business Server va rebalancer les Routing Groups. Compter environ 5 minutes d'attente.

Cette technique permet de remettre les Front End dans un état initial et de récupérer le contenu "propre" depuis le Back End (liste de contacts, conférences planifiées...). Cette opération génère cependant une interruption de service car le mouvement des Routing Groups pendant l'opération peut faire tomber les utilisateurs connectés dans le mode "Résilience" où la liste de contact n'est pas disponible. Il est donc fortement recommandé de réaliser de type d'opération en dehors des périodes ouvrées.

Pour ma part, l'opération complète a pris environ 30 minutes pour "nettoyer" un pool composé de 4 serveurs Front End.

-- Stefan

Focus sur In-Place Upgrade

Un point intéressant concernant la migration vers Skype for Business Server est qu'il est possible de mettre à jour son infrastructure Lync Server 2013 vers Skype for Business sans créer de nouveau pool mais tout simplement en faisant une mise à jour. L'objectif est multiple :

  • Conserver le matériel existant (les spécifications matérielles de Skype for Business Server 2015 sont identiques à celles de Lync Server 2013).
  • Réaliser la mise à jour rapidement sans repenser toute son architecture.
  • Réduire le coût de déploiement.
  • S'assurer au passage que l'infrastructure Skype for Business ainsi obtenue est au niveau de mise à jour le plus récent

Un détail très important est que cette mise à jour "sur place", où In-Place Upgrade en anglais, n'est possible que pour une infrastructure Lync Server 2013. Les entreprises qui ont une infrastructure Lync Server 2010 devront réaliser une migration "classique" en créant un nouveau pool Skype for Business Server et en déplaçant les utilisateurs vers ce nouveau pool. De même, les entreprises qui ont une mixité Lync Server 2010 et Lync Server 2013 devront, au préalable d'une quelconque évolution, rationaliser leur environnement pour avoir préférablement que du Lync Server 2013 qui permettra par la suite une mise à jour In-Place.


Scénarios de mise à jour

Ceci étant dit, passons maintenant aux possibilités de mettre à jour une infrastructure Lync Server 2013 vers Skype for Business Server 2015 :

  1. Mise à jour du pool avec interruption de service
  2. Mise à jour du pool avec déplacement d'utilisateurs et sans interruption de service


Dans le scénario "Mise à jour du pool avec interruption de service", le principe est très simple :

  1. Informer les utilisateurs de la maintenance qui introduit une interruption de service.
  2. Mettre à jour le pool Lync Server 2013 vers Skype for Business Server 2015.
  3. Vérifier que tout fonctionne.
  4. Informer les utilisateurs que la maintenance est terminée.


Dans le scénario "Mise à jour du pool avec déplacement d'utilisateurs et sans interruption de service", on ajoute quelques étapes pour éviter une interruption de service. Le principe est le suivant :

  1. Avoir au préalable 2 pools Lync Server 2013.
  2. Déplacer les utilisateurs du premier pool vers le second pool.
  3. Mettre à jour le premier pool Lync Server 2013 vers Skype for Business Server 2015.
  4. Vérifier que tout fonctionne.
  5. Déplacer tous les utilisateurs du second pool Lync Server 2013 vers le premier pool mis à jour vers Skype for Business Server 2015.
  6. Mettre à jour le second pool Lync Server 2013 vers Skype for Business Server 2015.
  7. Vérifier que tout fonctionne.
  8. Déplacer les utilisateurs qui étaient à l'origine sur le second pool Lync Server 2013 vers ce pool maintenant en version Skype for Business Server 2015.


Il y a aussi certains points d'attention :

  • Il n'est pas recommandé d'utiliser le Pool Failover pour faire la bascule des utilisateurs pour la mise à jour de Lync Server 2013 vers Skype for Business Server 2015.
  • Pour autant, il ne faut pas supprimer le Pool Pairing mis en place sur Lync Server 2013 avant de mettre à jour son environnement vers Skype for Business Server 2015.
  • Cela signifie que l'environnement Lync Server 2013 doit être sain avant de procéder à la mise à jour vers Skype for Business Server 2015.
  • Il est fortement recommandé de mettre à jour deux pools en Pairing dans un intervalle de temps court.


On a parlé jusqu'ici des pools mais une infrastructure Lync Server et Skype for Business Server ne se limite pas uniquement à ces composants. Pour la mise à jour, l'ordre à suivre est le suivant :

  1. Pools en premier (avec mise à jour de la topologie au préalable pour chaque pool à mettre à jour).
  2. Composants partagés ensuite.
    • Mediation Server
    • Director
    • Edge
    • CMS
    • Persistent Chat

A noter que tous les rôles se mettent à jour à l'exception des SBA puisque ceux-ci sont soumis à la mise à disposition d'une image par le fabriquant de la passerelle.

En termes de système d'exploitation, Skype for Business Server fonctionne de Windows Server 2008 R2 à Windows Server 2012 R2. Cependant, Microsoft recommande de déployer Skype for Business Server sur Windows Server 2012 ou Windows Server 2012 R2 car ces deux versions peuvent bénéficier de Windows Fabric v3 tandis que Windows Server 2008 R2 ne dispose que de Windows Fabric v2. Même si la v2 est supportée, il est plus que probable que Microsoft concentre ses efforts d'optimisation de Windows Fabric en v3.


Processus de mise à jour

Voici les étapes principales du processus de mise à jour d'un pool :

  1. Installer les prérequis : sans les lister à ce stade, il s'agit d'avoir le dernier CU de Lync Server 2013 installé, SQL Server 2012 SP1 pour les bases de données, quelques hotfixes...
  2. Mettre à jour et publier la topologie, puis mettre à jour les bases de données à l'aide du Topology Builder : il s'agit d'aller dans le Topology Builder, choisir le pool Lync Server 2013 à mettre à jour pour qu'il se retrouve dans la catégorie "Skype for Business Server 2015" et de publier la topologie qui va se charger de mettre à jour les bases de données du pool.
  3. Stopper les services sur tous les serveurs du pool à mettre à jour.
  4. Lancer le Setup pour qu'il exécute la mise à jour : le Setup de Skype for Business Server 2015 va détecter que le serveur doit être mis à jour vers Skype for Business Server 2015 grâce aux informations de la topologie publiée et va se charger de désinstaller les binaires Lync Server 2013 pour installer ensuite ceux de Skype for Business Server 2015. De plus, grâce à un mécanisme nommé Smart Setup par Microsoft, le Setup va vérifier auprès de Microsoft Update s'il existe des mises à jour de Skype for Business Server qui seront le cas échéant déployées en même temps que la mise à jour de Lync Server 2013 vers Skype for Business Server 2015.
  5. Démarrer les services sur tous les serveurs du pool en même temps: une nouvelle cmdlet Start-CSPool facilite cette étape.


Avec ces petites étapes toutes simples, il est possible de mettre à jour son infrastructure Lync Server 2013 vers Skype for Business Server 2015.

-- Stefan