Wednesday, October 7, 2015

Applying updates to SfB Servers (Oct 2015 CU - 6.0.9319.88)

Have not done too many updates on the new Skype for Business pools, so made some notes based of my experiences with the Lync 2013 servers. There are new PS commands in SfB that really make it so much easier to go thru the whole process more efficiently and are more reliable (especially in a multi-member pool). No more guessing if the Fabric is "really" ready to take down the next member.

I upgraded a couple of SfB pools from RTM to version 6.0.9319.88 recently, and it was mostly painless on 2-member as well as 3-member pools. I say mostly, as my servers have "Windows Firewall" disabled by GPO so the pool would not start up because of that, giving me yet another grey hair :-). 

Step 1: Download and verify the update package. Right-click on the executable file and look at the properties. Ensure that the version information in the Details tab, matches up with the one you intend to apply to your servers.

Also look at the documentation to see if there are any prerequisites for the update. 

Step 2: Backup Lync config/user data. Have been bitten by things going horribly wrong and not having a backup of user data. Backup each pool before doing any updates.

Export-csconfiguration –filename d:\export\Lync_config_<date>.zip
Export-cslisconfiguration –filename d:\export\Lync_lis_<date>.zip
Export-csuserdata –filename d:\export\Lync_users_<date>.zip –poolfqdn

Step 3: Check the health of the Pool Fabric

Get-CsPoolFabricState -PoolFqdn

Look towards the end of the output. All the servers in the pool should be relatively equally balanced, and there should be no missing replicas or any issues that stand out. STOP right here and do not proceed if the fabric does not look healthy.

Step 4: Shutdown and patch the servers

For 2 member pools: Since a quorum cannot be maintained if you take down any of the pool members, Microsoft's instructions suggest to do them both at the same time.
  1. Run Stop-CsWindowsService (to stop all SfB services on that host)
  2. Apply the update (using SkypeServerUpdateInstaller.exe).
  3. Restart the OS if necessary (I always use the opportunity to restart the OS even if not necessary:-)).
  4. Once the server is back up and looking stable run command to re-balance the fabric - Reset-CsPoolRegistrarState -ResetType FullReset
  5. And finally run Start-CsPool -PoolFqdn to start the pool back up (do remember to start the "Windows Firewall" service if its not already running, else the pool will not start).

For 3 or more member pools:
  1. Check Pool readiness with Get-CsPoolUpgradeReadinessState (should see a "IsReadyForUpgrade:True" for the FE server before proceeding to take it out of the pool).
  2. There are some new SfB power-shell commands that should be used for removing members from the pool - Invoke-CsComputerFailover -NoStop -ComputerName <Server FQDN> (This command is kinda like the "graceful" switch from the Lync Server 2013 days. It drains the pool member, and prevents new connections to the member but in the case of SfB servers, does not actually shutdown any of the Lync services). It can take some time to drain, depending on how busy that server is. Default for WaitTime is 1 hour.
  3. Apply the update (using SkypeServerUpdateInstaller.exe).
  4. Restart the OS if necessary (I always use the opportunity to restart the OS even if not necessary:-)).
  5. Once the OS is stable run Invoke-CsComputerFailback -ComputerName to add it back into the pool.
  6. Repeat steps 1-5 for each member of the pool.

Bonus : Looks like SfB actually supports the "uninstallation" of updates. I don't remember seeing this with any Lync 2013 server documentation :-)

Step 5: Database upgrades

Curiously there are no steps currently for applying any SQL updates, probably because this CU did not have any, but I would generally follow up with making sure the DB versions are correct with Test-CsDatabase -ConfiguredDatabases -SqlServerFqdn | select databasename,installedversion,expectedversion, and update the schema if required.

Step 6: Testing

Have a test plan for all the services you use in your environment, like; 
  • Different client types (fat/mobile/web)
  • Internal/External connections (thru Edge/ direct to FE)
  • Conferencing
  • PSTN dialing
  • Federation
  • etc.

These notes were written specifically for the Oct 2015 SfB CU, but can be used as a starting point for any SfB upgrade in general. Do refer to the specific CU documentation for updates or changes to the process. This process works for me in my specific Lync/SfB environment so use your best judgement and fine-tune it for yourself. Basically... use it at your own risk :-).

1 comment:

  1. I'm fairly certain I would've never been able to figure this out all on my own (like I was trying to). Thank you!