注意:微软官方并未正式宣布Lync2013能够使用Sql Server的AlwaysOn高可用性技术,本文只是采取一些旁门左道取巧的办法达到该目的,其实施完成后还存在一些问题和风险,搭来稳定还好,如果真出了啥岔子……阅读本文也需要有一定的Lync2013实施经验,因为其中省略了一些大家熟知的步骤(主要是懒得截图凑篇幅,如果有步骤不明白可以留言交流)

Lync2013的下一代产品Skype for Business Server 2015已经发布,并且官方支持AlwaysOn 

目前据我们所知,Lync的后端SQL数据库高可用只能有两种办法

1、SQL clustering

2、SQL mirroring

(Database software support in Lync Server 2013)

前者需要额外的共享存储,后者需要一台额外的见证服务器。这样一来在中小型高可用架构当中,就会涉及到成本问题。

Alwayson是个好功能,靠着从DAG学来的经验(然而并没有心跳线!?),用事务日志级别的复制保持主副本和辅助副本的同步,只需要使用到本地磁盘;成本低廉。(关于alwayson的原理,如果没听说过,或者跟它不熟,请先参考以下文档:

https://msdn.microsoft.com/zh-cn/library/hh403414.aspx )

早在2014年的Lync conference上,Lync产品组的人就说过alwayson功能将会添加对Lync的支持,然而时至今日……依然没有官方声称可以了。

于是某天实在忍不住了,仔细想了想其到底是哪里不支持。做了一些分析如下:

其实这是一个先有鸡后有蛋的问题,首先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然后等它发到你邮箱里…

转载于:https://blog.51cto.com/sodaxu/1658685

Lycn 2013 with SQL AlwaysOn 「一」建立AlwaysOn相关推荐

  1. Lycn 2013 with SQL AlwaysOn 「三」后续问题

    在前面两节当中,我们杀鸡取卵,偷梁换柱,终于迎娶白富美(AlwaysOn),走向--打住,没测呢还. 对,我们没有进行后端高可用的测试,如何测? 在客户端连接着的情况下,关闭一台后端数据库节点,然后看 ...

  2. Lycn 2013 with SQL AlwaysOn 「二」偷梁换柱装Lync

    上一节里,我们部署好了两台Lync后端数据库节点的AlwaysOn可用性组.这一节才是重头戏,怎么把Lync搭在上面. 再来梳理一下最开始思考好的思路: 1.安装Lync先决 2.AD准备.配置DNS ...

  3. php pdo sql注入,「原创」PHP实战-PDO优化及 SQL注入

    PDO优化,SQL注入攻击 PDO SQL语句预处理 PDO SQL语句预处理的步骤 第1步:制作相同结构的SQL 将SQL语句不同的数据部分,用参数或问号来代替. 第2步:将相同结构的SQL语句预编 ...

  4. AAAI 2020 | 北理工阿里文娱:你所看视频的介绍,可以用到这样的「图像描述」技术...

    点击我爱计算机视觉标星,更快获取CVML新技术 机器之心发布 机器之心编辑部 人工智能顶级会议 AAAI 2020 将于 2 月 7 日-2 月 12 日在美国纽约举办,不久之前,AAAI 2020 ...

  5. [SQL指令]使用 PIVOT 和 UNPIVOT,「扭转」查询的结果。

    原文出处:[SQL指令]使用 PIVOT 和 UNPIVOT,「扭转」查询的结果. http://www.dotblogs.com.tw/mis2000lab/archive/2010/12/24/m ...

  6. SQL中的「规则」 constraint 与「约束」 rule 的区别。

    前言,学校时学习的东西,好久都没有用到了. 今天看到了rule,第一眼还以为是约束了. -------------------------------------------------------- ...

  7. 【sql :联系题目 21 22】查询男生、女生人数 ,查询名字中含有「风」字的学生信息...

    题目21:查询男生.女生人数 这个题目我写出的sql 还是比较原始的,查询了3次,这样的话性能会比较差 SELECT c.a,d.b FROM (SELECT COUNT(*) AS a  FROM ...

  8. SQL server查询「李」姓老师的数量

    代码段: SELECT COUNT(*) AS '「李」姓老师的数量' FROM teacher WHERE Tname LIKE '李%' teacher

  9. 【sql :练习题5】查询「李」姓老师的数量

    题目:查询「李」姓老师的数量 分析:查询 [李]姓老师 要用到关键字 like,关键字 like 上篇已经讲过,然后求数量,直接count 转载于:https://www.cnblogs.com/yu ...

最新文章

  1. 根据开源数据库选择合适的工具
  2. Windows安装Zookeeper和Dubbo(单机版本)
  3. Leet Code OJ 136. Single Number [Difficulty: Medium]
  4. code craft_以Craft.io为先—关于我们行业的实践职业道路的系列
  5. SpringBoot入门之上传文件
  6. 免费开源剪辑软件Shotcut推荐和使用教程
  7. .net跨防火墙链接oracle连接池链接长时间无通讯数据被断开后报错问题解决
  8. 截图:截取当前程序的界面,并保存到bmp图片中。
  9. python和c++哪个好-c语言和python哪个好入门?
  10. Message no. C6015--No valuation variant found for valuation area xxxx
  11. 微型计算机配置单怎么写,微型计算机的组成和配置.doc
  12. 【网络攻防原理与技术】第6章:特洛伊木马
  13. 墙裂推荐几款桌面应用
  14. mac电脑怎么清空浏览器缓存?Chrome浏览器 for Mac清理缓存的方法
  15. logo一键制作器源码
  16. php支付宝pc收银台,支付宝支付-PC电脑网站支付
  17. form表单中的 action=./? 是什么意思
  18. 【深度学习】实验5布置:滴滴出行-交通场景目标检测
  19. python 嵩天课件_0.4嵩天老师python爬虫笔记整理week4
  20. 深度学习CUDA安装失败及解决方案

热门文章

  1. 轻松搞定EasyUI
  2. 无法安装此计算机不存在英特尔,win10系统提示无法安装驱动程序,此计算机中没有Intel适配器怎么办...
  3. 小米怎么快速回到顶部_[玩机教程:App推荐篇 01] | 小米视频 极速版(MiVideo-Lite)...
  4. 1、 Seata快速开始
  5. OSPF协议中查看路由器的RID
  6. loadrunner的TPS和点击率HPS
  7. android 用户引导高亮,Android开发之高亮引导
  8. mysql查询5分钟内的数据
  9. 面试必考的:并发和并行有什么区别?
  10. 【Designing ML Systems】第 11 章 :机器学习的人性方面