Azure Stack Hub を使用して iSCSI ストレージに接続する
この記事のテンプレートを使用すると、Azure Stack Hub 仮想マシン (VM) をオンプレミスの iSCSI ターゲットに接続し、Azure Stack Hub の外部やデータセンターの他の場所でホストされるストレージを使用するように VM を設定できます。 この記事では、Windows マシンを iSCSI ターゲットとして使用する方法について説明します。
このテンプレートは、Azure Intelligent Edge Patterns GitHub リポジトリの lucidqdreams フォークにあります。 このテンプレートは storage-iSCSI フォルダーにあります。 このテンプレートは、Azure Stack Hub 側で iSCSI ターゲットに接続するために必要なインフラストラクチャを設定するように設計されています。 これには、iSCSI イニシエーターとして機能する仮想マシンと、それに付随する VNet、NSG、PIP、およびストレージが含まれます。 テンプレートをデプロイした後は、2 つの PowerShell スクリプトを実行し、構成を完了する必要があります。 1 つのスクリプトはオンプレミスの VM (ターゲット) 上で実行され、1 つは Azure Stack Hub VM (イニシエーター) 上で実行されます。 これらの処理が完了すると、オンプレミスのストレージが Azure Stack Hub VM に追加されます。
概要
この図は、オンプレミスの Windows マシン (物理または仮想) から iSCSI マウント ディスクを使用して Azure Stack Hub でホストされている VM を示しています。これにより、Azure Stack Hub の外部ストレージを iSCSI プロトコルで Azure Stack Hub ホスト VM 内にマウントすることができます。
必要条件
- Windows Server 2016 Datacenter または Windows Server 2019 Datacenter を実行するオンプレミスのマシン (物理または仮想)。
- 次の Azure Stack Hub Marketplace 必須項目。
- Windows Server 2016 Datacenter または Windows Server 2019 Datacenter (最新のビルドを推奨)。
- PowerShell DSC 拡張機能。
- カスタム スクリプト拡張機能。
- 既存の仮想マシンまたは物理マシン。 このマシンには、2 つのネットワーク アダプターが搭載されることが理想的です。 これは、たとえば SAN などの別の iSCSI ターゲットの可能性もあります。
考慮事項
- ネットワーク セキュリティ グループは、テンプレートのサブネットに適用されます。 これを確認し、必要に応じて追加の許容量を設定します。
- RDP 拒否規則はトンネル NSG に適用され、パブリック IP アドレスを使用して VM にアクセスする場合は許可に設定する必要があります。
- このソリューションでは、DNS 解決を考慮していません。
- Chapusername と Chappassword を変更する必要があります。 Chappassword の長さは 12 から 16 文字にする必要があります。
- iSCSI 接続では構成でローカル アドレスが使用されるため、このテンプレートでは VM に静的 IP アドレスを使用しています。
- このテンプレートには BYOL Windows ライセンスが使用されています。
- また、Linux ベースのシステムを iSCSI ターゲットに接続することもできます。 手順については、ubuntu のドキュメントの「iSCSI Initiator (iSCSI イニシエーター)」を参照してください。
Options
- _artifactsLocation および _artifactsLocationSasToken パラメーターを使用してご自分の Blob ストレージ アカウントと SAS トークンを使用し、SAS トークンでご自分のストレージ BLOB を使用することができます。
- このテンプレートには、VNet の名前付けと IP アドレス指定の既定値が指定されています。
- この構成では、iSCSI クライアントから取得される iSCSI NIC は 1 つだけです。 個別のサブネットと NIC を使用する複数の構成をテストしましたが、複数のゲートウェイで問題が発生したため、トラフィックを分離して本当の意味で冗長性を確保するために個別のストレージ サブネットを作成しようとしました。
- デプロイが失敗する可能性があるので、これらの値が有効なサブネットおよびアドレスの範囲内に収まるように注意します。
- PowerShell DSC パッケージの主な目的は、再起動が保留されているかどうかを確認することです。 この DSC は、必要に応じてさらにカスタマイズできます。 詳細については、「omputerManagementDsc」を参照してください。
リソース グループ テンプレート (iSCSI クライアント)
この図は、iSCSI ターゲットへの接続に使用できる iSCSI クライアントを作成するために、テンプレートからデプロイされるリソースを示しています。 このテンプレートでは、VM とその他のリソースがデプロイされ、さらに prepare-iSCSIClient.ps1 が実行され、VM が再起動されます。
デプロイ プロセス
リソース グループ テンプレートによって出力が生成されます。出力は次の手順の入力となります。 主な焦点は、iSCSI トラフィックの発信元のサーバー名と Azure Stack Hub パブリック IP アドレスです。 この例の場合は次のとおりです。
- インフラストラクチャ テンプレートをデプロイします。
- データセンター内の他の場所でホストされている VM に Azure Stack Hub VM をデプロイします。
- テンプレートからの IP アドレスとサーバー名の出力を、iSCSI ターゲット (仮想マシンまたは物理サーバー) のスクリプトの入出力パラメーターとして使用して、
Create-iSCSITarget.ps1
を実行します。 -
Connect-toiSCSITarget.ps1
スクリプトを実行するための入力として、iSCSI ターゲット サーバーの外部 IP アドレスを使用します。
azuredeploy.json の入力
パラメーター | 既定値 | description |
---|---|---|
WindowsImageSKU | 2019-Datacenter | ベース Windows VM イメージを選択してください |
VMSize | Standard_D2_v2 | VM サイズを入力してください |
VMName | FileServer | VM 名 |
adminUsername | storageadmin | 新しい VM の管理者の名前 |
adminPassword | 新しい VM の管理者アカウントのパスワード。 既定値はサブスクリプション ID です | |
VNetName | ストレージ | VNet の名前。 これはリソースのラベル付けに使用されます |
VNetAddressSpace | 10.10.0.0/23 | VNet のアドレス空間 |
VNetInternalSubnetName | 内部 | VNet の内部サブネット名 |
VNetInternalSubnetRange | 10.10.1.0/24 | VNet の内部サブネットのアドレス範囲 |
InternalVNetIP | 10.10.1.4 | ファイル サーバーの内部 IP の静的アドレス。 |
_artifactsLocation | ||
_artifactsLocationSasToken |
デプロイメントの手順
-
azuredeploy.json
を使用して iSCSI クライアント インフラストラクチャをデプロイします - オンプレミス サーバーの iSCSI ターゲット上で
Create-iSCSITarget.ps1
を実行します。 テンプレートが完成したら、最初の手順の出力を使用して、オンプレミス サーバーの iSCSI ターゲット上で Create-iSCSITarget.ps1 を実行する必要があります。 - iSCSI クライアント上で
Connect-toiSCSITarget.ps1
を実行します。 iSCSI クライアント上で、iSCSI ターゲットの詳細を含む Connect-toiSCSITarget.ps1 を実行します
既存の VM への iSCSI ストレージの追加
既存の仮想マシン上でスクリプトを実行し、iSCSI クライアントから iSCSI ターゲットに接続することもできます。 このフローは、iSCSI ターゲットを自分で作成する場合に使用します。 次の図は、PowerShell スクリプトの実行フローを示しています。 これらのスクリプトは、Script ディレクトリにあります。
Prepare-iSCSIClient.ps1
Prepare-iSCSIClient.ps1
スクリプトによって、iSCSI クライアントに前提条件がインストールされます。これには次のものが含まれます。
- マルチパス IO サービスのインストール
- iSCSI イニシエーター サービスを自動的に開始するように設定する
- マルチパス MPIO の iSCSI へのサポートを有効にする
- すべての iSCSI ボリュームの自動要求を有効にする
- ディスクのタイムアウトを 60 秒に設定する
これらの前提条件のインストール後にシステムを再起動することが重要です。 MPIO 負荷分散ポリシーを設定するには、再起動が必要です。
Create-iSCSITarget.ps1
Create-iSCSITarget.ps1
スクリプトは、ストレージ サーバーで実行されます。 イニシエーターによって制限される複数のディスクとターゲットを作成できます。 このスクリプトを複数回実行して多数の仮想ディスクを作成し、さまざまなターゲットにアタッチすることができます。 複数のディスクを 1 つのターゲットに接続できます。
入力 | 既定値 | description |
---|---|---|
RemoteServer | FileServer | iSCSI ターゲットに接続しているサーバーの名前 |
RemoteServerIPs | 1.1.1.1 | iSCSI トラフィックの発信元の IP アドレス |
DiskFolder | C:\iSCSIVirtualDisks | 仮想ディスクが格納されるフォルダーとドライブ |
DiskName | DiskName | ディスク VHDX ファイルの名前 |
DiskSize | 5GB | VHDX ディスク サイズ |
TargetName | RemoteTarget01 | iSCSI クライアントのターゲット構成を定義するために使用されるターゲット名。 |
ChapUsername | username | Chap 認証のユーザー名 |
ChapPassword | userP@ssw0rd! | Chap 認証のパスワード名。 12 から 16 文字にする必要があります |
Connect-toiSCSITarget.ps1
Connect-toiSCSITarget.ps1
は最終的なスクリプトです。iSCSI クライアント上で実行され、iSCSI ターゲットによって提示されたディスクが iSCSI クライアントにマウントされます。
入力 | 既定値 | description |
---|---|---|
TargetiSCSIAddresses | "2.2.2.2"、"2.2.2.3" | iSCSI ターゲットの IP アドレス |
LocalIPAddresses | "10.10.1.4" | これは iSCSI トラフィックが発信される内部 IP アドレスです。 |
LoadBalancePolicy | C:\iSCSIVirtualDisks | iSCSI トラフィックの発信元の IP アドレス |
ChapUsername | username | Chap 認証のユーザー名 |
ChapPassword | userP@ssw0rd! | Chap 認証のパスワード名。 12 から 16 文字にする必要があります |