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

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

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for YuYu YuYu
February 13, 2021

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

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

Avatar for YuYu

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 :