实验环境:
准备工作
软件准备
(1) SQL Server 2012
(2) Windows Server 2012 R2 DataCenter 64位
(3) VMware-workstation 10.0
操作系统:都是Windows Server 2012 R2 DataCenter 64位(win2012/win2012R2 只有DataCenter 版本才能使用故障转移集群)
当然,生产环境服务器最好每台服务器都配置两个网卡,一个网卡用作业务,一个网卡用作心跳,当然一个网卡也没有什么问题
至于各个计算机的计算机名我这里不做修改,在真实生产环境计算机名是需要修改的
计算机名
域控:win-felbg10uu7f
node1:win-7107jjj2bcc
node2:win-5pmsdhui0kq
故障转移集群VIP跟AlwaysOn 的VIP的作用是不一样的
故障转移集群VIP(192.168.66.170)是让你连接故障转移集群管理器的集群用的,而不是让你连接AlwaysOn
AlwaysOn 的VIP(192.168.66.171)是让你连接AlwaysOn 的
所以故障转移集群VIP跟AlwaysOn 的VIP不能一样!
步骤
下面使用step by step guide的方式来展示怎麽安装域控
注意:先把各台机器的防火墙关掉。
域控端
1、配置域控ip,ipv6去掉,因为DNS服务器就安装在域控上,所以首选DNS服务器填写:127.0.0.1 回环地址
2、安装AD域服务
安装AD域服务的同时,操作系统会同时安装好DNS服务器
3、点击服务器管理器右上角的小旗帜,弹出对话框,点击“将此服务器提升为域控制器”以提升为域控
4、进入AD域服务配置向导,设置域名 abc.com
5、设置DSRM密码为123456
默认林中的第一棵域树的根域的域控制器必须担当全局编录服务器和必须安装DNS服务,不能是只读域控制器
NetBIOS名称不需要设置,至于什么是NetBIOS名称,可以在本文最后的两本书中进行了解
AD DS数据库文件路径保持默认就可以了,当然将日志文件和数据库文件放在不同的磁盘有助提升性能,更多信息可以在本文最后的两本书中进行了解
6、安装完AD DS之后会自动重启服务器,重启服务器之后打开DNS管理器
可以看到域控制器win-felbg10uu7f.abc.com已经将主机名(win-felbg10uu7f)和IP地址(192.168.66.155)注册到DNS服务器内
可以看到动态更新已开启
在_tcp文件夹内,_ldap记录和_gc记录说明这台服务器已经正确注册为域控制器和担当全局编录服务器
注意:如果在_tcp文件夹内没有_ldap记录和_gc记录相关的记录,那么请重启Netlogon服务来重新注册
7、检查AD域服务和Netlogon服务是否正常启动
8、在AD用户和计算机里添加域用户DCADMIN,请务必记住DCADMIN的密码,因为后面第二篇和第三篇都需要用到DCADMIN这个域用户
注意:如果域控机器上默认的Administrator本地计算机账户没有被禁用的话,在安装完域控之后,Administrator本地账户会从本地的SAM本地账户移动到域账户(这时候本地账户已经不存在Administrator这个账户,除非将域控进行降级)
这时候其他非域控机器都可以利用Administrator域账户进行登录,但是我们一般不使用Administrator域账户,而是新建一个域用户来做,这里就是另外新建一个DCADMIN账户
详细可以查看《Windows Server2012系统配置指南》书
域用户DCADMIN创建完毕
9、将这个域用户加入到域计算机组和域管理员组
9、将系统自动更新关闭掉
客户端
1、设置客户端ip,ipv6去掉,注意要设置网关,禁用TCP/IP上的NetBIOS
2、加域,填写域名abc.com,并输入刚刚在 AD域用户(DCADMIN)和密码
加域之前最好在客户端先ping一下DNS(abc.com)和域控的IP,看能否ping通,如果ping不通,加域肯定不成功了,需要进一步排查为什麽ping不通
需要先检查一下防火墙,一般都是防火墙的问题
在客户端的网络和共享中心可以看到机器当前已经加入abc.com这个域网络
加域之后,在域控的DNS管理器里能看到新添加的机器的主机和IP地址
在AD用户和计算机里的Computers容器里也能看到新添加的机器
3、加域后客户端计算机会自动重启,重启后使用本地Administrator用户登录计算机,先不要用DCADMIN这个域用户来登录计算机
4、打开计算机管理-》本地用户和组,选择组,选中Administrators组,右键-》添加到组
点击添加
输入域用户(DCADMIN)和密码
这样DCADMIN域用户就有了这台客户端计算机的Administrator权限
5、将系统自动更新关闭掉
另一台客户端计算机的配置这里就不再叙述了,步骤都是一样的
最后在域控里查看DNS和AD Computers容器,两个节点都已经添加成功
总结
通过上面的步骤演示,在搭建AD DS服务的时候有一些地方是需要注意的,希望大家能够看清楚截图,一步一步进行配置,基本上就没有问题了
现在AlwaysOn可用性组已经完全支持 Windows Azure ,可以把辅助副本部署到 Windows Azure 上
希望通过这篇文章让大家体会到新一代高可用技术AlwaysOn的强大,下一篇是安装并设置故障转移集群
至于Windows Server 的AD 域服务的问题可以参考《Windows Server2012系统配置指南》这本书
地址:http://www.amazon.cn/图书/dp/B00KMQYTD6
想更深入了解AD的可以看这一本书《Windows Server 2012 R2 Active Directory配置指南》
地址:http://product.china-pub.com/4410540
希望*MVP 戴有炜老师的丰富Windows Server方面的知识能给大家带来更多帮助
操作系统的注意事项,硬件配置、软件配置、故障转移集群都在上面两本书有介绍
参考文章
AlwaysON – HADRON Learning Series: – How does AlwaysON Process a Synchronous Commit Request
https://blogs.msdn.microsoft.com/psssql/2011/04/01/alwayson-hadron-learning-series-how-does-alwayson-process-a-synchronous-commit-request/
2016-9-10补充
在开始本文的操作之前,大家需要留意主副本机器和各个辅助副本机器的扇区是否一致,如果扇区不一致,或者环境不一样有可能导致同步慢或IP冲突问题
alwayson搭建了也白搭
在服务器上运行下面命令,D盘为SQL Server数据文件,日志文件所在盘符
fsutil fsinfo ntfsInfo D:
如果每个扇区字节数和每个物理扇区字节数这两个值, 各个副本显示不同,那么最好不要搭建AlwaysOn
在副本上每个扇区字节数显示512,每个物理扇区字节数显示512
在辅助副本上每个扇区字节数显示512,每个物理扇区字节数显示512
这样是没有问题的
或者
在副本上每个扇区字节数显示512,每个物理扇区字节数显示4096
在辅助副本上每个扇区字节数显示512,每个物理扇区字节数显示512
这样也是没有问题的
或者
在副本上每个扇区字节数显示512,每个物理扇区字节数显示512
在辅助副本上每个扇区字节数显示512,每个物理扇区字节数显示4096
这样是有问题的
NTFS对于大于2GB的分区,默认簇大小为8个扇区(4KB),分配单元默认是4096字节是因为内存页是4kb
簇=分配单元 windows7默认呢的分配单元是4096字节,那么一个6000字节的文件就需要两个分配单元,分配单元是windows读写文件的基本单位
逻辑扇区:512字节,操作系统将分配单元的读写请求划分为多个512字节大小,然后写入到磁盘,其实就是操作系统做了一层转换
物理扇区:512 ,物理磁盘读写的基本单位,旧磁盘是512字节,新磁盘是4kb
高级格式化:操作系统对盘符进行格式化,按照分配单元大小
低级格式化:磁盘厂家对磁盘做的低级格式化,按照512字节大小
由于新磁盘使用了4kb字节大小,某些操作系统和应用程序无法适应,所以磁盘厂家退出了512E格式,对磁盘增加了一个模拟层,底层是4kb,模拟层是512字节
操作系统对磁盘的读写依然是512字节,这样厂家推出的新磁盘就可以向下兼容旧操作系统,因为是模拟出来的,所以名字叫 512-byte Emulation或512e
最新操作系统例如win2012已经可以支持4kb磁盘,所以使用命令fsutil fsinfo ntfsInfo D: 的时候,如果每扇区和每物理扇区都显示为4096,那么表示
磁盘使用的是最新的支持4kb磁盘,win2012操作系统对物理扇区进行了对齐,逻辑扇区是4096,物理扇区是4096,就是原生4K模式,所以名字叫4K native或4Kn
参考文章:
https://support.microsoft.com/en-us/kb/2510009
http://*.com/questions/9465451/how-can-i-determine-the-sector-size-in-windows
https://blogs.msdn.microsoft.com/psssql/2011/01/13/sql-server-new-drives-use-4k-sector-size/
https://msdn.microsoft.com/en-us/library/windows/desktop/hh848035%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
http://ask.zol.com.cn/q/16407.html
http://www.cnblogs.com/diabloxl/p/4422120.html
解决办法:通过fusionIO或者一些SSD磁盘的管理界面修改磁盘的参数
例如惠普的fusionIO,进去管理界面,将4KB扇区大小改为512字节
修改为
估计Hyper-V是无法修改磁盘的物理扇区大小,那如果使用Hyper-v就只能所有副本都用Hyper-V,而不能有些副本使用物理机,有些副本使用Hyper-V跑在虚拟机里面
京东IO卡为第一代产品,与目前最新采购的第三代产品
第一代产品为512字节,第三代产品为4KB
Node_A:第一代产品
Node_B:第三代产品
由于格式化磁盘的时候可以选择分配单元512字节~64KB,所以log block要适应文件系统的分配单元否则不能原子写入磁盘
https://blogs.msdn.microsoft.com/psssql/2013/05/15/sql-serverstorage-spacesvhdx-and-4k-sector-size/
Is this safe for SQL Server?
The answer is yes. An I/O subsystem can return a larger sector size than actual, physical sector size as long as all reported values can be evenly divided by 512 bytes.
4096的块只要能被512整除就无问题
As the diagram below shows, SQL Server maintains parity on 512 byte boundaries, for the log, regardless of the reported sector size. This allows SQL Server to detect a partial write (torn behavior.) For example, if the system reported a sector size of 4K but the physical sector size was 512 bytes, the I/O subsystem is only guaranteed to flush to a 512 byte mark. If the first 4, physical sectors are flushed (2K of the 4K aligned block) and a power outage occurs, SQL Server will be able to detect the entire 4K was not properly flushed.
Microsoft SQL Server IO Internals ppt下载地址
http://files.cnblogs.com/files/lyhabc/MicrosoftSQLServerIOInternals.pptx