ここから本文です

自社開発技術満載!Microsoft Azureの物理インフラを大解剖

アスキー 3/30(木) 7:00配信

Microsoft Azureのデータセンター大解剖
Microsoft Azureのサービスは、140カ国以上の地域に配置された100以上のデータセンターで運用されている。物理インフラを意識せずに使えるのがパブリッククラウドだが、そのデータセンターの中身にちょっと興味はないだろうか。日本マイクロソフト クラウド&ソリューションビジネス統括本部 クラウドソリューションアーキテクトの真壁徹氏に、Azureデータセンターの物理インフラについて教えてもらった。

真壁:こんにちは、マイクロソフトの真壁です。Azureのアーキテクトですが、前職はヒューレット・パッカード エンタープライズ(HPE)で物理のサーバーやストレージ、ネットワークも扱っていました。データセンターの中のことはチョット詳しいです。
 
Azureのデータセンターには、マイクロソフトが運用するものと、各国のパートナーデータセンターを借りて運用しているものの2種類があります。今回は前者、マイクロソフトが自社で運用しているデータセンターの技術についてお話しします。いずれのデータセンターでもAzureのユーザー向けのサービス仕様は統一されていますが、自社運用のデータセンターにはマイクロソフトが考える最新技術が投入されています。
 
羽野:よろしくお願いします。Azureのデータセンターは、ユーザーからは「リージョン」という単位で見えていますよね。
 
真壁:地域内にあるいくつかのデータセンターを束ねて1つのリージョンとしています。Azureリージョンは、東日本と西日本のように必ずペアになっています。冗長化のためですね。
 
ちなみに、Azureの東日本リージョンのデータセンターは東京と埼玉のどこかにあります。Azureのポータルから東日本リージョンのロケーションを調べると「東京駅」の緯度経度が出てきますが、これは伝搬遅延の想定などに利用するためのおおよその位置で、実際に東京駅の地下にデータセンターはありません。
 
リージョンのほかに、ユーザーから見えるデータセンター内の情報として「Fault Domain」というものがあります。Fault Domainは、データセンター内で電源とネットワークを共有するグループ、ざっくり言うとサーバーラックです。Azure上に複数のVMを作成してシステムを構築する際に、それらのVMが単一の電源とネットワークを共有しないよう、単一障害点を避ける設計をするために必要な情報です。
 
羽野:140カ国以上に点在するデータセンター間を接続するバックボーンネットワークは、マイクロソフトが自前で持っているのですか?
 
真壁:主要な部分は自社で光ファイバーを敷き、各地域のデータセンターへ分岐する回線は各国の通信事業者に借りているケースが多いです。大陸間を長距離つなぐ海底ケーブルを1社で持つのは大変なので、大西洋間はFacebookと一緒に、太平洋間はソフトバンクや中国系企業などとコンソーシアムを作り海底ケーブルを敷いています。大西洋横断ケーブルの通信容量は160Tbps、太平洋横断ケーブルは80Tbpsとなかなか高帯域です。
 
マイクロソフトのデータセンターは第5世代目
真壁:実はマイクロソフトは1989年から自社データセンターを持っていまして、2005年頃までに作られた第1世代のデータセンターは、MSNメッセンジャーやHotmailなどWebサービスの基盤に使われていました。2007年頃にサーバーを高密度に詰め込んだ第2世代のデータセンターを作ってみたあと、2009年から第3世代としてコンテナデータセンターを自社で設計することに挑戦し始めます。
 
冷却効率を高めるために“閉じ込めて冷やそう”というのがコンテナデータセンターの発想で、第3世代は屋内にコンテナを置いて空冷していました。その後、2012年頃に作られた第4世代ではコンテナを野ざらしにして外気冷却を採用しています。空冷の電気代がかからなくなったため、第3世代ではPUE1.20~1.50だったエネルギー効率が第4世代ではPUE1.12~1.20まで向上しました。
 
今現在で最新のデータセンターは第5世代目で、コンテナ型ではありません。冷却技術が進歩し、コンテナほどに閉じ込めなくても外気冷却でPUE1.07~1.19程度の効率が出せるようになったためです。次世代に向けては、海底データセンターを試験中です。海にデータセンターを沈めて海水で冷却してみようと。大都市は沿岸部に多いので遅延が少なくなることが期待されています。
 
羽野:現在、Azureは何世代目のデータセンターで稼働しているのですか?
 
真壁:第3世代から第5世代のデータセンターで運用されています。マイクロソフトのデータセンターにAzureが入ったのは第3世代から。第3世代も第4世代も現役で使われており、第3世代のデータセンターに載ったAzureのシステムはそのままそこで稼働しているケースがあります。
 
いまどきのデータセンターの中には4種類のチップがいる
羽野:次に、Azureデータセンターの中のことを教えてください。
 
真壁:Azureデータセンターの中には、CPU、GPU、FPGA、ASICという代表的な4種類の演算チップがいます。かつて、データセンターに使われる演算用のチップで意識するのは、サーバーにいるCPU、サーバーのネットワークインターフェイスやネットワーク装置にいるASICの2種類でしたが、最近はGPUとFPGAが注目されています。
 
CPUとGPUはソフトウェアロジック、FPGAは書き換え可能なハードウェアロジック、ASICは書き換え不可のハードウェアロジックで動きます。と言っても分かりにくいと思うので、4つのチップの特徴を、中華料理屋にあるものに例えて説明しましょう。
 
CPUは中華包丁。中華料理なら何でも料理できる万能な包丁ですが、店の調理場を1人で切り盛りするコックさんが使うものです。その中華料理屋に、1000人のお客さんが来店して、全員が「うさぎりんご」を注文したとします。コックさんが中華包丁でりんごをむくこともできますが、それよりも、何人かのアルバイトが果物ナイフでむいたほうが早い。この果物ナイフがGPU。軽い処理をたくさんこなすのに適したチップです。
 
GPUはもともと描画処理用に開発されたものだけあって、画像の各ピクセルに対する処理をまとめて行なうような細かい並列処理が得意なのです。
 
FPGAは中華鍋。炒めたり揚げたりいろいろな使い方ができますが、使う前に、空だきをしたり油をひいたりと準備が必要です。準備というのは、FPGA向けのロジックを書き、ハードウェアにロジックを書き込む作業を指します。この作業を扱えるエンジニアは多くありません。そして、ハードウェアロジックが何度でも書き換えられるといっても、時間はかかります。ソフトウェアほどお手軽ではありません。でも「そのロジックよりいいロジックが見つかった」「ロジックにバグが見つかった」というケースで対処できるのは大きな利点です。
 
ASICは餃子マシンです。餃子を作るスループットは最高ですが餃子以外は作れません。また、一度購入したら長期間使う必要があります。つまり、ハードウェアのロジックを決めたらもう変更できないので、その設計を長く使い続けなければいけません。
 
羽野:4種類のチップは、データセンターの中でそれぞれ何をしているのでしょうか。
 
真壁:Azure上でユーザーから見えているのは、IaaS仮想マシンにいるCPUとGPUだけですね。仮想マシンでは、x86系CPUと、NVIDIA製のGPUが利用可能です(Azure仮想マシンの「Nシリーズ」で「NVIDIA Tesla M60」「NVIDIA Tesla K80」の2種類のGPUを提供)。
 
CPUとGPUは、データセンターの中の、ユーザーから見えないところでインフラやアプリケーションの処理も行なっています。ここで、CPUの負荷を下げるためにお手伝いしているがFPGAとASIC。特にマイクロソフトは、新しいプロトコルをどんどん載せられる柔軟性から現時点ではFPGAの方に注力しており、Altera製FPGAを搭載した拡張カード「Catapult」を自社開発しています。
 
インフラ処理でCPUを使ったら負け
真壁:FPGAは、データセンター内部でCPUのアクセラレーターとして、ネットワークのパケットフィルタリングや暗号化、ストレージの圧縮・暗号化などの処理を行なっています。特に最近の広帯域なネットワークの処理は重たいので、CPUにまかせるとその処理だけでいっぱいいっぱいになってしまう。そこで、ネットワーク処理に特化したロジックを持つFPGAを使ってCPUの仕事を減らしてあげるわけです。CPUのパワーはなるべくユーザーアプリケーションのためにとっておきたいものですから、インフラ処理でCPUを使ったら負けです。
 
羽野:使ったら負け。で、FPGAは具体的にデータセンターのどこにいるのですか?
 
まず下図のようにCPUとNIC(ネットワークインターフェイスカード)の間にいます。TOR(ラックの上でネットワークを束ねるスイッチ)の処理で、ラック間が通信する際にいったんFPGAをいったん通してCPUとNICが楽をできるように助けています。NICの前処理をするFPGA付きのかしこいNICということで、「SmartNIC」と呼んでいます。
 
この「SmartNIC」が、Azureデータセンター内でSDNを実現するコア機能「VFP(Virtual Filtering Platform)」と連携します。
 
VFPとは、Hyper-V仮想スイッチを拡張するもので、仮想マシン間の通信において、ACLs(アクセスコントロールリストによる制御)、VNET(仮想ネットワーク識別タグの付与)、SLB(サーバーロードバランサー)といった機能を提供しています。VFPの処理はSmartNICが担っています。VFPがSDNコントローラーの指示を受けて作ったGFT(Generic Flow Table)に従って、SmartNIC上のFPGAが仕事をするイメージです。
 
FPGAありきでノード間通信のプロトコルを再設計
真壁:VFPの説明で話が難しくなったついでに、「低遅延FPGA間通信」の話もしましょう。データセンター内のサーバーノード間の通信の話です。
 
現状、Azureデータセンターでは、同一ラック内のサーバーノード間通信(L0)や、ラックをまたいだサーバーノード間通信(L1/L2)に、TCPというプロトコルを使っています。このTCPの処理は重たく、CPUに負荷がかかるので、FPGAで何とかしようと考えました。
 
通信する始端ノードと終端ノードのどちらにもFPGAが搭載されていたら、何かもっと工夫ができないか。そんな発想から、FPGAありきでプロトコルとネットワーク転送レイヤーを新しく設計したものが、Azureデータセンターの次世代ネットワーク構想「低遅延FPGA間通信」です。FPGA搭載ノード同士が通信する際のプロトコルとして、TCPより処理が軽いUDPを採用しています。
 
羽野:TCPとUDPの違いを優しめに教えてください。
 
真壁:TCPは、始端ノードが終端ノードに向けてパケットを送る前に「話かけていいですか?」と常に確認します。UDPは、一方的にしゃべりかけます。また、TCPの会話は「明日、ビールを、飲みに行こう」というように決まった順番で話すのに対し、UDPの会話は順番が保証されておらず「ビールを飲みに行こう」と言ってから「明日」が届く可能性がある。それ先に言ってよ、的な。順番は重要ですよね。
 
UDPはTCPより負荷が軽いのですが、言葉が届いたか確認したり、話の順序を正しく並べ替えるような処理のためには通信スタックの代わりにアプリケーションが忙しく働く必要があります。
 
話をAzureの低遅延FPGA通信に戻しますが、この通信では、終端ノードのFPGAがUDPの各種処理をカバーし、TCPのような送達確認や順序制御を行ないます。そのため、マイクロソフトはより軽量なネットワーク転送レイヤー「LTL(Lightweight Transport Layer)」を開発しました。UDP+LTLで軽いもの同士を組み合わせてFPGAで処理した結果、同一ラック内のサーバー間通信のラウンドトリップ遅延が3マイクロ秒を安定して下回るようになりました。これは、Infiniband並みのスペックです。
 
Azureデータセンターで一番使われているサーバー仕様はこれだ
羽野:マイクロソフトは、クラウドデータセンターで使うサーバー仕様をオープンソース化するコミュニティ「Open Compute Project(OCP)」に参加して、自社データセンターのサーバー仕様を「Project Olympus」として公開していますよね。なぜオープンにするのでしょう?
 
真壁:OCPに参加する動機は主に供給面です。Azureデータセンターは世界中に展開されているので、世界のどこでもサーバーの供給を受けられるように。
 
これまで、ハードウェアはベンダーが長い時間をかけて仕様を検討して作られるものでしたが、ハードウェアの開発にもOSSコミュニティのやり方を取り入れていこうというのがOCPです。未完成のものも恥ずかしがらずに公開し、ハードウェアを供給する側の意見ももらって、使う側も供給側もみんなが幸せになるものを作っていくプロジェクトです。
 
羽野:Project Olympusで公開されている仕様は細かいので、現在Azureデータセンターで使われているハードウェアをざっくり教えてください。
 
真壁:ざっくり解説しますと、Azureデータセンターで今一番導入されている仕様は0.5Uブレードサーバー「Open CloudServer v 2.1 half-wide blade」で、ユーザーのVMが動くのは主にこのサーバーです。主要なベンダー製ブレードサーバーと違って、機能リッチなバックプレーンや通信機能、管理機能を実装していません。とにかくシンプルで小ぶりに作られています。あと、SSDに「NVMe」を採用しています。
 
一方、ストレージサーバーはHDDをたくさん積まなければいけないので、ハーフサイズの0.5Uではスペースが足りない。そこで、ストレージ用途には1Uブレードサーバー仕様「Open CloudServer v 2.1 full-wide blade」が使われています。1Uに10本のSATA HDDが入ります。
 
ストレージはSANでもNASでもありません
羽野:ストレージの話題が出ましたが、AzureデータセンターにあるストレージはSANですか?NASですか?
 
真壁:どちらでもないです。マイクロソフトが2011年に自分で作りました。x86サーバー上にストレージの機能をソフトウェアで実装しています。詳しくはマイクロソフトが2011年に発表した論文『Windows Azure Storage:A Highly Available Cloud Storage Service with Strong Consistency』を参照してください。
 
現在マイクロソフトは、このAzureストレージの性能を底上げすることに重めの研究開発投資をしています。Azureストレージは、100台とか複数のサーバーでストレージの機能を実現している分散ストレージなので、サーバー間のデータ転送が多く発生します。ここで、チップの力を使ってサーバー間通信を高速化し、分散ストレージの性能を向上させようとしています。先ほどのFPGAとLTLはその一部です。
 
ソフトで実現できることはソフトでやる
真壁:マイクロソフトはソフトウェア開発企業なので、データセンターのインフラでも“ソフトでできることはソフトでやろう”がモットーです。
 
羽野:ストレージを自社開発ソフトで実装しましたが、他にも何か。
 
真壁:「SONiC(Software for Open Networking in the Cloud)」というL3スイッチソフトウェアを自社開発して、すでにAzureデータセンターの一部で利用しています。スイッチに期待するのは「シンプルに構成できる太い土管」。ソフトウェア実装であれば、リソースが不足したときに汎用スイッチを足し、構成を変えることで低コストに変更や拡張ができますね。SONiCはOSSとして公開しています。
 
それから、ロードバランサーとファイヤーウォールをサーバー上にソフトウェア実装しています。こちらも、リソースが不足したらシンプルにサーバーを足すだけで増強できるメリットがあります。
 
羽野:シンプルにスケールさせるためのソフトウェア実装なのですね。どうもありがとうございました。
 
 
文● 羽野三千世/TECH.ASCII.jp

最終更新:4/21(金) 19:54

アスキー