Docker-Bereitstellung Always on-ClusterSQL Server unterstützt seit 2016 Linux. Mit der Veröffentlichung der Versionen 2017 und 2019 begann die Unterstützung von HA/DR, Kubernetes und Big Data-Clusterlösungen auf Linux- und Containerplattformen. In diesem Artikel installieren wir SQL Server 2019 auf einem Docker-Container mit 3 Knoten und erstellen eine AlwaysOn-Verfügbarkeitsgruppe. Unser Ziel ist die schnelle Vorbereitung einer Umgebung mithilfe einer einzigen Konfigurationsdatei. Daher können Entwickler oder Testteams schnell Tests beispielsweise zu Kompatibilität, Konnektivität, Codefunktionalität usw. durchführen. In diesem Abschnitt bereiten wir zunächst ein Ubuntu-basiertes Image vor, um eine Verfügbarkeitsgruppe auf einem Container installieren zu können. Wir führen anschließend die notwendige Installation durch. Wichtig: Dieser Vorgang wird für Produktionsumgebungen nicht empfohlen. Die Installation wurde auf Ubuntu 18.04 durchgeführt. Docker installierenIch werde die Installation von Docker nicht vorstellen, Sie können es selbst installieren. Architektur
Bereiten Sie relevante Container-Images vorZiehen Sie die Docker-Images des Betriebssystems und der Datenbank wie folgt BetriebssystemDocker-Pull Ubuntu:18.04 SQL Server 2019 Docker-Pull mcr.microsoft.com/mssql/server:2019-latest Sie können die heruntergeladenen Bildinformationen über Spiegeladresse: https://hub.docker.com/_/microsoft-mssql-server Konfigurationscontainer startenNachdem die Umgebung vorbereitet ist, beginnen Sie mit der formalen Konfiguration und Installation. Schritt 1: Erstellen Sie eine Docker-DateiErstellen Sie ein Verzeichnis zum Speichern von Dateien wie Dockerfile und Docker-compose.yml. mkdir /sql2019ha cd /sql2019ha Docker-Datei berühren vi Docker-Datei Der Dockerfile-Inhalt ist wie folgt VON Ubuntu:18.04 Führen Sie apt-get update aus. Führen Sie apt install aus: sudo wget curl gnupg gnupg1 gnupg2 -y Führen Sie den Befehl apt install software-properties-common systemd vim -y aus. Führen Sie wget -qO- https://packages.microsoft.com/keys/microsoft.asc aus | sudo apt-key add - Führen Sie add-apt-repository aus "$(wget -qO- https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list)" Führen Sie apt-get update aus. Führen Sie den Befehl apt-get install -y mssql-server aus. RUN /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1 RUN /opt/mssql/bin/mssql-conf set sqlagent.enabled true EXPOSE 1433 EINSTIEGSPUNKT /opt/mssql/bin/sqlservr veranschaulichen :
Schritt 2: Kompilieren Sie das Image Kompilieren Sie das Image über Dockerfile für die anschließende Installation, Befehl: Hier ist Die folgende Ausgabe ist kurz und knapp. Tatsächlich gibt es eine Menge Ausgabe... Es dauert auch einige Zeit (Installation einiger Pakete, Datenbanken usw.), abhängig von der Netzwerkgeschwindigkeit $ docker build -t sqlag2019:ha . Senden des Build-Kontexts an den Docker-Daemon 2,56 kB Schritt 1/12: VON ubuntu:18.04 ---> c3c304cb4f22 Schritt 2/12: Führen Sie apt-get update aus ---> Läuft in 950e50f80f00 Holen Sie sich:1 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB] Holen Sie sich:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [88,7 kB] Holen Sie sich:3 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Pakete [932 kB] Holen Sie sich:4 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88,7 kB] ... Schritt 3/12: Führen Sie apt install sudo wget curl gnupg gnupg1 gnupg2 -y aus. ---> Wird ausgeführt in edc9d15b2383 .. .. Schritt 8/12: Führen Sie den Befehl sudo apt-get install -y mssql-server aus. ---> Wird ausgeführt in 43d82a503f8a Paketlisten werden gelesen... Abhängigkeitsbaum wird erstellt ... Statusinformationen werden gelesen... Die folgenden zusätzlichen Pakete werden installiert: Schritt 9/12: Führen Sie den Befehl sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1 aus. ---> Wird ausgeführt in 166c6596d2dd SQL Server muss neu gestartet werden, um diese Einstellung anzuwenden. Bitte führen Sie „systemctl mssql-server.service neu starten“. Zwischenbehälter entfernen 166c6596d2dd ---> bcdb057fed43 Schritt 10/12: Führen Sie den Befehl sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true aus. ---> Wird ausgeführt in 22dd6a93d1ef SQL Server muss neu gestartet werden, um diese Einstellung anzuwenden. Bitte führen Sie „systemctl mssql-server.service neu starten“. Zwischenbehälter entfernen 22dd6a93d1ef ---> 6b90afbaf94e Schritt 11/12: EXPOSE 1433 ---> Wird ausgeführt in bcc14f3b0bad Zwischencontainer bcc14f3b0bad entfernen ---> 4aae1563aa74 Schritt 12/12: ENTRYPOINT /opt/mssql/bin/sqlservr ---> Wird ausgeführt in 68b6ed45ff6a Zwischenbehälter ausbauen 68b6ed45ff6a ---> b7467618c371 Erfolgreich erstellt b7467618c371 Erfolgreich getaggt mit sqlag2019:ha Die Meldung Schritt 3: Einen Container erstellen Nachdem das Image nun kompiliert ist, erstellen und konfigurieren wir drei Container über die $ berühren docker-compose.yml $ vi docker-compose.yml Version: '3' Leistungen: db1: Containername: sqlNode1 Bild: sqlag2019:ha Hostname: sqlNode1 Domänenname: lab.local Umfeld: SA_PASSWORD: "MeinPasswort123" ACCEPT_EULA: „J“ Häfen: - „1501:1433“ zusätzliche_hosts: sqlNode2.labl.local: "172.16.238.22" sqlNode3.labl.local: "172.16.238.23" Netzwerke: Intern: IPv4-Adresse: 172.16.238.21 db2: Containername: sqlNode2 Bild: sqlag2019:ha Hostname: sqlNode2 Domänenname: lab.local Umfeld: SA_PASSWORD: "MeinPasswort123" ACCEPT_EULA: „J“ Häfen: - „1502:1433“ zusätzliche_hosts: sqlNode1.lab.local: "172.16.238.21" sqlNode3.lab.local: "172.16.238.23" Netzwerke: Intern: IPv4-Adresse: 172.16.238.22 db3: Containername: sqlNode3 Bild: sqlag2019:ha Hostname: sqlNode3 Domänenname: lab.local Umfeld: SA_PASSWORD: "MeinPasswort123" ACCEPT_EULA: „J“ Häfen: - „1503:1433“ zusätzliche_hosts: sqlNode1.lab.local: "172.16.238.21" sqlNode2.lab.local: "172.16.238.22" Netzwerke: Intern: IPv4-Adresse: 172.16.238.23 Netzwerke: Intern: ipam: Treiber: Standard Konfiguration: - Subnetz: 172.16.238.0/24 Schritt 4: Starten Sie den Container Starten Sie dann die drei Container mit $ docker-compose up -d Erstellen des Netzwerks „sql2019hademo_internal“ mit dem Standardtreiber sqlNode2 wird erstellt … sqlNode1 wird erstellt ... Erstellen von sqlNode2 sqlNode3 wird erstellt ... Erstellen von sqlNode1 sqlNode2 wird erstellt ... fertig
Containerstatus anzeigen $ Docker-Compose ps Name Befehl Status Ports -------------------------------------------------------------------------- sqlNode1 /bin/sh -c /opt/mssql/bin/ ... Up 0.0.0.0:1501->1433/tcp sqlNode2 /bin/sh -c /opt/mssql/bin/ ... Up 0.0.0.0:1502->1433/tcp sqlNode3 /bin/sh -c /opt/mssql/bin/ ... Up 0.0.0.0:1503->1433/tcp Jetzt wurde der Container gestartet. Stellen Sie jetzt über SSMS eine Verbindung zur Datenbank her, um entsprechende Prüfungen durchzuführen und ALWAYSON zu konfigurieren. Schritt 5: SSMS mit MSSQL verbindenStellen Sie über die externe Netzwerk-IP+Port des Hosts wie folgt eine Verbindung zur entsprechenden Datenbank her:
Sie können sehen, dass das Datenbanksymbol auch ein Linux-Symbol ist. Konfiguration - DatenbankIn diesem Teil werden relevante Konfigurationen in der Datenbank durchgeführt, z. B.: Erstellen von KEY-Verschlüsselungsdateien, Verwalten von Benutzern, verfügbaren Gruppen usw. Schritt 1: Verbindung zur Hauptdatenbank herstellen - sqlNode1Die Hauptdatenbank ist Knoten 1, der Port ist 1501 und die Verbindungsmethode ist wie oben gezeigt. Wir haben das Zertifikat und den privaten Schlüssel in die Dateien Wir kopieren diese Dateien auf andere Knoten und erstellen einen Hauptschlüssel und ein Zertifikat basierend auf den folgenden Dateien: Führen Sie das folgende Skript aus USE-Meister GEHEN LOGIN ERSTELLEN dbm_login MIT PASSWORT = 'MyStr0ngPa$w0rd'; BENUTZER dbm_user FÜR LOGIN erstellen dbm_login; GEHEN HAUPTSCHLÜSSELVERSCHLÜSSELUNG MIT PASSWORT ERSTELLEN = 'MyStr0ngPa$w0rd'; gehen ZERTIFIKAT ERSTELLEN dbm_certificate MIT SUBJECT = "dbm"; BACKUP-ZERTIFIKAT dbm_certificate IN DATEI = '/tmp/dbm_certificate.cer' MIT PRIVATEM SCHLÜSSEL ( DATEI = '/tmp/dbm_certificate.pvk', VERSCHLÜSSELUNG MIT PASSWORT = 'MyStr0ngPa$w0rd' ); GEHEN Kopieren Sie die Datei auf die anderen beiden Knoten: $ docker cp sqlNode1:/tmp/dbm_certificate.cer . $ docker cp sqlNode1:/tmp/dbm_certificate.pvk . $ docker cp dbm_certificate.cer sqlNode2:/tmp/ $ docker cp dbm_certificate.pvk sqlNode2:/tmp/ $ docker cp dbm_certificate.cer sqlNode3:/tmp/ $ docker cp dbm_certificate.pvk sqlNode3:/tmp/ Schritt 2: Verbindung zu den Slave-Bibliotheken herstellen - sqlNode2 und sqlNode3Die Ports der beiden Slave-Bibliotheken sind 1502 und 1503. Wiederholen Sie dann die von der Master-Bibliothek ausgeführten Vorgänge wie folgt: LOGIN ERSTELLEN dbm_login MIT PASSWORT = 'MyStr0ngPa$w0rd'; BENUTZER dbm_user FÜR LOGIN erstellen dbm_login; GEHEN HAUPTSCHLÜSSELVERSCHLÜSSELUNG MIT PASSWORT ERSTELLEN = 'MyStr0ngPa$w0rd'; GEHEN ZERTIFIKAT ERSTELLEN dbm_certificate AUTORISIERUNG dbm_user AUS DATEI = '/tmp/dbm_certificate.cer' MIT PRIVATEM SCHLÜSSEL ( DATEI = '/tmp/dbm_certificate.pvk', ENTSCHLÜSSELUNG MIT PASSWORT = 'MyStr0ngPa$w0rd' ); GEHEN Schritt 3: Alle KnotenFühren Sie den folgenden Befehl auf allen Knoten aus: ENDPOINT ERSTELLEN [Hadr_Endpunkt] ALS TCP (LISTENER_IP = (0.0.0.0), LISTENER_PORT = 5022) FÜR DATA_MIRRORING ( ROLLE = ALLE, AUTHENTIFIZIERUNG = ZERTIFIKAT dbm_certificate, VERSCHLÜSSELUNG = ERFORDERLICHER ALGORITHMUS AES ); ALTER ENDPOINT [Hadr_endpoint] STATE = GESTARTET; GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [dbm_login]; Aktivieren Sie den automatischen Start ALWAYON und führen Sie den folgenden Befehl auf allen Knoten aus ALTER EVENT SESSION AlwaysOn_health auf dem Server mit (STARTUP_STATE = ON); GEHEN Schritt 4: Erstellen einer HochverfügbarkeitsgruppeSie können SSMS-Tools und T-SQL verwenden. Im Folgenden wird T-SQL als Beispiel verwendet: Führen Sie das folgende Skript aus, um eine Verfügbarkeitsgruppe im Wenn Sie AlwaysOn AG unter Linux installieren, sollten Sie CLUSTER_TYPE = EXTERNAL für Pacemaker auswählen: VERFÜGBARKEITSGRUPPE ERSTELLEN [AG1] MIT (CLUSTER_TYPE = KEINE) ZUR REPLIK AUF N'sqlNode1' MIT ( ENDPOINT_URL = N'tcp://sqlNode1:5022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, SEEDING_MODE = AUTOMATISCH, FAILOVER_MODE = MANUELL, SEKUNDÄRE_ROLLE (VERBINDUNGEN ERLAUBT = ALLE) ), N'sqlNode2' MIT ( ENDPOINT_URL = N'tcp://sqlNode2:5022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, SEEDING_MODE = AUTOMATISCH, FAILOVER_MODE = MANUELL, SEKUNDÄRE_ROLLE (VERBINDUNGEN ERLAUBT = ALLE) ), N'sqlNode3' MIT ( ENDPOINT_URL = N'tcp://sqlNode3:5022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, SEEDING_MODE = AUTOMATISCH, FAILOVER_MODE = MANUELL, SEKUNDÄRE_ROLLE (VERBINDUNGEN ERLAUBT = ALLE) ); GEHEN Führen Sie den folgenden Befehl in der Slave-Bibliothek aus, um die Slave-Bibliothek zur AG-Gruppe hinzuzufügen: ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = NONE); ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE; GEHEN An diesem Punkt ist die Installation des SQL Server AlwaysOn-Clusters im Docker-Container abgeschlossen! Hinweis: Wenn Sie ALTER AVAILABILITY GROUP [ag1] FORCE_FAILOVER_ALLOW_DATA_LOSS prüfenErstellen Sie eine Datenbank auf der primären Datenbank und fügen Sie sie der Verfügbarkeitsgruppe AG hinzu. DATENBANK ERSTELLEN agtestdb; GEHEN ALTER DATABASE agtestdb SET RECOVERY FULL; GEHEN DATENBANK agtestdb AUF FESTPLATTE SICHERN = '/var/opt/mssql/data/agtestdb.bak'; GEHEN ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [agtestdb]; GEHEN Verwenden Sie SSMS, um zu überprüfen, ob der Synchronisierungsstatus normal ist. Referenzlinks https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15 Dies ist das Ende dieses Artikels über die Implementierung der Docker-Bereitstellung des SQL Server 2019 Always On-Clusters. Weitere relevante Inhalte zur Docker-Bereitstellung des SQLServer-Clusters finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Warum DOCTYPE HTML verwenden?
>>: Einführung in die Verwendung des MySQL Performance Stress Benchmark Tools Sysbench
Vorwort Ich dachte immer, dass UTF-8 eine univers...
Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...
var numA = 0,1; var numB = 0,2; Alarm (Zahl A + Z...
Inhaltsverzeichnis Problembeschreibung: Ursachena...
Inhaltsverzeichnis 1. v-wenn 2. Verwenden Sie v-i...
Inhaltsverzeichnis Array-Deduplizierung 1 Doppels...
Viele meiner Freunde haben möglicherweise ein Pro...
Sehen wir uns zunächst verschiedene Möglichkeiten...
1. Proto kompilieren Erstellen Sie einen neuen Pr...
Nehmen Sie als Beispiel die WEB-Schnittstelle von...
Es gibt die folgenden vier häufig verwendeten Met...
Warum befinden sich die Bildlaufleisten der Brows...
Problembeschreibung: Nachdem das Front-End Daten ...
In diesem Artikel untersuchen wir, warum async/aw...
1. Laden Sie die entsprechende Installationsdatei...