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

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

localYouser
February 13, 2021

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

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

localYouser

February 13, 2021
Tweet

More Decks by localYouser

Other Decks in Technology

Transcript

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

    View full-size slide

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

    View full-size slide

  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円)

    View full-size slide

  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リソースに登録をする

    View full-size slide

  5. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    DFS-Nでアクセス分散
    • 以下の通りサイト割り当てを実施
    • Prodサイト(自宅) ->Azure側を参照
    • DRサイト(実家) ->DRサイト上のファイルサーバを参照
    • DRサイト側の回線が100Mbps、Prodサイト側の回線が1Gbpsである
    ため。
    • ただし、Outboundに対するBandwidth課金が存在することを考慮
    し、全部いったんはDRサイト側にターゲットを振り向ける可能性はあ

    View full-size slide

  6. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    ざっくり手順を紹介

    View full-size slide

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

    View full-size slide

  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アクセス権を設定する

    View full-size slide

  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

    View full-size slide

  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 = ""
    $ResourceGroupName = ""
    $StorageAccountName = ""
    #Select the target subscription for the current session
    Select-AzSubscription -SubscriptionId $SubscriptionId
    Join-AzStorageAccountForAuth `
    -ResourceGroupName $ResourceGroupName `
    -StorageAccountName $StorageAccountName `
    -DomainAccountType "" `
    -OrganizationalUnitDistinguishedName "" `
    -EncryptionType ""
    Update-AzStorageAccountAuthForAES256 -ResourceGroupName $ResourceGroupName -StorageAccountName $StorageAccountName
    Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose

    View full-size slide

  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 '[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

    View full-size slide

  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 "" `
    -StorageAccountName ""

    View full-size slide

  13. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    RBACによる「共有アクセス権」の設定

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  17. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    Azure File Syncについて
    • マーケットプレイスからは「Azureファイル同期」で検索すると登場する
    • Syncと言う文字列で探してもなかなか見つからないので注意
    • 因みにリソースの種類としては「ストレージ同期サービス」(何とも厄介)

    View full-size slide

  18. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    ファイルサーバに仕込むエージェント
    https://www.microsoft.com/en-us/download/details.aspx?id=57159

    View full-size slide

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



    View full-size slide

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

    View full-size slide

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

    View full-size slide

  22. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    以降の設定等

    View full-size slide

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

    View full-size slide

  24. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    File Syncで設定する機能そのほか

    View full-size slide

  25. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    ストレージの階層化 と言う機能について
    詳しくは https://docs.microsoft.com/ja-jp/azure/storage/files/storage-sync-cloud-tiering
    • 既存ファイルサーバをクラウドストレージにする機能
    • 使用頻度の低いファイルをAzure Filesへ転送するというもの
    • 使用頻度の高いファイルはローカルストレージにキャッシングさ
    れる。
    • 常時最低1Mbpsの保証が必要である
    • タイムアウトする可能性があるため
    • 昔存在していたSimpleStorの代わりになるものではな
    いかなと思う。

    View full-size slide

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

    View full-size slide

  27. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    File Syncの通信特性を確認

    View full-size slide

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

    View full-size slide

  29. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    Sync Agentがアクセスする先について確認する
    kailanicorejpwsvc.cloudapp.net
    と言うFQDNがSyncサービスの到達先らしい
    ※JP WESTの場合は

    View full-size slide

  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 :

    View full-size slide

  31. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    実際にはこういう構成になってた
    • どうやら同期制御と実際のデータ同期通信で異なるセッションを使ってる模様
    • 制御セッションは443/tcp、同期自体は443/tcpと445/tcp両方を使ってるよう
    に見受けられる。
    • 私の環境の場合、対外回線がフレッツ光ハイスピードでもVPN SKUが100Mbpsな
    ので100Mbpsが上限となる。

    View full-size slide

  32. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    その他確認事項など

    View full-size slide

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












    • エージェントログの出力はイベントログへ行われる

    View full-size slide

  34. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    Metricについての確認

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide