Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure Filesとオンプレミスファイルサーバを連携させる

YuYu
February 13, 2021

Azure Filesとオンプレミスファイルサーバを連携させる

以下の内容を実施してます。
・Azure FilesをADDS連携可能にする
・Azure File Syncを実装する
・Azure FilesとファイルサーバをDFS-Nでまとめる
細かい手順は載せていませんが、概念的に分かればなぁと備忘録的にまとめています。

YuYu

February 13, 2021
Tweet

More Decks by YuYu

Other Decks in Technology

Transcript

  1. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ 我が家のファイルサーバを少し強固にしたい • オンプレファイルサーバとAzure Storageとの連携を模索 • これまでUnityVSAやIsilon

    SD Edgeを使った仮想アプライアンスでDRを模索 • しかしながら、VSA自体の脆弱性(仮想基盤の物理的脆弱性)によって度々データ消失が発生(私の 管理が行き届いてないと言うこと) • クラウドと連携して何か出来ないものか・・・ • 以前(2018年頃) • ファイルサーバとAzure Files間でのデータ同期を実施 • 以下理由で使い物にならなかった • パフォーマンスがガタガタ(特に多数のIOが発生する環境が苦手な様子。Robocopyだと破滅的に遅い) • Active Directoryとの連携不可(ACLのコピーが出来ない) • クラウドストレージとしてのSimple Storageも模索したが、金額が高く、オンプレ側に要求するリソースが少々でかい • 今 • Azure File Syncの存在(わりかし安そう) • Azure File Storage、Active Directoryとの連携が可能に • トランザクション最適化Tierの存在(Hotより上位/1GBあたり6円)
  2. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ そこで挑んでる構成がこちら • Azure Storage • いわゆる「ストレージアカウント」

    • Azure Filesを使用、Tierはトランザクション最適 化 • 今回はアクセス経路にインターネットを使用 • Firewallを使ってガチガチに縛る • Active Directoryと連携する • 共有アクセス権はRBACで設定 • NTFSアクセス権は共有フォルダから直接操作 • Azure File Sync • オンプレミスファイルサーバとAzure Filesを繋ぐ連 携ソリューション • 月額「7.75ドル/台」というステキな安値 • 「ストレージ同期」というリソースを作成 • オンプレミス側には、エージェントソフトウェアを導入 し、File Syncリソースに登録をする
  3. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ DFS-Nでアクセス分散 • 以下の通りサイト割り当てを実施 • Prodサイト(自宅) ->Azure側を参照

    • DRサイト(実家) ->DRサイト上のファイルサーバを参照 • DRサイト側の回線が100Mbps、Prodサイト側の回線が1Gbpsである ため。 • ただし、Outboundに対するBandwidth課金が存在することを考慮 し、全部いったんはDRサイト側にターゲットを振り向ける可能性はあ る
  4. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ Azure FilesをADDSに適合させる • 結構めんどい。以下サイトの手順に従う必要がある。 • https://docs.microsoft.com/ja-jp/azure/storage/files/storage-files-

    identity-ad-ds-enable • ざっくり書くと以下のような手順である ① ストレージ アカウントでの AD DS 認証を有効にする -> https://github.com/Azure-Samples/azure-files-samples/releases からパッケージをダウンロード。これを利用するスクリプトを別途構成してPowerShellを実行 ② ターゲットの AD ID と同期している、Azure AD ID (ユーザー、グループ、またはサービス プリ ンシパル) に、共有のアクセス許可を割り当てる -> RBACを使用して「ファイル共有アクセス権」を設定する ③ SMB を使用してディレクトリとファイルに Windows ACL を構成する -> 共有アクセスルートへExplorerで移動し、NTFSアクセス権を設定する
  5. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ PowerShellの実行 • ダウンロードしたパッケージの中身は以下の通り • ただ、これを単独実行するわけでなく、別途スクリプトを作成して実行する •

    作成するスクリプトはこのパスと同じ場所に作ることが望ましい Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2021/02/11 9:47 19504 AzFilesHybrid.psd1 -a---- 2021/02/11 9:47 276507 AzFilesHybrid.psm1 -a---- 2021/02/11 9:47 13521 CopyToPSPath.ps1
  6. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ ドメイン参加スクリプト(MSサイトからの転載) #Change the execution policy to

    unblock importing AzFilesHybrid.psm1 module Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser # Navigate to where AzFilesHybrid is unzipped and stored and run to copy the files into your path .¥CopyToPSPath.ps1 #Import AzFilesHybrid module Import-Module -Name AzFilesHybrid #Login with an Azure AD credential that has either storage account owner or contributer Azure role assignment Connect-AzAccount #Define parameters $SubscriptionId = "<your-subscription-id-here>" $ResourceGroupName = "<resource-group-name-here>" $StorageAccountName = "<storage-account-name-here>" #Select the target subscription for the current session Select-AzSubscription -SubscriptionId $SubscriptionId Join-AzStorageAccountForAuth ` -ResourceGroupName $ResourceGroupName ` -StorageAccountName $StorageAccountName ` -DomainAccountType "<ComputerAccount|ServiceLogonAccount>" ` -OrganizationalUnitDistinguishedName "<ou-distinguishedname-here>" ` -EncryptionType "<AES256/RC4/AES256,RC4>" Update-AzStorageAccountAuthForAES256 -ResourceGroupName $ResourceGroupName -StorageAccountName $StorageAccountName Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose
  7. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ スクリプトの要変更パラメータ $SubscriptionId $ResourceGroupName $StorageAccountName DomainAccountType OrganizationalUnitDistinguishedName

    EncryptionType Name Result ---- ------ CheckDomainJoined Passed CheckGetKerberosTicket Passed CheckUserRbacAssignment Failed CheckAadUserHasSid Skipped CheckADObjectPasswordIsCorrect Passed CheckADObject Passed CheckUserFileAccess Skipped CheckPort445Connectivity Passed CheckStorageAccountDomainJoined Passed CheckSidHasAadUser Passed Issues found: ---- CheckUserRbacAssignment ---- User '[email protected]' is not assigned any SMB share-level permission to storage account 'bccommonstor' in resource group 'BLUECORE-STORAGE'. Please configure proper share-level permission following the guidance at https://docs.microsoft.com/en-us/azure/storage/files/storage-files-identity-ad-ds-assign-permissions
  8. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ コンピュータアカウントの確認 # Update the password of

    the AD DS account registered for the storage account # You may use either kerb1 or kerb2 Update-AzStorageAccountADObjectPassword ` -RotateToKerbKey kerb2 ` -ResourceGroupName "<your-resource-group-name-here>" ` -StorageAccountName "<your-storage-account-name-here>"
  9. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ Azure File Syncについて • マーケットプレイスからは「Azureファイル同期」で検索すると登場する •

    Syncと言う文字列で探してもなかなか見つからないので注意 • 因みにリソースの種類としては「ストレージ同期サービス」(何とも厄介)
  10. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ レプリケーション処理の状況 • レプリケーションで動作しているプロセスを確認 • AzureStorageSyncMonitor •

    EngSys-MDA-CloudAgent • 両者ともにそれほど大きな負荷はかけていない。 • アップロード帯域幅確認 • 恒常的に100Mbps弱を推移してい て、かなり効率的に安定したデー タ転送をしている模様 • 受信はNASからファイルサーバへの データリストアのため無視して結構
  11. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ ストレージの階層化 と言う機能について 詳しくは https://docs.microsoft.com/ja-jp/azure/storage/files/storage-sync-cloud-tiering • 既存ファイルサーバをクラウドストレージにする機能

    • 使用頻度の低いファイルをAzure Filesへ転送するというもの • 使用頻度の高いファイルはローカルストレージにキャッシングさ れる。 • 常時最低1Mbpsの保証が必要である • タイムアウトする可能性があるため • 昔存在していたSimpleStorの代わりになるものではな いかなと思う。
  12. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ オフラインのデータ転送 について • Azure Databoxと連携して、オフラインでのファイルサーバ初期同期データを転送する というもの

    • ネットワーク負荷軽減につながる • ただ、事前にネットワーク越し等でデータ同期をした場合に使う機能・・と言うわけではどうや らなさそう(単純にDataboxと連携するときに使う機能のようだ) • 一応、事前にRobocopyやファイルコピーを行ってフォルダ内容を合わせた場合は、普 通に同期を開始してもそれを考慮して貰える • DFS-Rで発生するような「同期開始したら同期先データが消えた」と言うことは起きない。 • お互いのファイル情報を初回同期の際に、参照・比較を行っているように見える。
  13. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ 同期中のソケット接続状態を確認してみた。 • エージェントサーバ側でnetstat -anを実行し、TCPソケットの接続状況 を確認 •

    Established状態にある、それとおぼしきものを抽出 172.30.101.4 :Azure IaaS上に構成しているStorageに対するPrivateLinkインタフェース 192.168.239.200 :オンプレミス環境のファイルサーバ(兼ドメインコントローラ) 23.100.106.151 :