Installation von SQL Server mit Always on

Installation von SQL Server mit Always on

Zunächst wird ein einfaches Failovercluster aus zwei Servern benötigt.

Eine ausführlichere Version dazu ist in meinen älteren Beiträgen zu Stretched Cluster

Über den Servermanager werden hierzu die Features Failoverclustering, Speicherreplikat sowie zusätzlich für per iSCSI angebundene Laufwerke Multipfad E/A installiert.

Im Failoverclustermanager wird ein Cluster erstellt, das beide Server enthält.

Via weitere Aktionen muss ein Freigabequorum eingebunden werden.

Die Firewall muss via CMD oder Powershell im Admin-Modus konfiguriert werden.

netsh advfirewall firewall add rule name=“SQL Server” dir=in action=allow protocol=TCP localport=1433
netsh advfirewall firewall add rule name=“SQL Server Always On” dir=in action=allow protocol=TCP localport=5022
netsh advfirewall firewall add rule name=“SQL Admin Connection” dir=in action=allow protocol=TCP localport=1434
netsh advfirewall firewall add rule name=“SQL Service Broker” dir=in action=allow protocol=TCP localport=4022
netsh advfirewall firewall add rule name=“SQL Debugger/RPC” dir=in action=allow protocol=TCP localport=135
netsh advfirewall firewall add rule name=“File & Print Sharing Cluster Admin (replication)” dir=in action=allow protocol=UDP localport=137
netsh advfirewall firewall add rule name=“File & Print Sharing (replication)” dir=in action=allow protocol=UDP localport=138
netsh advfirewall firewall add rule name=“Filestream and NETBIOS Session Service (clustering)” dir=in action=allow protocol=TCP localport=139
netsh advfirewall firewall add rule name=“FileStream, SMB (clustering), and File & Print Sharing” dir=in action=allow protocol=TCP localport=445
netsh advfirewall firewall add rule name=“Analysis Services” dir=in action=allow protocol=TCP localport=2383
netsh advfirewall firewall add rule name=“SQL Browser” dir=in action=allow protocol=TCP localport=2382
netsh advfirewall firewall add rule name=“HTTP” dir=in action=allow protocol=TCP localport=80
netsh advfirewall firewall add rule name=“SSL” dir=in action=allow protocol=TCP localport=443
netsh advfirewall firewall add rule name=“SQL Browser” dir=in action=allow protocol=TCP localport=1434
netsh advfirewall firewall add rule name=“ICMP Allow incoming V4 echo request” protocol=icmpv4:8,any dir=in action=allow

Jetzt wird SQL2017 auf dem ersten Server SQL01 installiert.

Dazu wird eine „neue eigenständige SQL-Server-Installation gestartet.

Im Wesentlichen ist es eine „Weiter, Weiter, Fertig“ Installation, es empfiehlt sich aber, die Datenbank auf ein anders Laufwerk zu speichern.

Die Dienste sollten unter einem Domänenfunktionskonto laufen.

Soll Systemcenter auf dem SQL Server laufen, muss die SQL Sortierung noch umgestellt werden – sonst lässt es sich nicht Installieren und eine nachträgliche Änderung ist lästig.

Ich bevorzuge generell „gemischte Authentifizierung“ falls eine Anwendung, die nicht mit AD Anbindung zurechtkommt installiert werden muss. Es sollten auf jeden Fall trotzdem die Windows User gepflegt werden.

Zusätzlich sollten die Computerkonten über Kreuz Mitglied der Administratorengruppe des anderen Clusterpartners sein.

Die Setupkonfigurationsdatei wird zur Installation des anderen Servers gesichert und editiert: C:\Program Files\Microsoft SQL Server\140\Setup Bootstrap\Log\20180817_093350\ConfigurationFile.ini

Mittels der Datei kann nun der zweite(weitere) Server ohne manuellen Eingriff installiert werden.

D:\SETUP.EXE /CONFIGURATIONFILE=”C:\SQLInstall\ConfigurationFile.ini” /IAcceptSQLServerLicenseTerms /SQLSVCPASSWORD="<PASSWORD>" /AGTSVCPASSWORD="<PASSWORD>" /sapwd="<PASSWORD>“

Danach wird das SQL Management Studio heruntergeladen und installiert. https://docs.microsoft.com/de-de/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-2017

Das SQL Managementstudio muss als Administrator geöffnet werden.

Nach Verbinden beider Server werden für beide Server Speichergrenzwerte festgelegt. Diese sollten sich am Bedarf der Anwendungen orientieren.

Auf beiden Servern muss das Always On Häkchen im SQL Server Configuration Manager gesetzt werden.

Jetzt können Verfügbarkeitgruppen eingerichtet werden.

Eine Anwendung mit Datenbank wird auf SQL01 installiert bzw. eine bestehende Datenbank wird portiert.

Nach Einfügen der Datenbank muss der Recoverymode auf Full gesetzt werden.

Nun werden Einstellungen an der Datenbank via „New Query“ im SQL Management Studio vorgenommen. Eventuelle Fehler zeigt die Ausgabe

Use SUSDB;
EXEC sp_changedbowner 'sa'
ALTER DATABASE SUSDB SET TRUSTWORTHY ON;
ALTER DATABASE SUSDB SET HONOR_BROKER_PRIORITY ON;
exec sp_configure 'clr enabled', 1;
EXEC sp_configure 'max text repl size', 2147483647 ;
RECONFIGURE
SET NOCOUNT ON
DECLARE @dbname NVARCHAR(128)
SELECT @dbname = sd.name FROM sys.sysdatabases sd WHERE sd.dbid = DB_ID()
IF (@dbname = N'master' OR @dbname = N'model' OR @dbname = N'msdb' OR @dbname = N'tempdb' OR @dbname = N'distribution' ) BEGIN
RAISERROR(N'ERROR: Script is targetting a system database.  It should be targeting the DB you created instead.', 0, 1)
GOTO Branch_Exit;
END ELSE
PRINT N'INFO: Targetted database is ' + @dbname + N'.'
PRINT N'INFO: Running verifications....'
IF NOT EXISTS (SELECT * FROM sys.configurations c WHERE c.name = 'clr enabled' AND c.value_in_use = 1)
PRINT N'ERROR: CLR is not enabled!'
ELSE
PRINT N'PASS: CLR is enabled.'
DECLARE @repltable TABLE (
name nvarchar(max),
minimum int,
maximum int,
config_value int,
run_value int )
INSERT INTO @repltable
EXEC sp_configure 'max text repl size (B)'
IF NOT EXISTS(SELECT * from @repltable where config_value = 2147483647 and run_value = 2147483647 )
PRINT N'ERROR: Max text repl size is not correct!'
ELSE
PRINT N'PASS: Max text repl size is correct.'
IF NOT EXISTS (SELECT db.owner_sid FROM sys.databases db WHERE db.database_id = DB_ID() AND db.owner_sid = 0x01)
PRINT N'ERROR: Database owner is not sa account!'
ELSE
PRINT N'PASS: Database owner is sa account.'
IF NOT EXISTS( SELECT * FROM sys.databases db WHERE db.database_id = DB_ID() AND db.is_trustworthy_on = 1 )
PRINT N'ERROR: Trustworthy bit is not on!'
ELSE
PRINT N'PASS: Trustworthy bit is on.'
IF NOT EXISTS( SELECT * FROM sys.databases db WHERE db.database_id = DB_ID() AND db.is_broker_enabled = 1 )
PRINT N'ERROR: Service broker is not enabled!'
ELSE
PRINT N'PASS: Service broker is enabled.'
IF NOT EXISTS( SELECT * FROM sys.databases db WHERE db.database_id = DB_ID() AND db.is_honor_broker_priority_on = 1 )
PRINT N'ERROR: Service broker priority is not set!'
ELSE
PRINT N'PASS: Service broker priority is set.'
PRINT N'Done!'
Branch_Exit:

Nun muss ein Full-Backup ausgeführt werden, damit die AG erstellt werden kann. Das Default Ziel ist hierfür in Ordnung.

Jetzt kann die Availability Group angelegt werden.

Nun wird ein Listener angelegt, über den der SQL Server mit der Anwendung spricht. Er erhält eine andere IP und einen anderen DNS Namen als der eigentliche Server.

Wenn das Dashboard abschließend wie folgt aussieht, hat alles geklappt.

Für fehlende Konfigurationseinstellungen auf SQL02 muss nun ein Failover direkt vom gerade geöffneten Dashboard ausgeführt werden.

Dann wird wieder via „New Query“ auf dem anderen Server die Konfiguration ausgeführt.

Use SUSDB;
EXEC sp_changedbowner 'sa'
ALTER DATABASE SUSDB SET TRUSTWORTHY ON;
ALTER DATABASE SUSDB SET HONOR_BROKER_PRIORITY ON;
exec sp_configure 'clr enabled', 1;
EXEC sp_configure 'max text repl size', 2147483647 ;
RECONFIGURE

Nun werden dem SQL Dienstkonto via ADSIEDIT auf dem DC SPNs hinzugefügt

Umziehen von Diensten in die AGs

Wie Dienste in AGs umgezogen werden, ist anwendungsspezifisch.

z.B. in WSUS muss ein Registry Key geändert werden.

Um System Center Configuration Manager (SCCM) in eine Availability Group umziehen zu können, muss im SQL Management Studio die AG der Datenbank auf manuellen Failover und „Readable Secondary“ umgestellt werden. Letzteres ist ein Enterprise Feature ohne das sich SCCM weigert, die Datenbank in eine AG zu überführen. SCCM kann somit nur mit SQL Enterprise in einer AG genutzt werden. Nach Migration kann die Datenbank wieder auf automatischen Failover umgestellt werden

Die Datenbank wird im Systemcenter durch Aufruf des Setups aus dem Programmverzeichnis geschwenkt.

C:\Program Files\Microsoft Configuration Manager\bin\X64\Setup.exe

Ein Gedanke zu „Installation von SQL Server mit Always on

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

7 + 6 =