1. 程式人生 > >從0開始搭建SQL Server AlwaysOn 第一篇(配置域控)

從0開始搭建SQL Server AlwaysOn 第一篇(配置域控)

說明 div rep 工具 標識符 軟件定義 而不是 this 必須

AlwaysOn是SQL Server2012推出的最新的高可用技術,用以取代原有的SQL Serve鏡像

網上的 AlwaysOn可以說是非常的多,也可以說是非常的千篇一律,而且很多都是搭建非常順利的,沒有坑的,難道搭建 AlwaysOn真的可以這麼順利嗎??????

由於公司使用的是最新的Windows Server 2012 R2,網上用的都是Windows Server 2008 R2 ,2012 R2和2008 R2在故障轉移集群界面菜單和AD 服務管理工具

已經有較大變化,有一些步驟跟Windows Server 2008 R2可能會不一樣。

本文希望能夠詳細的在Windows Server 2012 R2 搭建 AlwaysOn的過程寫出來,減少大家踩坑的機會 。

實驗環境:

準備工作

軟件準備

(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的強大,下一篇是安裝並設置故障轉移集群

參考文章

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://stackoverflow.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


關於Windows Server的SID

Secure ID即SID 安全標識符,是區分系統的重要標識,SID不僅代表機器本身的標識,還代表其他安全主體,

包括域計算機帳號,用戶和安全組,具有同一個SID的服務器將會被視為一臺機器,具有相同SID的計算機不能同時加入到一個域裏。

SID會在安裝好系統後在配置過程中生成,使用模板部署的雲主機、虛擬機很容易發生SID重復問題,因此作為模板的虛擬機要想辦法清除SID

在早期Windows Server裏可以使用NewSID小工具清除系統已有的SID。但從Windows 2008開始這個工具不能使用,取而代之的是系統自帶sysprep.exe

使用sysprep工具在關機選項裏要選擇關機,而不能選擇重新啟動,因為系統準備工具在清除完SID後,如果重新啟動會給虛擬機生成新的SID,這樣

起不到清除SID的效果

摘錄自《軟件定義數據中心 Windows Server SDDC 技術與實踐》

如有不對的地方,歡迎大家拍磚o(∩_∩)o

從0開始搭建SQL Server AlwaysOn 第一篇(配置域控)