TechShizz | Setting up Failover Clustering | Server 2016 via PowerShell

Setting up Failover Clustering | Server 2016 via PowerShell

Servers in this example:

DC1 - Domain Controller

FS1 - File Server for Shared Storage

Cluster-Host1 - Cluster Node

Cluster-Host2 - Cluster Node

Here is the required networking for this lab:

Production Network - 10.0.0.0/24 | DC, FS1, Cluster-Host1, Cluster-Host2

Cluster Network -    10.0.1.0/24 | Cluster-Host1, Cluster-Host2

Storage Network  -    10.0.2.0/24 | FS1

First we set up the required storage, iSCSI on the file server. This will consist of the shared storage for whatever App and a Quorum disk. Both disks should be formatted as NTFS (this will be done in the powershell below. The PowerShell commands are making use of the Invoke-Command cmdlet, to enable us to run these commands from a domain joined computer with the right admin credentials. Only one of the last two commands are required, depending on if your setting up a domain based cluster or not.

NOTE: During this process in Server 2016 from a Windows 10 Machine running RSAT, I had issues using the GUI to set this up. See https://www.techshizz.com/post/error-cannot-find-the-windows-powershell-data-file-importexportiscsitargetconfiguration-psd1 for details. 

 

## iSCSI Initiators (pre-target) ##

# start iscsi initiator service on both nodes
Invoke-Command Cluster-Host1,Cluster-Host2 { Get-Service *iscsi* | Set-Service -StartupType Automatic -PassThru | Start-Service }

# view iscsi initiator addresses
Invoke-Command Cluster-Host1,Cluster-Host2 { Get-InitiatorPort }

# create iscsi target portal for discovery
Invoke-Command Cluster-Host1,Cluster-Host2 { New-IscsiTargetPortal -TargetPortalAddress 10.0.0.20 }


## iSCSI Target ##

# create iscsi lun
Invoke-Command FS1 { New-IscsiVirtualDisk -Path C:\DataDisk.vhdx -SizeBytes 100GB }
Invoke-Command FS1 { New-IscsiVirtualDisk -Path C:\QuorumDisk.vhdx -SizeBytes 1GB }

# create iscsi target
Invoke-Command FS1 { New-IscsiServerTarget -TargetName CL-Target -InitiatorIds "IQN:iqn.1991-05.com.microsoft:cluster-host1.lab.local","IQN:iqn.1991-05.com.microsoft:cluster-host2.lab.local" }

# assign luns to target
Invoke-Command FS1 { Add-IscsiVirtualDiskTargetMapping -TargetName CL-Target -Path C:\DataDisk.vhdx }
Invoke-Command FS1 { Add-IscsiVirtualDiskTargetMapping -TargetName CL-Target -Path C:\QuorumDisk.vhdx }


## iSCSI Initiators (post-target) ##

# update discovery portal with new target information
Invoke-Command Cluster-Host1,Cluster-Host2 { Get-IscsiTargetPortal | Update-IscsiTargetPortal }

# view iscsi targetGet
Invoke-Command Cluster-Host1,Cluster-Host2 { Get-IscsiTarget }

# connect initiators to target
Invoke-Command Cluster-Host1,Cluster-Host2 { Get-IscsiTarget | Connect-IscsiTarget }

# force the connection to persist (across reboots)
Invoke-Command Cluster-Host1,Cluster-Host2 { Get-IscsiSession | Register-IscsiSession }

--------------
##Connect to ONE of the cluster hosts to format the disks. Repeat for each disk. Label Witnes as W and data D.

# view disks
Get-Disk

# initialize disks as GPT
Initialize-Disk -Number 2 -PartitionStyle GPT

# view partitions
Get-Partition

# partition an entire disk
New-Partition -DiskNumber 2 -UseMaximumSize -Driveletter D

# view volumes
Get-Volume

# format with a file system
Format-Volume -DriveLetter I -FileSystem NTFS -AllocationUnitSize 4096 -NewFileSystemLabel "IT Data"
-----

## Failover Clustering ##
# install failover clustering feature on both nodes
Invoke-Command Cluster-Host1,Cluster-Host2 { Install-WindowsFeature Failover-Clustering,RSAT-Clustering-PowerShell }

# run cluster validation
Test-Cluster -Node Cluster-Host1,Cluster-Host2

# create a new cluster (single domain)
New-Cluster -Name Cluster1 -Node Cluster-Host1,Cluster-Host2 -StaticAddress 10.0.0.150 -IgnoreNetwork 10.0.1.0/24,10.0.2.0/24

# create a new cluster (multi-domain/workgroup - no network name)
New-Cluster -Name Cluster1 -Node Cluster-Host1,Cluster-Host2 -StaticAddress 10.0.0.150 -AdministrativeAccessPoint Dns

 

Add comment