Установка SAP NetWeaver высокого уровня доступности в отказоустойчивом кластере Windows на общем диске для экземпляра SAP ASCS/SCS в Azure
В этой статье описывается, как установить и настроить в Azure систему SAP высокого уровня доступности, используя отказоустойчивый кластер Windows Server и общий диск для кластеризации экземпляра SAP ASCS/SCS. Как указано в Руководстве по архитектуре: Кластеризация экземпляра SAP ASCS/SCS в отказоустойчивом кластере Windows с помощью общего диска кластера, существует два варианта использования общего диска кластера:
- Общие диски Azure
- Использование SIOS Cluster Edition для создания зеркального хранилища, которое имитирует общий диск кластера
Необходимые компоненты
Перед началом установки изучите следующие документы:
В этой статье мы не рассматриваем настройку СУБД, так как она зависит от используемой СУБД. Мы полагаем, что для СУБД высокий уровень доступности обеспечивается благодаря тем возможностям, которые поставщики СУБД поддерживают для Azure. Например, это Always On или зеркальное отображение базы данных для SQL Server и Oracle Data Guard для баз данных Oracle. Сценарии высокого уровня доступности для СУБД не рассматриваются в этой статье.
Не существует особых требований, которые нужно учитывать при взаимодействии любых СУБД с кластеризованной конфигурацией SAP ASCS/SCS в Azure.
Примечание.
Процедуры установки систем SAP NetWeaver ABAP, SAP Java и SAP ABAP с Java практически идентичны. Главное отличие состоит в том, что в системе SAP ABAP всего один экземпляр ASCS. В системе SAP Java имеется один экземпляр SCS. В системе SAP ABAP с Java — один экземпляр ASCS и один экземпляр SCS, которые работают в одной группе отказоустойчивого кластера Майкрософт. Любые отличия в установке для каждого стека установки SAP NetWeaver будут указаны явным образом. Все остальные шаги явлюятся аналогичными.
Установите SAP с экземпляром ASCS/SCS высокого уровня доступности.
Внимание
Если SIOS используется для предоставления общего диска, не следует размещать файл подкачки на зеркальных томах SIOS DataKeeper. Можно оставить файл подкачки на временном диске D виртуальной машины Azure, который задан по умолчанию. Если файла там нет, поместите его на диск D виртуальной машины Azure.
Установка SAP с высокодоступным экземпляром ASCS/SCS состоит из следующих заданий:
- Создание имени виртуального узла для кластеризованного экземпляра SAP ASCS/SCS.
- Установите SAP на первом узле кластера.
- Изменение профиля SAP для экземпляра ASCS/SCS.
- Добавление порта пробы.
- Открытие порта пробы в брандмауэре Windows.
Создание имени виртуального узла для кластеризованного экземпляра SAP ASCS/SCS
В диспетчере DNS Windows создайте запись DNS для имени виртуального узла экземпляра ASCS/SCS.
Внимание
IP-адрес, который назначается имени виртуального узла для экземпляра ASCS/SCS, должен совпадать с IP-адресом, назначенным для Azure Load Balancer.
Определение записи DNS для виртуального имени кластера SAP ASCS/SCS и TCP/IP-адреса
Если используется новый сервер постановки в очередь для репликации SAP 2, который также является кластеризованным экземпляром, необходимо еще зарезервировать в DNS имя виртуального узла для ERS2.
Внимание
IP-адрес, который назначается имени виртуального узла для экземпляра ERS2, должен совпадать со вторым IP-адресом, назначенным для Azure Load Balancer.
Настройка записи DNS для виртуального имени и TCP/IP-адреса кластера SAP ERS2
Чтобы определить IP-адрес, назначенный имени виртуального узла, выберите Диспетчер DNS>Домен.
Новое виртуальное имя и TCP/IP-адрес для конфигурации кластера SAP ASCS/SCS
Установка первого узла кластера SAP
Выполните установку первого узла кластера на узле A кластера. Выберите:
- для системы ABAP — экземпляр ASCS с номером 00;
- для системы Java — экземпляр SCS с номером 01;
- для системы ABAP с Java — экземпляр ASCS с номером 00 и экземпляр SCS с номером 01.
Внимание
Следует иметь в виду, что конфигурация в правилах балансировки нагрузки внутренней подсистемы балансировки нагрузки Azure (если используется SKU уровня "Базовый") и номера выбранных экземпляров SAP должны совпадать.
Выполните описанную в статье процедуру установки SAP. Проверьте, что для параметра начальной установки "Первый узел кластера" в качестве варианта конфигурации выбрано значение "Общий диск кластера".
Совет
В документации по установке SAP содержатся сведения по установке первого узла кластера ASCS/SCS.
Изменение профиля SAP экземпляра ASCS/SCS
Если у вас имеется сервер постановки в очередь для репликации 1, нужно добавить параметр профиля SAP enque/encni/set_so_keepalive
, как описано ниже. Этот параметр профиля запрещает закрытие подключений между рабочими процессами SAP и сервером постановки в очередь, если они простаивают слишком долго. Параметр SAP не является обязательным для ERS2.
При использовании ERS1 добавьте этот параметр профиля в профиль экземпляра SAP ASCS/SCS.
enque/encni/set_so_keepalive = true
Убедитесь, что для ERS1 и ERS2 параметры ОС
keepalive
заданы так, как указано в примечании для SAP 1410736.Чтобы применить изменения в параметрах профиля SAP, перезапустите экземпляр SAP ASCS/SCS.
Добавление порта пробы
Чтобы вся конфигурация кластера работала с Azure Load Balancer, нужно использовать функцию проб внутреннего балансировщика нагрузки. Обычно внутренний балансировщик нагрузки Azure распределяет входящую рабочую нагрузку поровну между участвующими виртуальными машинами.
Однако это не будет работать в некоторых конфигурациях кластера, так как активен только один экземпляр. Другой экземпляр пассивен и не может принимать рабочую нагрузку. Функция проверки помогает, когда внутренний балансировщик нагрузки Azure определяет, какой экземпляр является активным, и предназначен только для активного экземпляра.
Внимание
В этом примере конфигурации для ProbePort задано значение 620Nr. Для экземпляра SAP ASCS с номером 00 соответствующим значением будет 62000. Необходимо скорректировать конфигурацию, чтобы обеспечить соответствие номеров экземпляров SAP и идентификатора безопасности SAP.
Чтобы добавить порт пробы, запустите этот модуль PowerShell на одной из виртуальных машин кластера:
Для экземпляра SAP ASC/SCS
Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID SID -ProbePort 62000
При использовании ERS2 с кластеризацией. Нет необходимости настраивать порт пробы для ERS1, так как он не кластеризован.
Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID SID -ProbePort 62001 -IsSAPERSClusteredInstance $True
Для функции Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource
код будет выглядеть следующим образом:
function Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource {
<#
.SYNOPSIS
Set-AzureLoadBalancerHealthProbePortOnSAPClusterIPResource will set a new Azure Load Balancer Health Probe Port on 'SAP $SAPSID IP' cluster resource.
.DESCRIPTION
Set-AzureLoadBalancerHealthProbePortOnSAPClusterIPResource will set a new Azure Load Balancer Health Probe Port on 'SAP $SAPSID IP' cluster resource.
It will also restart SAP Cluster group (default behavior), to activate the changes.
You need to run it on one of the SAP ASCS/SCS Windows cluster nodes.
Expectation is that SAP group is installed with official SWPM installation tool, which will set default expected naming convention for:
- SAP Cluster Group: 'SAP $SAPSID'
- SAP Cluster IP Address Resource: 'SAP $SAPSID IP'
.PARAMETER SAPSID
SAP SID - 3 characters staring with letter.
.PARAMETER ProbePort
Azure Load Balancer Health Check Probe Port.
.PARAMETER RestartSAPClusterGroup
Optional parameter. Default value is '$True', so SAP cluster group will be restarted to activate the changes.
.PARAMETER IsSAPERSClusteredInstance
Optional parameter.Default value is '$False'.
If set to $True , then handle clsutered new SAP ERS2 instance.
.EXAMPLE
# Set probe port to 62000, on SAP cluster resource 'SAP AB1 IP', and restart the SAP cluster group 'SAP AB1', to activate the changes.
Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID AB1 -ProbePort 62000
.EXAMPLE
# Set probe port to 62000, on SAP cluster resource 'SAP AB1 IP'. SAP cluster group 'SAP AB1' IS NOT restarted, therefore changes are NOT active.
# To activate the changes you need to manualy restart 'SAP AB1' cluster group.
Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID AB1 -ProbePort 62000 -RestartSAPClusterGroup $False
.EXAMPLE
# Set probe port to 62001, on SAP cluster resource 'SAP AB1 ERS IP'. SAP cluster group 'SAP AB1 ERS' IS restarted, to activate the changes.
Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID AB1 -ProbePort 62000 -IsSAPERSClusteredInstance $True
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[ValidateLength(3,3)]
[string]$SAPSID,
[Parameter(Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[int] $ProbePort,
[Parameter(Mandatory=$False)]
[bool] $RestartSAPClusterGroup = $True,
[Parameter(Mandatory=$False)]
[bool] $IsSAPERSClusteredInstance = $False
)
BEGIN{}
PROCESS{
try{
if($IsSAPERSClusteredInstance){
#Handle clustered SAP ERS Instance
$SAPClusterRoleName = "SAP $SAPSID ERS"
$SAPIPresourceName = "SAP $SAPSID ERS IP"
}else{
#Handle clustered SAP ASCS/SCS Instance
$SAPClusterRoleName = "SAP $SAPSID"
$SAPIPresourceName = "SAP $SAPSID IP"
}
$SAPIPResourceClusterParameters = Get-ClusterResource $SAPIPresourceName | Get-ClusterParameter
$IPAddress = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "Address" }).Value
$NetworkName = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "Network" }).Value
$SubnetMask = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "SubnetMask" }).Value
$OverrideAddressMatch = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "OverrideAddressMatch" }).Value
$EnableDhcp = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "EnableDhcp" }).Value
$OldProbePort = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "ProbePort" }).Value
$var = Get-ClusterResource | Where-Object { $_.name -eq $SAPIPresourceName }
Write-Output "Current configuration parameters for SAP IP cluster resource '$SAPIPresourceName' are:"
Get-ClusterResource -Name $SAPIPresourceName | Get-ClusterParameter
Write-Output " "
Write-Output "Current probe port property of the SAP cluster resource '$SAPIPresourceName' is '$OldProbePort'."
Write-Output " "
Write-Output "Setting the new probe port property of the SAP cluster resource '$SAPIPresourceName' to '$ProbePort' ..."
Write-Output " "
$var | Set-ClusterParameter -Multiple @{"Address"=$IPAddress;"ProbePort"=$ProbePort;"Subnetmask"=$SubnetMask;"Network"=$NetworkName;"OverrideAddressMatch"=$OverrideAddressMatch;"EnableDhcp"=$EnableDhcp}
Write-Output " "
if($RestartSAPClusterGroup){
Write-Output ""
Write-Output "Activating changes..."
Write-Output " "
Write-Output "Taking SAP cluster IP resource '$SAPIPresourceName' offline ..."
Stop-ClusterResource -Name $SAPIPresourceName
sleep 5
Write-Output "Starting SAP cluster role '$SAPClusterRoleName' ..."
Start-ClusterGroup -Name $SAPClusterRoleName
Write-Output "New ProbePort parameter is active."
Write-Output " "
Write-Output "New configuration parameters for SAP IP cluster resource '$SAPIPresourceName':"
Write-Output " "
Get-ClusterResource -Name $SAPIPresourceName | Get-ClusterParameter
}else
{
Write-Output "SAP cluster role '$SAPClusterRoleName' is not restarted, therefore changes are not activated."
}
}
catch{
Write-Error $_.Exception.Message
}
}
END {}
}
Открытие порта пробы брандмауэра Windows
Откройте порт пробы в брандмауэре Windows на обоих узлах кластера. Чтобы открыть порт пробы брандмауэра Windows, используйте следующий скрипт. Обновите переменные PowerShell для своей среды.
При использовании ERS2 в брандмауэре необходимо также открыть порт, соответствующий порту проверки ERS2.
$ProbePort = 62000 # ProbePort of the Azure internal load balancer
New-NetFirewallRule -Name AzureProbePort -DisplayName "Rule for Azure Probe Port" -Direction Inbound -Action Allow -Protocol TCP -LocalPort $ProbePort
Установка экземпляра базы данных
Чтобы установить экземпляр базы данных, следуйте инструкциям в документации по установке SAP.
Установка второго узла кластера
Чтобы установить второй кластер, выполните действия, которые описаны в руководстве по установке SAP.
Установка сервера основного приложения SAP
Установите экземпляр основного сервера приложений (PAS) <SID>-di-0 на виртуальную машину, предназначенную для размещения PAS. В Azure нет зависимостей. При использовании SIOS для DataKeeper не требуется специальных настроек.
Установка дополнительного сервера приложений SAP
Установите дополнительный сервер приложений SAP (AAS) на все виртуальные машины, предназначенные для размещения экземпляра сервера приложений SAP.
Проверка отработки отказа для экземпляра SAP ASCS/SCS
В тестах по отработке отказа предполагается, что SAP ASCS активен на узле A.
Убедитесь, что система SAP может успешно отрабатывать отказ с узла A на узел B. Выберите один из указанных вариантов, чтобы инициировать отработку отказа кластерной группы SAP <SID> с узла A на узел B кластера:
- Диспетчер отказоустойчивости кластеров
- с помощью команд PowerShell для отказоустойчивого кластера.
$SAPSID = "PR1" # SAP <SID> $SAPClusterGroup = "SAP $SAPSID" Move-ClusterGroup -Name $SAPClusterGroup
Перезапустите узел A кластера из гостевой ОС Windows. Это инициирует автоматический переход кластерной группы SAP <SID> на другой ресурс с узла A на узел B кластера.
Перезапустите узел A кластера с помощью портала Azure. Это инициирует автоматический переход кластерной группы SAP <SID> на другой ресурс с узла A на узел B кластера.
Перезапустите узел A кластера с помощью Azure PowerShell. Это инициирует автоматический переход кластерной группы SAP <SID> на другой ресурс с узла A на узел B кластера.
Проверка
После отработки отказа убедитесь, что группа кластеров SAP <SID> работает на узле кластера B.
Диспетчер отказоустойчивости кластеров: кластерная группа SAP <SID> работает в узле B кластера
После отработки отказа убедитесь, что общий диск теперь подключен к узлу B кластера.
После отработки отказа и при использовании SIOS, убедитесь что SIOS DataKeeper реплицирует данные из исходного тома накопителя S, находящегося на узле B кластера, в целевой том накопителя S, который находится на узле A кластера.
SIOS DataKeeper выполняет репликацию локального тома с узла B на узел A кластера