環境准備:
(1)操作系統:Windows Server 2016 Datacenter
(2)SQL Server 2016
配置SQL 2016 AlwaysOn 要點
1,因為沒有域所以需要在”計算機屬性“添加計算機的DNS后綴。如后綴是: kk1.com
2,非賬戶Administrator(是管理員組的新賬號也不行),需在運行下列命令
注意:如果登陸Windows Server 2016服務器的賬戶不是Administrator,需要先以管理員方式運行PowerShell,執行下面的命令:
new-itemproperty -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1
3,關閉各個服務器的防火牆。
4,hosts文件路徑:C:\Windows\System32\drivers\etc,用名稱和IP對應,防止用名稱無法對應具體服務器
192.168.63.79 WIN-VE5LU48EGRI.kk1.com 192.168.63.81 WIN-7BEPP8D305E.kk1.com 192.168.63.83 WIN-QF3PITJO4SU.kk1.com 192.168.63.79 WIN-VE5LU48EGRI 192.168.63.81 WIN-7BEPP8D305E 192.168.63.83 WIN-QF3PITJO4SU
5,既然節點沒有加入域,那么就不能用域認證,只能用證書認證,因此需要創建證書和端點,下面是2個服務器,3個以上服務器,要在各服務器上創建其他節點的證書
--節點一上執行:創建主密鑰/證書/端點,備份證書。 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'; GO BACKUP CERTIFICATE Cert_DB01 TO FILE = '\\JF-SQLDB01\SQLAlwaysOnShare\Cert_DB01.cer'; GO CREATE ENDPOINT [SQLAG_Endpoint] AUTHORIZATION [JF-SQLDB01\administrator] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_DB01, ENCRYPTION = REQUIRED ALGORITHM AES) GO --節點二上執行:創建主密鑰/證書,備份證書。 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 --節點一上執行:創建節點二的證書 USE master; GO CREATE CERTIFICATE Cert_DB02 FROM FILE = '\\JF-SQLDB01\SQLAlwaysOnShare\Cert_DB02.cer'; GO --節點二上執行:創建節點一的證書 USE master; GO CREATE CERTIFICATE Cert_DB01 FROM FILE = '\\JF-SQLDB01\SQLAlwaysOnShare\Cert_DB01.cer'; GO
6,配置好故障轉移后,關閉故障轉移群集,再打開不自動顯示群集,這時需要,用名稱:如 JF-AlwaysOn1.kk1.com,群集名稱是: JF-AlwaysOn1 ,連接時候要加上DNS后綴
備機,如果沒有配置名稱到IP對應,可以直接在群集名稱上直接填IP,也可以。如(127.0.0.1, .)等待
7, 問題1:不能用共享文件夾見證,只好將第三個節點加入集群
問題2: 如果SQL配置過舊集群,加入過舊集群,刪除集群后,SQL Server要重新加入到新集群(在SQL配置管理器,先取消啟用AlwaysON,重啟SQL再啟用)
問題3: 故障轉移群集連接不上集群,如JF-AlwaysOn1.kk1.com,這時可以切換到adminstrator進入win系統,就可以連接上。