Save 37% off PRO during our Black Friday Sale! »

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

F507086e15832a4344df6b10cdc5b179?s=47 localYouser
February 13, 2021

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

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

F507086e15832a4344df6b10cdc5b179?s=128

localYouser

February 13, 2021
Tweet

Transcript

  1. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ -ファイル共有サーバにおける高可用性構成- 2021年2月13日 BLUECORE.NET管理人 ろーかるゆーざー

  2. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ 概要・やりたいことなど

  3. 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円)
  4. 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リソースに登録をする
  5. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ DFS-Nでアクセス分散 • 以下の通りサイト割り当てを実施 • Prodサイト(自宅) ->Azure側を参照

    • DRサイト(実家) ->DRサイト上のファイルサーバを参照 • DRサイト側の回線が100Mbps、Prodサイト側の回線が1Gbpsである ため。 • ただし、Outboundに対するBandwidth課金が存在することを考慮 し、全部いったんはDRサイト側にターゲットを振り向ける可能性はあ る
  6. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ ざっくり手順を紹介

  7. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ Azure Filesに対する設定

  8. 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アクセス権を設定する
  9. 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
  10. 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
  11. 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 'words@BLUECORE.NET' 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
  12. 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>"
  13. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ RBACによる「共有アクセス権」の設定

  14. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ RBACで指定するロール

  15. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ NTFSアクセス権(ACL)の設定 • ACLは共有フォルダへ乗り入れて設定する必要がある • 初期値は以下の通りであり、これにドメインアカウントを追加することが望ましいと 考えられる。(必要に応じて)

  16. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ Azure File Syncに対する設定

  17. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ Azure File Syncについて • マーケットプレイスからは「Azureファイル同期」で検索すると登場する •

    Syncと言う文字列で探してもなかなか見つからないので注意 • 因みにリソースの種類としては「ストレージ同期サービス」(何とも厄介)
  18. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ ファイルサーバに仕込むエージェント https://www.microsoft.com/en-us/download/details.aspx?id=57159 •

  19. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ Azure File Syncリソース側から参照 • • •

  20. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ 同期状況を示すMetric • 同期状況はある程度Metricでモニタリング出来る • ここにあるグラフはダッシュボードへ転載可能である

  21. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ レプリケーション処理の状況 • レプリケーションで動作しているプロセスを確認 • AzureStorageSyncMonitor •

    EngSys-MDA-CloudAgent • 両者ともにそれほど大きな負荷はかけていない。 • アップロード帯域幅確認 • 恒常的に100Mbps弱を推移してい て、かなり効率的に安定したデー タ転送をしている模様 • 受信はNASからファイルサーバへの データリストアのため無視して結構
  22. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ 以降の設定等

  23. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ DFS-Nの設定 • DFS-NのフォルダターゲットにAzure Filesを含めることが可能になっている • サイトによるファイルサーバ切り替えがAzure

    Files間を含めて可能になったと 言うこと
  24. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ File Syncで設定する機能そのほか

  25. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ ストレージの階層化 と言う機能について 詳しくは https://docs.microsoft.com/ja-jp/azure/storage/files/storage-sync-cloud-tiering • 既存ファイルサーバをクラウドストレージにする機能

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

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

  28. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ Sync Agentはどこへアクセスしているのか? • 接続テスト時にエージェントが接続先としているのは以下の3つ • Discovery

    Service • Management Service • Monitoring Service • いずれも443/tcpに対するHTTPS接続
  29. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ Sync Agentがアクセスする先について確認する kailanicorejpwsvc.cloudapp.net と言うFQDNがSyncサービスの到達先らしい ※JP WESTの場合は

  30. 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 :
  31. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ 実際にはこういう構成になってた • どうやら同期制御と実際のデータ同期通信で異なるセッションを使ってる模様 • 制御セッションは443/tcp、同期自体は443/tcpと445/tcp両方を使ってるよう に見受けられる。

    • 私の環境の場合、対外回線がフレッツ光ハイスピードでもVPN SKUが100Mbpsな ので100Mbpsが上限となる。
  32. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ その他確認事項など

  33. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ エージェントログの構成 • • • • •

    • • • • • • • • エージェントログの出力はイベントログへ行われる
  34. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ Metricについての確認

  35. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ おまけ(我が家の構成とか、もう少し詳細に書いた図とか)

  36. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ Azure構成全景

  37. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ 自宅生活系ファイルサーバ詳細構成について