注意:微软官方并未正式宣布Lync2013可以使用Sql Server的AlwaysOn高可用性技术,本文只是采起一些旁门左道取巧的办法达到该目的,其实施完成后还存在一些问题和风险,搭来稳定还好,若是真出了啥岔子……阅读本文也须要有必定的Lync2013实施经验,由于其中省略了一些你们熟知的步骤(主要是懒得截图凑篇幅,若是有步骤不明白能够留言交流)前端
Lync2013的下一代产品Skype for Business Server 2015已经发布,而且官方支持AlwaysOn sql
目前据咱们所知,Lync的后端SQL数据库高可用只能有两种办法数据库
一、SQL clustering后端
二、SQL mirroring服务器
(Database software support in Lync Server 2013)架构
前者须要额外的共享存储,后者须要一台额外的见证服务器。这样一来在中小型高可用架构当中,就会涉及到成本问题。ide
Alwayson是个好功能,靠着从DAG学来的经验(然而并无心跳线!?),用事务日志级别的复制保持主副本和辅助副本的同步,只须要使用到本地磁盘;成本低廉。(关于alwayson的原理,若是没据说过,或者跟它不熟,请先参考如下文档:oop
https://msdn.microsoft.com/zh-cn/library/hh403414.aspx )测试
早在2014年的Lync conference上,Lync产品组的人就说过alwayson功能将会添加对Lync的支持,然而时至今日……依然没有官方声称能够了。spa
因而某天实在忍不住了,仔细想了想其究竟是哪里不支持。作了一些分析以下:
其实这是一个先有鸡后有蛋的问题,首先AlwaysOn就跟Exchange的DAG同样,你得先有数据库,而后才能有DAG组。那么一样的,在安装好两台SQL Server以后,我得先创建数据库,而后才能对这些数据库进行AG组的操做。
并且,AlwaysOn就算搭建好了,那么它只提供一个侦听器供调用,这个侦听器的意义是,你只能对现有AG组里的数据库进行增删读写,而不能跳出去,经过这个侦听器来建立数据库。
那么问题来了,Lync 2013在发布拓扑的时候,就开始执行建立数据库的操做了。那,我在发布拓扑的时候,后端数据库链接里填的必定是某个单台数据库服务器名或是某个Cluster的名称,而不能是AlwaysOn的侦听器名称。
OK,那将拓扑里的后端数据库改为侦听器名称不就好了吗?问题又来了,拓扑发布了以后,这玩意儿他不让改…除非删除拓扑,即移除当前的中央存储位置。也就是说,咱们在Lync拓扑里,先写其中一台SQL,发布拓扑,让它吭哧吭哧建立完须要的库,接下来杀鸡取卵,把建立好的数据库加到AG组里,而后删除部署,删除中央存储位置,从新发布一个拓扑,里面写的是AG组,这样Lync去检查数据库结构的时候发现,咦!数据库都建好了,只须要作作修改就能用了。而后顺利发布新的拓扑,有了新拓扑,再把Lync前端部署掉,测一下客户端连通性。搞定~
好,思路有了。搭个环境试试吧,毕竟问题不会本身跳出来,而是是动手了才能发现的。
环境里一共须要5台机器:屌丝环境,一切从简。
LyncFE.contoso.com 前端
LyncBE-1.contoso.com 后端节点1
LyncBE-2.contoso.com 后端节点2
DC.contoso.com 域控及CA
win7client.contoso.com 客户端
基本配置部分我就不写了,什么起域控啊,起CA啊,这都是基础知识。
咱们首先装好两台后端上的SQL Server 2014,注意Sql Server 2014的小版本,若是是老的版本Lync 2013在建立数据库的时候会报未识别SQL版本(若是你的Lync 2013已经升级了CU6补丁,那么SQL 2014去打个CU1就ok了)。
安装完成以后,还得安装WSFC,即故障转移群集服务,否则这个地方没法勾选。
发挥Windows Server 2012 的优点,一台控制整个场~
接着打开故障转移群集管理器,建立群集。注意在验证群集那一步选择不要验证,要记住,咱很穷,没有共享存储卷!
取个名字,配个ip地址,AlwaysOn毕竟依赖WSFC,仍是得认真规划一下这一步的选项。
建立完成以后,再打开Sql Server配置管理器,在SQL实例上单击右键 - 属性,选择AlwaysOn高可用性,而后勾上“启用AlwaysOn可用性组”,两个后端节点都得勾一下。
建立一个共享文件夹,供两个后端节点在建立AlwaysOn当中进行初次数据文件同步,在共享权限里把两台SQL服务器的计算机帐户直接加进去给FullControl,省得后面麻烦。
接下来咱们打开LyncBE-1即第一台节点上的SQL 控制台,建立一个临时的数据库,而且确认这个数据库的选项里头,恢复模式为“完整”
而后对其进行一次“完整”备份
备份完成以后,开始建立alwaysOn的可用性组,取个名字叫SqlAG好了。
此时咱们的临时数据库已经知足了可用性组的先决条件,直接勾选,而后下一步。
这里咱们将第二个节点LyncBE-2添加进来,它会自动识别为辅助角色。至于后面的可读辅助副本是啥意思,你们能够去参考文章一开头给出的AlwaysOn文档。
选择最后的侦听器选项卡,就直接建立一个AG组的侦听器,端口号就写SQL默认的端口1433好了,记得为其规划一个ip地址。
建立完AG组以后,开始数据同步,初次同步经过咱们最开始创建的共享位置来完成。填入共享路径。
woops,最后一步报错了,原来是临时数据库的存放文件夹必须对应辅助副本节点上的相同位置,换句话说,我在LyncBE-1上的C:\sqldata文件夹下放的数据库,在LyncBE-2上也必须有一个C:\sqldata文件夹。
默认共享直接建立一个C:\sqldata,再来一次验证。
验证经过!
建立完成!在SQL控制台面板中,右击可用性组的名字,选择显示面板,是否是像看到了DAG的那个面板同样亲切?
手动验证下故障转移试试?没问题。
OK,那到这里,咱们首先经过一个测试数据库创建起了AlwaysOn可用性组。
下一节,咱们就聊聊怎么一步步的偷梁换柱,杀鸡取卵,把一个屌丝架构的Lync 2013搭在这个高可用性组上面。
不得不说,在win2012R2下面用SQL 2014创建AlwaysON真是简单,若是是在2008R2的操做系统上面搭这个,你须要额外打上如下几个补丁,并且每个都须要你留个Email而后等它发到你邮箱里…