{"id":2155,"date":"2018-02-10T20:41:39","date_gmt":"2018-02-10T18:41:39","guid":{"rendered":"https:\/\/www.langlitz-it.de\/?p=2155"},"modified":"2018-03-29T08:54:54","modified_gmt":"2018-03-29T06:54:54","slug":"how-to-adfs-2016-datenbank-failover-konfiguration-einrichten","status":"publish","type":"post","link":"https:\/\/www.langlitz-it.de\/?p=2155","title":{"rendered":"How to &#8211; ADFS 2016 Datenbank Failover Konfiguration einrichten"},"content":{"rendered":"<p>Um die AD FS (Active Directory Federation Services) ausfallsicher zu gestalten, ist es m\u00f6glich, die verwendeten Datenbanken zu spiegeln und die gespiegelte Datenbank als Failover Partner zu konfigurieren. Im folgenden Schaubild soll die Anforderung deutlich gemacht werden.<\/p>\n<p><a href=\"https:\/\/www.langlitz-it.de\/wp-content\/uploads\/2017\/11\/ADFS_Failover_1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2156\" src=\"https:\/\/www.langlitz-it.de\/wp-content\/uploads\/2017\/11\/ADFS_Failover_1.jpg\" alt=\"\" width=\"988\" height=\"649\" srcset=\"https:\/\/www.langlitz-it.de\/wp-content\/uploads\/2017\/11\/ADFS_Failover_1.jpg 988w, https:\/\/www.langlitz-it.de\/wp-content\/uploads\/2017\/11\/ADFS_Failover_1-300x197.jpg 300w, https:\/\/www.langlitz-it.de\/wp-content\/uploads\/2017\/11\/ADFS_Failover_1-768x504.jpg 768w\" sizes=\"(max-width: 988px) 100vw, 988px\" \/><\/a><\/p>\n<p>In den beiden SQL Instanzen befinden sich die Datenbanken f\u00fcr die Konfiguration und die Artefakte der ADFS Farm. Im Normalfall verwendet die Farm die konfigurierte\u00a0 &#8220;Data Source&#8221; Verbindung. Im Fehlerfall dieser Verbindung oder der Datenbank soll die jeweils gespiegelte Datenbank \u00fcber die Failover Verbindung verwendet werden. Dazu ist eine Anpassung des jeweiligen &#8220;ConnectionStrings&#8221; erforderlich. Die Einrichtung wird \u00fcber folgende Schritte get\u00e4tigt.<\/p>\n<p>Beginnen wir mit der Konfigurationsdatenbank. Die folgenden Powershell Kommandos sind auf allen FarmServern auszuf\u00fchren.<\/p>\n<pre style=\"margin: 0in; font-family: Calibri; font-size: 11.0pt;\">$ConfigDB = Get-WmiObject -Namespace root\/ADFS -Class Securitytokenservice\r\n\r\n$ConfigDB_Old = $ConfigDB.ConfigurationDatabaseConnectionString\r\n\r\n$ConfigDB_New = \"Data Source=SQL1;<strong>Failover Partner=SQL2<\/strong>;Initial Catalog=AdfsConfigurationV3;Integrated Security=True;Min Pool Size=20\"\r\n\r\n$ConfigDB.ConfigurationDatabaseConnectionString=$ConfigBD_New\r\n\r\n$ConfigDB.Put()<\/pre>\n<p>&nbsp;<\/p>\n<p>Zun\u00e4chst wird das WMI Objekt zur Konfigurationsdatenbank in eine Variable eingelesen ($ConfigBD).<br \/>\nDer ConfigurationDatabaseConnectionString kann zur Sicherheit noch einmal gespeichert werden ($ConfigDB_Old). Sollte beim Eintragen des neuen Strings etwas schief gehen, steht der alte String damit schnell zur Verf\u00fcgung. Im neuen String wird dann der Failover Partner wie angegeben eingetragen ($ConfigBD_New). Dieser wird in die Variable der DB hinzugef\u00fcgt und im letzten Schritt mit der Put Methode in das Objekt zur\u00fcckgeschrieben.<\/p>\n<p>Weiter geht es mit der Artefakt Datenbank. Diese Konfiguration muss nur einmal f\u00fcr die Farm ausgef\u00fchrt werden, weil das Farm Objekt im AD gespeichert ist und nicht lokal im ADFS Server verwaltet wird.<\/p>\n<pre style=\"margin: 0in; font-family: Calibri; font-size: 11.0pt;\">$ArtifactDB_Old = (Get-AdfsProperties |select *conn*).artifactdbconnection\r\n\r\n$ArtifactDB_New = \"Data Source=SQL1;<strong>Failover Partner=SQL1<\/strong>;Initial Catalog=AdfsArtifactStore;Integrated Security=True;Min Pool Size=20\"\r\n\r\nSet-AdfsProperties -ArtifactDbConnection $ArtifactDB_new<\/pre>\n<p>&nbsp;<\/p>\n<p>Das Vorgehen ist im Prinzip \u00e4hnlich. Im ersten Schritt wird der ConnectionString ausgelesen und in einer Variablen zur Sicherheit gespeichert ($ArtifactDB_Old). Der neue String wird in eine Variable gesetzt ($ArtifactDB_New) und zum Schluss in das AD Objekt zur\u00fcck geschrieben. Ja, das kann auch direkt geschehen, aber ich bin ein Freund von Variablen, die man auch noch weiter verwenden kann.<\/p>\n<p>Als letztes m\u00fcssen noch die ADFS Dienste auf allen Servern der Farm neu gestartet werden.<\/p>\n<pre style=\"margin: 0in; font-family: Calibri; font-size: 11.0pt;\">(Get-AdfsFarmInformation).farmnodes.fqdn |% {Get-Service -ComputerName $_ adfssrv} |Restart-Service<\/pre>\n<p>Damit ist der Failover Fall konfiguriert und verf\u00fcgbar.<\/p>\n<p>Das alles gilt f\u00fcr Windows Server 2016. Dieses Vorgehen sollte auch f\u00fcr Windows Server 2012 funktionieren, wurde aber von mir nicht getestet.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um die AD FS (Active Directory Federation Services) ausfallsicher zu gestalten, ist es m\u00f6glich, die verwendeten Datenbanken zu spiegeln und die gespiegelte Datenbank als Failover Partner zu konfigurieren. Im folgenden Schaubild soll die Anforderung deutlich gemacht werden. In den beiden &hellip; <a href=\"https:\/\/www.langlitz-it.de\/?p=2155\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[738,732,736,735,733,734,737],"_links":{"self":[{"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/posts\/2155"}],"collection":[{"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2155"}],"version-history":[{"count":6,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/posts\/2155\/revisions"}],"predecessor-version":[{"id":2193,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/posts\/2155\/revisions\/2193"}],"wp:attachment":[{"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}