{"id":471,"date":"2019-06-12T10:41:47","date_gmt":"2019-06-12T15:41:47","guid":{"rendered":"http:\/\/itblog.ldlnet.net\/?p=471"},"modified":"2019-06-12T10:50:58","modified_gmt":"2019-06-12T15:50:58","slug":"installing-an-ip-less-exchange-server-2019-database-availability-group","status":"publish","type":"post","link":"https:\/\/itblog.ldlnet.net\/index.php\/2019\/06\/12\/installing-an-ip-less-exchange-server-2019-database-availability-group\/","title":{"rendered":"Installing an &#8216;IP-less&#8217; Exchange Server 2019 Database Availability Group"},"content":{"rendered":"\n<p>Yesterday, I posted on how Exchange now uses the Resilient File System <a href=\"https:\/\/itblog.ldlnet.net\/index.php\/2019\/06\/11\/using-the-resilient-file-system-for-exchange-server\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"(ReFS) (opens in a new tab)\">(ReFS)<\/a> to optimize and protect Exchange critical files. Another layer of protection is using a database availability group (DAG) for redundancy and is a necessary factor when designing an Exchange Enterprise Environment.<br>In this example, I will walk you through the installation of an Exchange Server 2019 DAG as I configured in my environment. This DAG will contain two Exchange Servers in the same site with a third Windows Server 2019 server being the File Share Witness (FSW).<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"553\" height=\"267\" src=\"https:\/\/itblog.ldlnet.net\/wp-content\/uploads\/2019\/06\/image-6.png\" alt=\"\" class=\"wp-image-472\" srcset=\"https:\/\/itblog.ldlnet.net\/wp-content\/uploads\/2019\/06\/image-6.png 553w, https:\/\/itblog.ldlnet.net\/wp-content\/uploads\/2019\/06\/image-6-300x145.png 300w\" sizes=\"auto, (max-width: 553px) 100vw, 553px\" \/><figcaption>Two Server Exchange DAG Configuration<\/figcaption><\/figure><\/div>\n\n\n\n<p>For my configuration, I configured two identical Windows Server 2019 VMs (same procs, RAM, vhdx drives, partitions, etc&#8230;). I configured the Exchange Data Volume using <a aria-label=\"ReFS (opens in a new tab)\" href=\"https:\/\/itblog.ldlnet.net\/index.php\/2019\/06\/11\/using-the-resilient-file-system-for-exchange-server\/\" target=\"_blank\" rel=\"noreferrer noopener\">ReFS<\/a> and mounted them to the same folder on the C: Drive on each server. This is very important for replication to take place successfully when the databases are added to the DAG.<\/p>\n\n\n<pre class=\"lang:PowerShell nums:False\">Get-MailboxDatabase | fl Name,EDBFilePath,LogFolderPath\n\nName          : EX01-DB01\nEdbFilePath   : C:\\Exchange\\Data-ReFS\\DB\\EX01-DB01\\EX01-DB01.edb\nLogFolderPath : C:\\Exchange\\Data-ReFS\\Logs\\EX01-DB01\n\nName          : EX01-ARCHIVE-DB\nEdbFilePath   : C:\\Exchange\\Data-ReFS\\DB\\EX01-ARCHIVE-DB\\EX01-ARCHIVE-DB.edb\nLogFolderPath : C:\\Exchange\\Data-ReFS\\Logs\\EX01-ARCHIVE-DB\n\nName          : EX02-DB01\nEdbFilePath   : C:\\Exchange\\Data-ReFS\\DB\\EX02-DB01\\EX02-DB01.edb\nLogFolderPath : C:\\Exchange\\Data-ReFS\\Logs\\EX02-DB01\n<\/pre>\n\n\n\n<p><br>I next went to the Admin server where the FSW would be hosted and added the Exchange Trusted Subsystem Account to the local Administrators group on that server:<\/p>\n\n\n\n<p>  <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"493\" height=\"567\" src=\"https:\/\/itblog.ldlnet.net\/wp-content\/uploads\/2019\/06\/image-8.png\" alt=\"\" class=\"wp-image-474\" srcset=\"https:\/\/itblog.ldlnet.net\/wp-content\/uploads\/2019\/06\/image-8.png 493w, https:\/\/itblog.ldlnet.net\/wp-content\/uploads\/2019\/06\/image-8-261x300.png 261w\" sizes=\"auto, (max-width: 493px) 100vw, 493px\" \/><figcaption>IMPORTANT!<br>Add the Exchange Trusted Subsystem Account to the Local Administrators Group on the FSW.<\/figcaption><\/figure><\/div>\n\n\n\n<p>NOTE: The reason that this is an &#8216;IP-less&#8217; DAG is that I&#8217;m creating a DAG with no cluster administrative access point (CAAP). The DAG has no IP address of its own, and no computer object in Active Directory. The main implication of this is that backup software that relies on the CAAP or backup operations won&#8217;t work. This option of an &#8216;IP-less&#8217; DAG was first introduced in Exchange Server 2013 SP1\/CU4, so by now any decent backup products should support this configuration. But you should always verify this with your backup vendor of choice. Also be aware that this is only supported for DAGs that are running on Windows Server 2012 R2 (or later).<\/p>\n\n\n\n<p>Next, we create the DAG from Exchange PowerShell using the New-DatabaseAvailabilityGroup cmdlet. Now remember that since you are using the <a aria-label=\"ReFS (opens in a new tab)\" href=\"https:\/\/itblog.ldlnet.net\/index.php\/2019\/06\/11\/using-the-resilient-file-system-for-exchange-server\/\" target=\"_blank\" rel=\"noreferrer noopener\">ReFS<\/a> system for your database volumes, you will need to specify the -FileSystem parameter within the cmdlet to assure proper setup and replication of the data files.<\/p>\n\n\n<pre class=\"lang:PowerShell nums:False\">New-DatabaseAvailabilityGroup -Name LDLNETDAG01 -WitnessServer admin01.ldlnet.org -FileSystem ReFS\n \nName             Member Servers                                      Operational Servers\n----             --------------                                      -------------------\nLDLNETDAG01      {}\n<\/pre>\n\n\n\n<p>Next, we add the Exchange Servers that hold the databases that will be replicated within the DAG:<\/p>\n\n\n<pre class=\"lang:PowerShell nums:False\">Add-DatabaseAvailabilityGroupServer -Identity LDLNETDAG01 -MailboxServer EX01<\/pre>\n<pre class=\"lang:PowerShell nums:False\">Add-DatabaseAvailabilityGroupServer -Identity LDLNETDAG01 -MailboxServer EX02<\/pre>\n\n\n\n<p>The DAG will now show the two servers as Operational Member Servers:<\/p>\n\n\n<pre class=\"lang:PowerShell nums:False\">Get-DatabaseAvailabilityGroup -Status | ft -a -wr\n\nName        Member Servers         Operational Servers\n----        --------------         -------------------\nLDLNETDAG01 {EX01, EX02}           {EX01, EX02}<\/pre>\n\n\n\n<p>The FSW Directory was created on the admin01 server when the DAG was created. We can verify that with the following cmdlet:<\/p>\n\n\n<pre class=\"lang:PowerShell nums:False\">Get-DatabaseAvailabilityGroup -Status | fl *Witness*\n\n\nWitnessServer             : admin01.ldlnet.org\nWitnessDirectory          : C:\\DAGFileShareWitnesses\\LDLNETDAG01.ldlnet.org\nAlternateWitnessServer    :\nAlternateWitnessDirectory :\nWitnessShareInUse         : Primary\nDxStoreWitnessServers     :\n<\/pre>\n\n\n\n<p>Next, we add the databases that we want replicated to the DAG as replicated databases. I want all my Databases on EX01 to replicate to EX02 and vice versa for the EX02 Databases. I want the activation preference to remain on the server that the databases were originally created on so I will use the -ActivationPreference parameter to accomplish that.<em> I will go into more detail on Activation Preference in another post.<\/em><\/p>\n\n\n<pre class=\"lang:PowerShell nums:False\">Add-MailboxDatabaseCopy -Identity EX01-DB01 -MailboxServer EX02 -ActivationPreference 2\n<\/pre>\n<pre class=\"lang:PowerShell nums:False\">Add-MailboxDatabaseCopy -Identity EX01-ARCHIVE-DB -MailboxServer EX02 -ActivationPreference 2\n<\/pre>\n<pre class=\"lang:PowerShell nums:False\">Add-MailboxDatabaseCopy -Identity EX02-DB01 -MailboxServer EX01 -ActivationPreference 2\n<\/pre>\n\n\n\n<p>Now we verify that the Database Copies are healthy on each replication member using the Get-MailboxDatabaseCopyStatus cmdlet. You will see a <strong>Healthy<\/strong> Status on the replicated copies:<\/p>\n\n\n<pre class=\"lang:PowerShell nums:False\">Get-MailboxDatabaseCopyStatus -Server EX01 | ft -a -wr\n\nName                        Status  CopyQueueLength ReplayQueueLength LastInspectedLogTime  ContentIndexState\n----                        ------  --------------- ----------------- --------------------  -----------------\nEX01-DB01\\EX01              Mounted 0               0                                       NotApplicable\nEX01-ARCHIVE-DB\\EX01        Mounted 0               0                                       NotApplicable\nEX02-DB01\\EX01              Healthy 0               0                 6\/12\/2019 11:03:03 AM NotApplicable\n<\/pre>\n<pre class=\"lang:PowerShell nums:False\">Get-MailboxDatabaseCopyStatus -Server EX02 | ft -a -wr\n\nName                        Status  CopyQueueLength ReplayQueueLength LastInspectedLogTime  ContentIndexState\n----                        ------  --------------- ----------------- --------------------  -----------------\nEX02-DB01\\EX02              Mounted 0               0                                       NotApplicable\nEX01-ARCHIVE-DB\\EX02        Healthy 0               0                 6\/12\/2019 11:06:44 AM NotApplicable\nEX01-DB01\\EX02              Healthy 0               0                 6\/12\/2019 10:46:40 AM NotApplicable\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-align:center\">POSITIVE ENERGY!<br>KILL NARCISSISM!<br>HAPPY TROUBLESHOOTING!<\/h2>\n\n\n\n<p class=\"has-small-font-size\"><strong><em>REFERENCES:<\/em><\/strong><br><a aria-label=\"Installing an Exchange Server 2016 Database Availability Group (opens in a new tab)\" href=\"https:\/\/practical365.com\/exchange-server\/installing-an-exchange-server-2016-database-availability-group\/\" target=\"_blank\" rel=\"noreferrer noopener\">Installing an Exchange Server 2016 Database Availability Group<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Yesterday, I posted on how Exchange now uses the Resilient File System (ReFS) to optimize and protect Exchange critical files. Another layer<\/p>\n<p class=\"link-more\"><a class=\"myButt \" href=\"https:\/\/itblog.ldlnet.net\/index.php\/2019\/06\/12\/installing-an-ip-less-exchange-server-2019-database-availability-group\/\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":161,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,2,180,3],"tags":[203,202,15,106,14,201,9,150,149,151,147,8],"class_list":["post-471","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-exchange","category-general","category-networking","category-powershell","tag-caap","tag-cluster","tag-cmdlet","tag-dag","tag-database","tag-database-availability-group","tag-exchange","tag-exchange-2013","tag-exchange-2016","tag-exchange-2019","tag-exchange-setup","tag-powershell","odd"],"_links":{"self":[{"href":"https:\/\/itblog.ldlnet.net\/index.php\/wp-json\/wp\/v2\/posts\/471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itblog.ldlnet.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itblog.ldlnet.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itblog.ldlnet.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itblog.ldlnet.net\/index.php\/wp-json\/wp\/v2\/comments?post=471"}],"version-history":[{"count":10,"href":"https:\/\/itblog.ldlnet.net\/index.php\/wp-json\/wp\/v2\/posts\/471\/revisions"}],"predecessor-version":[{"id":485,"href":"https:\/\/itblog.ldlnet.net\/index.php\/wp-json\/wp\/v2\/posts\/471\/revisions\/485"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itblog.ldlnet.net\/index.php\/wp-json\/wp\/v2\/media\/161"}],"wp:attachment":[{"href":"https:\/\/itblog.ldlnet.net\/index.php\/wp-json\/wp\/v2\/media?parent=471"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itblog.ldlnet.net\/index.php\/wp-json\/wp\/v2\/categories?post=471"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itblog.ldlnet.net\/index.php\/wp-json\/wp\/v2\/tags?post=471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}