仮想化でプリセールスしてるSEの一日

VMware から Azure まで、インフラや仮想化の最新情報をベンダー色をできるだけ抑えて綴っていきます

はてなブログに移転しました。

お久しぶりです。約2年ぶりに投稿します。

2年たつと色々なことが変わりますね。

まず、これまでお世話になっていた はてなダイアリー の終了に伴い、本ブログははてなブログへ移行することになりました。

移行前のカウンタ情報を記録していなかったの痛恨のミスがあったものの、移行自体は想像していたようなトラブルはなく、スムーズに完了しました。移行をギリギリまで引き延ばしたからかもしれません(笑)

 

d.hatena.ne.jp

 

URL も https://ogawad.hatenablog.com/ と大きく変わりましたが、さすが「はてな」同士。記事単位でリダイレクト設定してくれたようです。

 

2年も経てば、MVP カテゴリも変わる?

仕事も若干ジョブチェンジしているのですが、9年継続している Microsoft MVP のカテゴリも大きく変わりました。最初の受賞は Hyper-V。その後、それを統合した Cloud Datacenter and Management だったのですが、昨年より「Azure」カテゴリにジョブチェンジしています。

ちょうど先週 1 月 25 日、「ハイブリッドクラウド研究会」というイベントで少しお時間いただきました。下記は核心をついているわけではないのですが、最近はこんな感じです。

 

Windows Server 2016 で RDMA / RoCE を利用する - (2) RoCE v2 の設定

f:id:ogawad:20190203195637p:plain:right


それでは、Windows Server 2016 の Storage Spaces Direct (S2D) でも「強く推奨」とされている RDMA について設定方法をまとめていきたいと思います。


WS16 で RDMA を利用するにあたっては iWARP と RoCE の2つの方法がありますが、前回のとおり Azure や Azure Stack でも採用されている RoCE v2 をベースに説明していきます。下記の投稿も参考になりますので併せてご活用ください。


また、一部の設定は NIC やスイッチのメーカーに依存します。すべてのメーカーの設定を網羅することはできませんのであらかじめご了承ください。

ToR スイッチの設定

RoCE を使うには、少なくとも ToR スイッチは RoCE v2 に対応していなければなりません。お使いの ToR スイッチのマニュアルを参考に、RoCE v2 の通信を許可してください。下記は Mellanox スイッチの例です。

物理 NIC / CNA の設定

次に、物理 NIC*1 の設定です。
こういったケースでは、POST 画面から NIC BIOS 画面に入り、パラメーター調整していくのですが、私の知る限り RoCE の設定を NIC BIOS でやらせる製品は見たことがありません。
(最終的には購入した製品のマニュアルをご覧になった方が確実ですが)多くは下記のようなドライバパラメーターで設定すると思います。



この図は Broadcom CNA(旧 Emulex OneConnect の方)の設定画面です。
「Roce mode」というパラメーターがあります。

  • 「1」を選択した場合: RoCE v1 で動作
  • 「2」を選択した場合: RoCE v2 で動作

となっていますので、「2」を選択する必要があります。


Hyper-V ホストの設定

続けて、Hyper-V ホスト上で RDMA を有効にしましょう。


基本的には WS12 系と手順は変わりませんが、S2D で利用する場合は「Set-NetOffloadGlobalSetting」コマンドレットを利用して NetworkDirect パラメータを有効にする必要があります。

Set-NetOffloadGlobalSetting -NetworkDirect Enabled

S2D ストレージアクセス専用の物理 NIC を用意できない場合

Azure Stack もそうですが、S2D 専用の物理 NIC を用意できない場合は、以前手順を紹介した Switch Embedded Teaming (SET) モードの仮想スイッチを利用します。
RDMA に対応した SET 仮想スイッチにするために、内部的に用意した S2D セグメントに対して「Enable-NetAdapterRDMA」コマンドレットを実行します。

Enable-NetAdapterRDMA "NICアダプタ名>","NICアダプタ名>"

仮想マシンから直接 RDMA を利用できる??

私はまだ試したことは無いですが、
Hyper-V仮想マシンは RDMA を喋らせることができるみたいです。


確かに、仮想 NIC のドライバパラメータに「NetworkDirect (RDMA)」というのがありますね。


RDMA 通信の確認方法

基本的には必要な作業はこれくらいです。
ちゃんと RDMA で動いていることの確認方法についてはパフォーマンスモニタを見るのが手っ取り早いと言われています。

*1:RoCE に対応した NIC の多くは、CNA (Converged Network Adapter) と呼ばれています

Windows Server 2016 で RDMA / RoCE を利用する - (1) RoCE は v2 へ

f:id:ogawad:20190203195637p:plain:right


Windows Server 2016 には流行りのハイパーコンバージド (HCI) 機能
「Storage Spaces Direct(S2D)」が標準で備わっています。

VMware でいう vSAN みたいなもので、vSAN 同様に SSD が必須であったり 10G Ethernet が強く推奨されているのですが、S2D には vSAN には無いハードウェア連携技術として、HPC などで活用されている RDMA(リモート・ダイレクトメモリアクセス)の利用も 強く推奨 され、爆速な I/O を叩き出すといったことが可能とされています。

We strongly recommend 10+ GbE with remote-direct memory access (RDMA), either iWARP or RoCE.

https://technet.microsoft.com/ja-jp/windows-server-docs/storage/storage-spaces/storage-spaces-direct-overview


ということで、RDMA-enabled な S2D についてまとめてみます。

InfiniBand? iWarp? RoCE?


RDMA と聞いて思いつくのは InfiniBand かもしれません。
実際、Windows Server 2012 世代では SMB Direct として InfiniBand を活用しようとしていた節がありました。しかし、InfiniBand (IPoIB) による SMB Direct は、私が以前 こちら で書いたようなクリティカルな問題もあり、無理があったのは否めないところです。


実は、RDMA を実現できるプロトコルは InfiniBand だけではありません。iWarp や RoCE プロトコルでも利用できます。
ただ、WS12 世代の頃は InfiniBand 以外の情報はほとんどありませんでした。iWarp は仕方ないかもしれませんが、RoCE (RDMA over Converged Ethernet) は、InfiniBand よりも手軽な機器で利用できると言われて期待されていたものの、実際に手順が出てきたのは R2 のリリース後で、しかも「IPヘッダは持てない」と、これまた致命的な問題があり、そのまま陽の目を見ない感じがありました。

Windows Server 2016 S2D では「RoCE v2」が必要

このような R&D と現実とのギャップから、WS12 世代では RDMA-enabled を本番導入しているケースは、私の知る限りほとんど無かったのですが、2014 年に RoCE v2 となり、(意外と早く)IP ヘッダを持てるようになりました。

RoCEv2 IBTA 標準化完了(2014年9月16日) @kz_tomo

http://rdma.hatenablog.com/entry/2014/09/21/132500


この標準化には Microsoft も強く関わっていたそうで、Microsoft Azure の基盤で RoCE が利用されていることも 明らか*1 になっています。

Azure への実装からも分かるとおり、RDMA に強い思い入れのある Microsoft R&D チームは InfiniBand → RoCE 推し に変わります。技術的にそうせざるを得なかっただけかもしれませんが、結論として WS16 S2B では従来の InfiniBand の文字はなく、「RDMA v2 必須」となりました。



「標準化」は市場拡大に重要です。
仕様が確立されますので、先導を切っている Mellanox だけでなく、Broadcom(旧 Emulex)や Cavium(旧 QLogic・Broadcom)の CNA でも RoCE v2 がサポートされましたし、10G/40G だけでなくコストパフォーマンスに優れた 25G も登場しました。
今年の梅雨ごろには投入すると言われている Azure Stack も RoCE v2 が採用されています。


次回は WS16 で RoCE v2 を利用するための設定 をサマライズしていきたいと思います。


参考

*1:どのサービスかは不明

Windows Server 2016 - Switch Embedded Teaming の構築手順 (2)

f:id:ogawad:20190203195637p:plain:right


間が空いてしまいましたが、
Windows Server 2016 の新機能「Switch Embedded Teaming」(SET)が本番環境に適用していくための考察のつづきです。
前回は こちら

ダウンリンクポートのアサイ

SET 対応の仮想スイッチを作成し、アップリンクポート、つまり物理 NICアサインまでを行いました。次はダウンリンクポート、つまりホストやゲスト向けのポートをアサインしていきます。


現在は次のような状態ですので、、、


このようにダウンリンクポートを増やしていく感じです。


ダウンリンクポートの追加:
Add-VMNetworkAdapter     -ManagementOS -Name "<識別名>" -SwitchName "<仮想スイッチ名>"
ダウンリンクポートの切断:
Remove-VMNetworkAdapter  -ManagementOS -Name "<識別名>"
ダウンリンクポートにタグを付ける:
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "<識別名>" -Access -VlanId <VLAN ID>
ダウンリンクポートのタグを外す:
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "<識別名>" -Untagged
ダウンリンクポートのタグ付け状況の確認:
Get-VMNetworkAdapterVlan -ManagementOS

※ それぞれ -ManagementOS を付けることでホストに接続します。代わりに -VMName "<仮想マシン名>" とすると仮想マシンに接続しますが、仮想マシンへのアサインはオペミスを防ぐために PowerShell より Hyper-V Manager がお勧めです。




GUIHyper-V Manager)ではホストに対して複数のポートをアサインできないので PowerShell が必要です。設定すると GUI はグレーアウトします。


ゲスト(仮想マシン)への VLAN 設定は仮想スイッチではなく、ゲスト側の設定で行います。ここは VMware ユーザーがいつも「?」になるところです。


チーミングモードと分散アルゴリズムの設定

さて、チーミングモード分散アルゴリズム はどうすれば良いでしょう?


LBFO では次のようなパラメータがありました。


現状の設定は Get-VMSwitchTeam で確認できます。


チーミングモード

TeamingMode は「SwitchIndependent(スイッチに依存しない)」の一択です。文字どおりスイッチに非依存ですので、Link Aggregation(LAG)は組めません。もちろん LACP もダメです。
ここが従来までの LBFO を併用した方法との、唯一のデメリットかと思います。

分散アルゴリズム

LoadBalancingAlgorithm は、基本的にデフォルトの「Dynamic(動的)」で問題ありません。しかし、SET と同じく Windows Server 2016 の SDN の新機能である Packet Direct(PD)を使う場合はHyper-V Port」にする必要があります。

Packet Direct

Packet Direct は、次のような対応 NIC を搭載している場合のみ利用できる、Hyper-V ネットワークの新機能です。*1

仮想スイッチを作成(New-VMSwitch)する際に -EnablePacketDirect $true を指定し、その後Windows Azure VFP Switch Extension」を有効にすることで利用できます。機会があれば今回のように手順や性能結果を共有したいと思います。

NIC パラメーターの調整

上記スクリーンショットのとおり、昨今の Windows ネットワークは Software-Defined と言えどハードウェアの力をどんどん借りるようになっています。
しかしながら、一部にはアクロバティックな機能もありますので、SET 環境では利用できないものがあります。そのような機能はネットワークの安定通信のためにも明示的に無効にしましょう。

SET 環境で利用できる Windows のネットワーク機能
  • DCB
  • VxLAN, NVGRE
  • SDN QoS
  • RDMA (SMB Direct)
  • Transmit-side Checksum offloads (IPv4, IPv6, TCP)
  • Receive-side Checksum offloads (IPv4, IPv6, TCP)
  • VMQ
  • RSS
SET 環境で利用できない Windows のネットワーク機能
  • 802.1X authentication
  • IPsec Task Offload (IPsecTO)
  • TCP Chimney Offload
  • Host QoS, Virtual Machine QoS (VM-QoS)
  • SR-IOV
  • Receive side coalescing (RSC)
  • Receive side scaling (RSS)


少し情報が古いですが こちら も参照ください。

Azure Backup で VMware 仮想マシンのクラウドバックアップ構築手順 (2)

f:id:ogawad:20190203195708p:plain:right

昨日のつづき です。
VMware 仮想マシンを VADP 経由でちゃんとクラウドバックアップしてくれる Microsoft Azure Backup Server(MABS)について、VMware 環境への接続設定と、実際のバックアップ、価格感や注意点をまとめます。

MABS を VMware 対応バージョンに更新 (KB3175529)

2016年12月現在、公開されている MABS のインストーラーは、
VMware バックアップ未対応の古いバージョンとなっています。

管理 UI 内にある「更新プログラムの確認」をクリックするか、
ダウンロードサイト に直接アクセスして、アップデータ*1 をインストールしてください。

アップデートが無事完了すると、「管理」画面の「運用サーバー」をクリックした際にVMware の管理」といった項目が登場します*2


MABS バックアップサーバーと vCenter Server を接続

VMware バックアップ対応バージョンに更新したら、既存の vCenter Server と接続しましょう。MSFT 側で動画が用意されているので、そちらをご覧になるのが一番です。

Four simple steps to Backup VMware VMs using Azure Backup Server
https://azure.microsoft.com/ja-jp/blog/four-simple-steps-to-backup-vmware-vms-using-azure-backup-server/


各動画の内容は次のようになっています。

  1. vCenter CA 証明書チェーンのインポート
  2. MABS バックアップサーバー用の制限アカウントの作成(任意*3
  3. vCenter Server を登録
  4. バックアップジョブの作成

バックアップジョブ設定項目

バックアップソフトは「バックアップジョブが命」ですので、スクリーンショットをいくつか載せておきます。 ※ それぞれクリックすると拡大します。


バックアップターゲット選択画面(vCenter の仮想マシンフォルダ表示と一緒です)
VADP を叩くので仮想マシン単位。私の環境は仮想マシンが 200 台弱あるのですが、この手にありがちなフリーズなどは起きず、問題ありませんでした


D2D2T 的なバックアップですが、実は Azure へバックアップせずに
無償の D2D バックアップツールとして使うこともできます


こちらは Azure へ送る D2T 側のスケジュール設定


日次や週次データを全部保管し続けると使用量が増え続けるため、
古くなったデータは間引くことも可能です


ジョブ一覧画面
「指定どおりに動作しているか?」を重視した UX に見えます


レポート作成機能 もあります。
移植元のまま「DPM レポート」になってますね (笑)


他社のクラウドバックアップツールとの違い

3rd Party を見回せば、クラウドバックアップツールは正直言って結構あります。
しかし、Azure Backup はそれらと根本的に違うアドバンテージを持っています。


Azure Backup一般的な
クラウドバックアップツール
クラウドストレージ契約プランAzure BackupAzure Storage
バックアップ先ストレージAzure Storage の専用バージョンAzure Storage の通常バージョン
クラウドストレージ利用料○ 格安△ 高め
送信データ転送利用料○ 無償△ 課金対象
バックアップソフトウェア○ 無償△ 有償
差分・圧縮バックアップ○ あり△ ツールによる


気づきましたでしょうか? 携帯電話のデータカード専用プランと同様に、
Azure Backup は「バックアップ専用」の契約プランとなっています。

AWS のバックアップ専用ストレージサービスである Glacier は 3rd Party にも開放されていますが、Azure Backup は開放されていません。ですので、一般的なクラウドバックアップツールの場合は Azure Backup を使用できず、汎用クラウドストレージ(Azure Storage)を使わざるを得ないのです。
これらは仮想マシンを格納して動かしたりする Tier1 のストレージサービスですので、バックアップ保管領域に使うにはかなり高くつくのです。


Azure Backup の場合、50 GB の仮想マシンの丸ごとバックアップで 1,000 円。
年間で 12,000 円、5 年間利用してもたった 6 万円*4。しかもリストア時にダウンロード転送の追加課金は発生しない。契約プランから違いますので根本的に有利となっています。


転送速度やセキュリティは大丈夫?

Azure Backup は LRS/GRS といった三重化構成を取りつつもとても安価ですので、速度についてはそんなに期待できないのですが、これは運用上デメリットにはなりづらいでしょう。なぜなら、D2D2T 型*5 だからです。
一時領域の D2D までは同じデータセンター内でありますので、高速にバックアップできます。リストアについても、物理障害でフルリストアしたいのであれば、MABS サーバーに残っている D2D 一時領域から戻せば時間も掛かりません。
セキュリティについても、MABS バックアップサーバーだけがプロキシなどを通じてインターネットに出れれば十分です。


ハイブリッドクラウドは保守体制が重要

クラウドバックアップはかなりライトですが「ハイブリッドクラウド」の一種。
ですので、保守体制は特に気にしましょう。オンプレ側とクラウド側、そして穴になりやすい「繋ぎこみ」に至るまで、トラブル時にたらい回しされず、まるっと ワンストップで窓口対応 してくれるかどうか、窓口選びは重要だと思います。
どこの業者と保守契約するかは注意を払いましょう。

*1:MicrosoftAzureBackup-KB3175529.exe

*2:ベースが SCDPM2012 UR11 相当になります

*3:Adminstrator@vsphere.local を利用しても技術的な問題はありません

*4:実際にはデータ圧縮が行われるため容量課金は少なくなります。また世代保管をする場合、追加保管する差分データは別途課金されます

*5:本来 T は Tape を意味しますので、Cloud の意味で「D2D2C」と言うこともあるそうです

Azure Backup で VMware 仮想マシンのクラウドバックアップ構築手順 (1)

f:id:ogawad:20190203195708p:plain:right

今回の記事は「vExperts Advent Calendar 2016」と連動しています。
せっかくクリスマスイブを陣取りましたので、私の得意とする二分野「Microsoft × VMware」の最新技術について書きたいと思います。

この2社、以前は真正面からのライバルでしたが、最近は少しベクトルがズレてきているのはご承知のとおり。Microsoft は自社の Azure クラウドサービスを重視していますし、VMware はオンプレ重視、クラウドについてはマルチクラウド戦略です。ここで、両社がコンフリクトしない 1 つのソリューションがあります。
クラウドバックアップ」 です。



2016 年 11 月より Azure Backup Server に対応

正確というと、この VMware to Azure Backup は 今夏から実現できていました。

ではなぜ先月からかというと、System Center DPM が無くとも、ライセンス無償の Azure Backup Server (MABS) に対応し、懐の面でもスキルの面でもお手軽になった のです。

Microsoft TechNet - Azure Backup Server で VMware のバックアップが可能に
https://blogs.technet.microsoft.com/jpitpro/2016/12/07/announcing-vmware-backup-with-azure-backup-server/


しかも、このバックアップソフト(MABS)が結構優秀。
VMware のバックアップには NetBackup や Veeam などと同じく vSphere Storage API - Data Protection、つまり「VADP APIがしっかり使われており、機能・静止点保護・エージェントレスなどいくつもの点で VMware ユーザーが納得のいく出来になっています。


MABS バックアップサーバーの準備

バックアップサーバーとなる Windows Server マシンを 1 台用意します*1
仮想マシンでも構いません。スペックはさほど要求しませんが、Azure へ送る際の一時領域を持ちますので、ストレージ容量はそれなりには必要です*2
また、このマシンは Azure に送るための インターネット接続 (HTTPS) と .Net Framework 3.5 を事前セットアップしておく必要があります。


MABS バックアップサーバーのセットアップ

では、セットアップを始めてみましょう。簡単なのでコツだけ明記します。

Azure ポータルにアクセスし、Recovery Service コンテナを作成します。


バックアップのはじめてウィザードを立ち上げ、
上記のとおり「オンプレミス」VMware 仮想マシンを選択

下記の画面で、MABS のインストーラー(約 3 GB)と Azure 側のコンテナ情報ファイルをダウンロードしてください


準備が完了したら MABS のインストーラーを実行します。
最初は解凍ウィザードが、その後セットアップウィザードが起動するはずです。

途中、資格情報コンテナファイルをインストールする画面があり、これを実施することで Azure 側との接続が完了します。


下図はインストールが完了画面です。


デスクトップに置かれたアイコンを実行すると、
MABS バックアップツールの管理画面が表示されます。


ディスクのフォーマット

未割当の空 LUN を MABS に追加して一時領域として利用できるようにします。
「管理」画面の右メニューより「ディスク」をクリックし、
メニューバーの一番左にある「追加」アイコンをクリックしてください。



正常に追加すると、ディスクの部分に空き容量を示す円グラフが表示されます。




アイコンも画面もなんだか SCDPM っぽい??

そう。MABS は SCDPM2012 のエンジンをそのまま移植しているため、いわゆる「日次」「週次」といったスケジュールバックアップはもちろん、差分といったバックアップソフト的な機能はそのまま実装されています。
長くなったので、このあたりはまた明日

*1:現時点では Windows Server 2016 は SIS が削除されているために非対応です

*2:バックアップ対象容量の 1.5 倍が目安。OS 領域とデータ領域で LUN を分けてください

Windows Server 2016 - Switch Embedded Teaming の構築手順 (1)

f:id:ogawad:20190203195637p:plain:right


前回 話題に挙げた、WS16 の新機能「Switch Embedded Teaming」(略して SET)について、本番環境に適用できるか実機調査する機会があったので、詳しく触れてみたいと思います。

環境準備

最新モデルの x86 サーバーに 20Gbps NIC を2ポート用意。
但し、対向のスイッチがまだ 10G なのでどちらも 10Gbps でリンクしています。


なお、重要なポイントとして、
こちらの図と同じく LBFO でチームを組んではいけません。またスイッチ側についても LAG (Link Aggregation) は設定しないでおく 必要があります。

Hyper-V の有効化

この状態で Hyper-V をセットアップします。


仮想スイッチは SR-IOV や SET の有無で内部動作が大きく異なり、後からモード変更することはできません。このため、ウィザードで問われる仮想スイッチの自動構成は行わないでください。


SET 仮想スイッチの構築

Hyper-V インストール後、手動で仮想スイッチを作成します。
SET 対応の仮想スイッチを作るには PowerShell か SCVMM 2016 が必要です。
ここでは SCVMM が無くても行える PowerShell で行いたいと思います。

SET 仮想スイッチの作成:
New-VMSwitch -Name "<仮想スイッチ名>" -NetAdapterName "NICアダプタ名>" -EnableEmbeddedTeaming $true

※ -EnableEmbeddedTeaming が SET モード有効を意味します

SET 仮想スイッチのアップリンクポート追加・削除:
Set-VMSwitchTeam -Name "<仮想スイッチ名>" -NetAdapterName "NICアダプタ名>","NICアダプタ名>"

※ 再構成を指示しますので、既に追加済みのアダプタも再記述する必要があります

SET 対応の仮想スイッチの設定内容確認:
Get-VMSwitchTeam -Name "<仮想スイッチ名>"

※ -verbose は付けても付けなくても変わりません

実行例

LBFO の時もそうですが、リモートデスクトップで作業している場合は、
一旦ログオフして iLO といった Out-of-Band ポートから行うことを忘れずに。


※ クリックすると拡大します


この後、ダウンリンクポートのアサインに入っていくのですが、
Get-VMSwitchTeam の結果にも着目してみましょう。

  • TeamingMode = SwitchIndependent(スイッチに依存しない)
  • LoadBalancingAlgorithm = Dynamic(動的)


これは LBFO Teaming の時も登場した パラメータです。


LBFO では専用の GUI で設定できましたが、
SET で LAG や LACP を構成したい場合にはどうすれば良いでしょう?
分散アルゴリズム「Port ID」「Dynamic」とどちらにすべきでしょうか?


長くなったので、この辺りはまた 次回