素敵なおひげですね

PowerShellを中心に気分で書いているブログです。

All Windows Serverな環境でOracle Real Application Clusters(RAC)を構築してみる - 2.Storage構築編


本シリーズの概要と一覧はこちらからどうぞ。


前回に続いてストレージ(iSCSI)を構築します。

本エントリではWindows ServerをiSCSIターゲットにします。
また、RAC Node側の手順ですが、iSCSIイニシエーターの設定も本エントリで触れることにします。

初期設定とドメインへの参加

最初にホスト名を設定します。前回同様Pingも通る様にしておきます。

#
# Configure Windows Firewall
# 
Set-NetFirewallRule –Name "FPS-ICMP4-ERQ-In"  –Enabled True
Set-NetFirewallRule –Name "FPS-ICMP6-ERQ-In"  –Enabled True
Set-NetFirewallRule –Name "FPS-ICMP4-ERQ-Out" –Enabled True
Set-NetFirewallRule –Name "FPS-ICMP6-ERQ-Out" –Enabled True

#
# Rename Computer
#
ReName-Computer "storageserver" -Restart

再起動後、PublicネットワークのDNS設定を変更してドメインに参加します。

#
# Configure DNS
#
Get-NetIPAddress | Where-Object { $_.IPAddress -like "192.168.33.*" } | Set-DnsClientServerAddress -ServerAddresses @("192.168.33.11")

#
# Join Domain
#
$DomainName = "contoso.local"
$Cred = New-Object PSCredential("administrator" , (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force))
Add-Computer -DomainName $DomainName -Credential $Cred -Restart

iSCSIターゲットの設定

ドメインに参加後、iSCSIターゲットの構成を行います。
GUIでの構築手順は

www.server-world.info

に詳しく記載されていますが、今回は構築を楽するためにすべてPowerShellで行います。
やってることは上のリンク先の手順とほぼ同じになります。

先ずは管理者ユーザーでPowerShellから以下のコマンドを実行し、Windowsの機能を追加+iSCSIターゲットを生成します。

以下のコマンドではターゲット名をiSCSI-RACとし、イニシエーター192.168.34.31-32から接続可能にしています。
認証方式はCHAPとし、シークレットをiscsi-passwordに設定しています。

#
# Install Features
#
Install-WindowsFeature FS-FileServer, FS-iSCSITarget-Server, iSCSITarget-VSS-VDS

#
# Configure iSCSI Target Server
# 
Import-Module IscsiTarget
# イニシエーター192.168.34.31-32から接続可能なターゲットを生成
$Target = New-IscsiServerTarget -TargetName "iSCSI-RAC" -InitiatorId @("IPAddress:192.168.34.31", "IPAddress:192.168.34.32")
# ターゲットの設定変更
$Param = @{
    InputObject = $Target;
    Description = "iSCSI Target for Oracle RAC";
    Enable      = $true;
    # CHAP認証可能に
    EnableChap  = $true;
    # CHAPシークレット(=パスワード)の長さは12-16文字
    Chap        = New-Object PSCredential("iscsi" , (ConvertTo-SecureString "iscsi-password" -AsPlainText -Force))
    # リバースCHAPは今回構成しない
    #EnableReverseChap = $true;
    #ReverseChap = New-Object PSCredential("iscsi" , (ConvertTo-SecureString "iscsi-password" -AsPlainText -Force));
}
Set-IscsiServerTarget @Param

続けてRACで使うVHDを作成しターゲットにマッピングさせます。
今回はOCR用のOCR.vhdx (10GB)とデータベース用のDATA.vhdx (30GB)の2つのVHDを作成することにします。

#
# Create VHD and Mapping to iSCSI Target 
#
# OCR用
$VHDPath = "D:\iSCSIVirtualDisks\OCR.vhdx"
New-IscsiVirtualDisk –Path $VHDPath -Size 10GB -Description "VHD for OCR"
Add-IscsiVirtualDiskTargetMapping -TargetName $Target.TargetName –Path $VHDPath
# データベース用
$VHDPath = "D:\iSCSIVirtualDisks\DATA.vhdx"
New-IscsiVirtualDisk –Path $VHDPath -Size 30GB -Description "VHD for Oracle Database"
Add-IscsiVirtualDiskTargetMapping -TargetName $Target.TargetName –Path $VHDPath

実行後、サーバーマネージャーで確認すると以下の様な感じになります。*1

f:id:stknohg:20150915185656p:plain

一応補足しておくと、Windows ServerのiSCSIターゲットはサーバー機能となるターゲットと複数の仮想ディスク(VHDX形式)をマッピングしてLUNを割り当てる事で外部にストレージを見せる形になります。

iSCSI Target <==> LUN Mapping <==> VHD(.vhdx)

このため、New-IscsiServerTargetおよびSet-IscsiServerTargetでターゲットの構成を行い、New-IscsiVirtualDiskで仮想ディスクを作成、最後にAdd-IscsiVirtualDiskTargetMappingマッピングを行っています。

iSCSIイニシエーターの設定

iSCSIイニシエーターの設定は各RAC Nodeでの作業になります。

iSCSIイニシエーターの機能自体はOS標準でインストールされていますので追加のインストールは不要です。
PowerShellから以下の様にしてターゲットへ接続します。

#
# Start iSCSI Service
#
$Service = Get-Service MSiSCSI
if( $Service.Status -ne "Running" ){
    $Service.Start()
}
$Service | Set-Service -StartupType Automatic

#
# Configure iSCSI Initiator
# 
New-IscsiTargetPortal -TargetPortalAddress "192.168.34.21"
$Target = Get-IscsiTarget
if( $null -ne $Target ){
    $Params = @{
        NodeAddress        = $Target.NodeAddress;
        AuthenticationType = "ONEWAYCHAP";
        ChapUsername       = "iscsi";
        ChapSecret         = "iscsi-password";
        IsPersistent       = $true;
    }
    Connect-IscsiTarget @Params
}

デフォルトではMicrosoft iSCSI Initiator Service(MSiSCSI)は起動していないため起動し、スタートアップの種類を自動に変えます。

そのうえでNew-IscsiTargetPortalでターゲットポータルを作成、ただしくターゲットポータルが作成できればGet-IscsiTargetでターゲットの情報を取得できるので、そのNodeAddress(=IQN)を使いConnect-IscsiTargetでターゲットに接続します。

ここで少しハマったのですが、Connect-IscsiTargetAuthenticationTypeの指定はすべて"大文字"で行う必要があります。
小文字を混ぜると不正な認証方式と扱われエラーとなってしまいますので注意してください。

stknohg.hatenablog.jp

正しくターゲットに接続できると以下の図の様にディスクの管理から前の手順で作成した2つのディスク(ディスク1とディスク2)が見える様になります。

f:id:stknohg:20150915191813p:plain

ディスクのフォーマットは後で行います。
次はRACインストールのための前準備を行います。

*1:スクリーンショットを取ったのがイニシエーター設定後のため接続状態になっています。ターゲット構築直後は未接続です。