Windows Server 2016 以及 SQL Server 2016出來(lái)已有一段時(shí)間了,因?yàn)閃indows Server 2016可以配置無(wú)域的Windows群集,因此也能夠以此來(lái)配置無(wú)域的SQL Server AlwaysOn 高可用。
下面就來(lái)一步一步配置2個(gè)節(jié)點(diǎn)的無(wú)域的SQL AlwaysOn
環(huán)境準(zhǔn)備:
(1)2臺(tái)物理服務(wù)器,也可以是2臺(tái)虛擬機(jī)。操作系統(tǒng):Windows Server 2016 Datacenter
(2)2臺(tái)服務(wù)器上均安裝SQL Server 2016 (也可以是SQL Server 2012)
IP以及名稱規(guī)劃:
節(jié)點(diǎn)1(物理服務(wù)器或虛擬機(jī)):JF-SQLDB01 IP地址:10.2.218.131
節(jié)點(diǎn)2(物理服務(wù)器或虛擬機(jī)):JF-SQLDB02 IP地址:10.2.218.132
Windows群集名稱:JF-AlwaysOn IP地址:10.2.218.130 (虛擬IP)
可用性組名稱:SQLAG
SQL偵聽(tīng)器名稱:JFSQL01 IP地址:10.2.218.133(虛擬IP)
注意事項(xiàng):
1,只有Windows Server 2016 操作系統(tǒng)才能配置不依賴域的群集 ,2臺(tái)服務(wù)器的操作系統(tǒng),安全補(bǔ)丁,SQL Server版本要完全一致。
2,兩個(gè)節(jié)點(diǎn)的Windos Server 2016 都以Administrator賬戶登錄,并且兩臺(tái)服務(wù)器的Administrator密碼相同,無(wú)特殊意義,只是為了方便后續(xù)的操作。
3,兩個(gè)節(jié)點(diǎn)的SQL Server 2016 服務(wù)啟動(dòng)賬戶都設(shè)置成Administrator 。2個(gè)節(jié)點(diǎn)的數(shù)據(jù)庫(kù)都有Administrator的登錄名,也就是使用Administrator登錄服務(wù)器時(shí),可用Windows身份驗(yàn)證登錄SQL Server。
即:節(jié)點(diǎn)1的SQL Server上有:JF-SQLDB01\administrator ;節(jié)點(diǎn)2上有:JF-SQLDB02\administrator ;這2個(gè)登錄賬號(hào),在安裝SQL Server的時(shí)候可創(chuàng)建。均有sysadmin權(quán)限。
一:首先配置Windows故障轉(zhuǎn)移群集(2個(gè)節(jié)點(diǎn)均使用Administrator登錄)
第一步:安裝Windows故障轉(zhuǎn)移群集(所有節(jié)點(diǎn)都需要安裝)
第二步:每個(gè)節(jié)點(diǎn)的計(jì)算機(jī)不需要加入域,但需要添加DNS后綴,且每個(gè)節(jié)點(diǎn)的后綴必須要相同(例如:test.cn),如下圖所示的操作。
第三步:在每個(gè)節(jié)點(diǎn)上都添加一個(gè)用戶(我增加的用戶名稱是DCAdmin),且用戶名以及密碼每個(gè)節(jié)點(diǎn)都一致,添加此用戶的目的是為了2臺(tái)服務(wù)器能訪問(wèn)共享文件夾。
第四步:在每個(gè)節(jié)點(diǎn)的 hosts 文件中添加每個(gè)節(jié)點(diǎn)的服務(wù)器IP地址和名稱、群集IP地址和名稱、偵聽(tīng)器IP地址和名稱,如下所示。
hosts文件路徑:C:\Windows\System32\drivers\etc
hosts文件可以用記事本打開(kāi)
服務(wù)器名稱,填寫(xiě)的是計(jì)算機(jī)全名,也就是服務(wù)器名帶上之前設(shè)置的DNS名稱后綴的名稱,例如:JF-SQLDB01.test.cn。host文件需要在2個(gè)節(jié)點(diǎn)的服務(wù)器上都進(jìn)行相同的操作。
第五步:設(shè)置允許應(yīng)用或功能通過(guò)防火墻,兩個(gè)節(jié)點(diǎn)均要設(shè)置,按照下面圖中紅框框出的地方設(shè)置,注意選項(xiàng)后面打勾的位置。
第六步:在DB1這個(gè)節(jié)點(diǎn)上,以管理員方式運(yùn)行PowerShell ,使用腳本創(chuàng)建Windows群集。因?yàn)闊o(wú)域的群集沒(méi)有圖形化界面可設(shè)置,所以只能使用PowerShell 進(jìn)行創(chuàng)建。
注意:如果登陸Windows Server 2016服務(wù)器的賬戶不是Administrator,需要先以管理員方式運(yùn)行PowerShell,并執(zhí)行下面的腳本:
new-itemproperty -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1
因?yàn)槲业顷慦indows Server 2016用的是Administrator,所以跳過(guò)執(zhí)行上面的命令,直接運(yùn)行下面的PowerShell腳本:
New-Cluster -Name JF-AlwaysOn -Node JF-SQLDB01,JF-SQLDB02 -StaticAddress 10.2.218.130 -AdministrativeAccessPoint DNS
--獲取集群名
Get-Cluster
--群集詳情
Get-ClusterResource
使用Power Shell 安裝群集后,在故障轉(zhuǎn)移群集管理器中是看不到群集信息的,需要手動(dòng)連接到群集,如下面圖所示:
打開(kāi)故障轉(zhuǎn)移群集管理器后,在管理器處右鍵鼠標(biāo),選擇“連接到群集” :
在彈出的對(duì)話框中手動(dòng)輸入群集的名稱:
這樣就能在故障轉(zhuǎn)移群集管理器中看到群集的信息了。同樣的方法在DB2的節(jié)點(diǎn)上再重復(fù)設(shè)置即可在DB2上看到群集信息。
二:配置SQL Server AlwaysOn
SQL Server的安裝這里就不描述,直接從配置AlwaysOn開(kāi)始操作。
1 ,這里配置AlwaysOn,我采用的是共享文件夾的方式,所以首先在DB1這個(gè)節(jié)點(diǎn)上創(chuàng)建一個(gè)共享文件夾添加之前在每個(gè)節(jié)點(diǎn)上都創(chuàng)建的用戶DCAdmin,這樣DB2這個(gè)節(jié)點(diǎn)也能訪問(wèn)。
2,在DB1和DB2上設(shè)置啟用AlwaysOn
啟用AlwaysOn會(huì)要求重啟服務(wù),重啟就可以。
**3,重啟服務(wù)后,查看服務(wù)器屬性,確保 HADR 為 True **
既然節(jié)點(diǎn)沒(méi)有加入域,那么就不能用域認(rèn)證,只能用證書(shū)認(rèn)證,因此需要在每個(gè)節(jié)點(diǎn)的數(shù)據(jù)庫(kù)中創(chuàng)建其他節(jié)點(diǎn)的數(shù)據(jù)庫(kù)證書(shū)。(請(qǐng)留意我連接數(shù)據(jù)庫(kù)的賬戶,在創(chuàng)建端口的代碼中有用到)
因此在配置可用性組前先在各節(jié)點(diǎn)配置證書(shū)認(rèn)證信任。
4,分別在兩個(gè)節(jié)點(diǎn)數(shù)據(jù)庫(kù)上創(chuàng)建證書(shū),并且彼此還原對(duì)方的證書(shū),SQL代碼如下:
注:我是在節(jié)點(diǎn)1上用administrator登錄服務(wù)器,使用Windows身份登錄SQL Server。在節(jié)點(diǎn)2上也是用administrator登錄服務(wù)器,使用Windows身份登錄SQL Server
--共享文件夾路徑: ---\\JF-SQLDB01\SQLAlwaysOnShare 使用共享文件夾是為了方便讀取每個(gè)節(jié)點(diǎn)的證書(shū)
--節(jié)點(diǎn)一上執(zhí)行:創(chuàng)建主密鑰/證書(shū)/端點(diǎn),備份證書(shū)到共享文件夾中。
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'JFAlwaysOnShare2016'; ----密碼
GO
CREATE CERTIFICATE Cert_DB01
WITH SUBJECT = 'Cert_DB01',
START_DATE = '2017-12-01',EXPIRY_DATE = '2099-12-31'; --證書(shū)的有效時(shí)間
GO
----導(dǎo)出證書(shū),將證書(shū)放在共享文件夾里面
BACKUP CERTIFICATE Cert_DB01
TO FILE = '\\JF-SQLDB01\SQLAlwaysOnShare\Cert_DB01.cer';
GO
---創(chuàng)建端點(diǎn)
CREATE ENDPOINT [SQLAG_Endpoint]
AUTHORIZATION [JF-SQLDB01\administrator] ----此賬戶是連接數(shù)據(jù)庫(kù)的賬戶
STATE=STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) ---偵聽(tīng)端口,1024 和 32767 之間的任何數(shù)字都有效。偵聽(tīng)I(yíng)P地址,默認(rèn)值為 ALL,表示偵聽(tīng)器將接受任何有效 IP 地址上的連接
FOR DATA_MIRRORING
(ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_DB01, ENCRYPTION = REQUIRED ALGORITHM AES)
GO
--節(jié)點(diǎn)二上執(zhí)行:創(chuàng)建主密鑰/證書(shū),備份證書(shū)。
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'JFAlwaysOnShare2016';
GO
CREATE CERTIFICATE Cert_DB02
WITH SUBJECT = 'Cert_DB02',
START_DATE = '2017-12-01',EXPIRY_DATE = '2099-12-31';
GO
BACKUP CERTIFICATE Cert_DB02
TO FILE = '\\JF-SQLDB01\SQLAlwaysOnShare\Cert_DB02.cer';
GO
CREATE ENDPOINT [SQLAG_Endpoint]
AUTHORIZATION [JF-SQLDB02\administrator]
STATE=STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING
(ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_DB02, ENCRYPTION = REQUIRED ALGORITHM AES)
GO
--節(jié)點(diǎn)一上執(zhí)行:創(chuàng)建節(jié)點(diǎn)二的證書(shū)
USE master;
GO
CREATE CERTIFICATE Cert_DB02
FROM FILE = '\\JF-SQLDB01\SQLAlwaysOnShare\Cert_DB02.cer';
GO
--節(jié)點(diǎn)二上執(zhí)行:創(chuàng)建節(jié)點(diǎn)一的證書(shū)
USE master;
GO
CREATE CERTIFICATE Cert_DB01
FROM FILE = '\\JF-SQLDB01\SQLAlwaysOnShare\Cert_DB01.cer';
GO
5,配置可用性組,接下來(lái)就和以前版本的配置是一樣的了,不再描述,按照下面的截圖一步一步配置
6,最后創(chuàng)建偵聽(tīng)器,當(dāng)然,創(chuàng)建偵聽(tīng)器也可以在上一步設(shè)置。
最后,可以使用偵聽(tīng)器名稱來(lái)連接數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)顯示已同步,配置無(wú)域AlwaysOn成功。
本文地址:[https://blog.csdn.net/roven257/article/details/78691892)
作者博客:左君右峰