Перед созданием кластера наши инженеры подготовили сетевую инфраструктуру и общее хранилище. Правильная подготовка — залог стабильной работы кластера.
Каждый узел кластера мы оснастили четырьмя сетевыми интерфейсами. Применённая конфигурация:
# На каждом узле мы выполнили:
# 1. Переименование сетевых адаптеров
Rename-NetAdapter -Name 'Ethernet 1' -NewName 'Production'
Rename-NetAdapter -Name 'Ethernet 2' -NewName 'Heartbeat'
# 2. Настройка IP-адресов
# Узел 1 - Production
New-NetIPAddress -InterfaceAlias 'Production' -IPAddress 10.0.1.11 `
-PrefixLength 24 -DefaultGateway 10.0.1.1
Set-DnsClientServerAddress -InterfaceAlias 'Production' `
-ServerAddresses 10.0.1.5, 10.0.1.6
# Узел 1 - Heartbeat (без шлюза и DNS!)
New-NetIPAddress -InterfaceAlias 'Heartbeat' -IPAddress 192.168.100.11 `
-PrefixLength 24
# 3. Отключение регистрации DNS для heartbeat-сети
Set-DnsClient -InterfaceAlias 'Heartbeat' -RegisterThisConnectionsAddress $false
# 4. Настройка приоритета адаптеров
Set-NetIPInterface -InterfaceAlias 'Production' -InterfaceMetric 10
Set-NetIPInterface -InterfaceAlias 'Heartbeat' -InterfaceMetric 20
Схема сети, которую мы реализовали:
[500 пользователей 1С] [DNS/AD]
| |
----+---Production Network (10.0.1.0/24)---+---
| |
[Node1: 10.0.1.11] [Node2: 10.0.1.12]
| |
----+---Heartbeat Network (192.168.100.0/24)+---
| |
----+--------iSCSI Network (172.16.0.0/24)--+---
|
[iSCSI Storage]
[SSD + HDD JBOD]
Мы выбрали iSCSI как наиболее доступный и надёжный вариант общего хранилища. Настройка:
На сервере хранения (iSCSI Target):
# Установка роли iSCSI Target Server
Install-WindowsFeature FS-iSCSITarget-Server -IncludeManagementTools
# Создание iSCSI Target
New-IscsiServerTarget -TargetName 'ClusterTarget' `
-InitiatorIds @(
'IQN:iqn.1991-05.com.microsoft:node1.company.ru',
'IQN:iqn.1991-05.com.microsoft:node2.company.ru'
)
# Создание виртуальных дисков
New-IscsiVirtualDisk -Path 'D:\iSCSI\ClusterData.vhdx' -SizeBytes 500GB
New-IscsiVirtualDisk -Path 'D:\iSCSI\ClusterWitness.vhdx' -SizeBytes 1GB
# Подключение дисков к Target
Add-IscsiVirtualDiskTargetMapping -TargetName 'ClusterTarget' `
-Path 'D:\iSCSI\ClusterData.vhdx' -Lun 0
Add-IscsiVirtualDiskTargetMapping -TargetName 'ClusterTarget' `
-Path 'D:\iSCSI\ClusterWitness.vhdx' -Lun 1
На каждом узле кластера (iSCSI Initiator):
# Запуск службы iSCSI Initiator
Start-Service MSiSCSI
Set-Service MSiSCSI -StartupType Automatic
# Подключение к iSCSI Target
New-IscsiTargetPortal -TargetPortalAddress 172.16.0.100
Connect-IscsiTarget -NodeAddress 'iqn.1991-05.com.microsoft:clustertarget' `
-IsPersistent $true
# Проверка подключения
Get-IscsiSession | Format-Table -AutoSize
Get-Disk | Where-Object BusType -eq iSCSI | Format-Table
Инициализация дисков (только на первом узле!):
# Определяем iSCSI-диски
$disks = Get-Disk | Where-Object { $_.BusType -eq 'iSCSI' -and $_.PartitionStyle -eq 'RAW' }
# Инициализация и форматирование диска данных
$dataDisk = $disks | Sort-Object Size -Descending | Select-Object -First 1
Initialize-Disk -Number $dataDisk.Number -PartitionStyle GPT
New-Partition -DiskNumber $dataDisk.Number -UseMaximumSize -AssignDriveLetter |
Format-Volume -FileSystem NTFS -NewFileSystemLabel 'ClusterData' -Confirm:$false
# Инициализация диска свидетеля
$witnessDisk = $disks | Sort-Object Size | Select-Object -First 1
Initialize-Disk -Number $witnessDisk.Number -PartitionStyle GPT
New-Partition -DiskNumber $witnessDisk.Number -UseMaximumSize -AssignDriveLetter |
Format-Volume -FileSystem NTFS -NewFileSystemLabel 'Witness' -Confirm:$false