UCS Director 5.2 リリース

今年最後のリリースとして、Ciscoのインフラ統合管理ソフトウェア製品であるUCS Directorの最新版5.2がリリースされた。
リリースノートはこちら
対応製品の一覧はこちら
.xレベルのマイナーアップデートではあるが、今回も色々と新機能や機能拡張がてんこ盛りだ。主なものを下記に挙げてみたけれども、書ききれないので詳しくは元ネタへ。

  • ウィザード機能の強化
    • ベアメタルエージェントの構成
    • VSPEXおよびVblock構成コンポーネントの登録 ※FlexPodについてはすでに5.0で対応済
  • UCS Miniに対応
  • Cisco IMCを通じたCシリーズラックサーバおよびEシリーズモジュールサーバに対する管理機能の大幅強化
    • これはIMC Supervisorのために実装された機能のUCSDに対するマージ
  • Hyper-V対応機能の大幅強化
    • ネットワークモデル(VLAN, PVLAN, Network Virtualization)対応
    • ネットワークトポロジーの対応
    • ホストクラスタおよびグループの管理
    • トリガーに基づくHyper-V関連ワークフローの実行
    • 関連ポリシーの強化 (Deployment Policy, Storage Policy, Network Policy)
    • ホスト、クラスタ仮想マシン、ホストグループなどに対するパフォーマンスデータの取得
    • SCVMM取得データに基づくレポートの作成
  • Nexus 1000V for Microsoft Hyper-Vに対応
    • Logical Network, Network Segment Pool, IP Pool template, Network Segments, Network Uplinks, Inherit Port Profile
  • ACI (Application Centric Infrastrucutre) 対応の大幅強化
    • L3外部ドメインの構成
    • APIC Firewallポリシーの構成
    • Netscaler 1000V構成のサポート
    • VPC構成のサポート
    • AVS (Application Virtual Switch)管理のサポート
    • VPXおよびASAvの構成サポート

UCS Directorは結構愚直に仮想化、サーバ、ネットワーク、ストレージの各インフラの管理点に対して各製品が提供している標準APIを叩く機能を素直に?実装するタイプの統合管理ツールで、ある意味で方向性は俺様主義?なOpenStackなどとは間逆と言えるかもしれない。まだまだ改善の余地はたーくさんあるけれども、細かい使い勝手もジワジワとよくなってきているし、ワークフローとして組み立てることができる対応製品に対する処理タスクも約1300用意されているので、本来の目的である処理の自動化にフォーカスして、そのための手段であるスクリプティングや処理の組み立てなどに要する時間を最小限に抑える運用を実現することができるツールだと思う。
正直なところ、GUICLIなどの見た目はとても洗練されているソフトウェアとは言えない製品なのだけれども(T_T)、自身もNorth-bandもSouth-bandもしっかりAPIが実装されているし、PowerShellインターフェイスSDKも公開されて、まだ幾つかだけだけれども連携実装が3rd Partyによって開発されるなどエコシステムも少しずつ回り始めているので、もう少し多く使われるようになっていってくれるといいなぁと思う(^_^;)。
Merry Christmas!

仮想化と抽象化と標準化

利便性を高める方法として、サーバ仮想化は重要なシフトチェンジであったことは間違いない。物理サーバの有り余るリソースを活用するとともに物理サーバ台数を抑制し、しかもスピーディにサーバリソースを用意する方法として、サーバ仮想化は広く受け入れられた。同時に重要であったポイントは、あくまでもサーバ仮想化はサーバリソースの仮想化であって、OSから上は基本的にそのまま移行することができた点。それまでのOS、そしてなによりもそれらの上で稼働するアプリケーションとデータ、さらには導入や運用に関するノウハウやナレッジを引き続き使用することができる技術であったからこそ、サーバ仮想化は広く普及したといえる。次第にズレが明確になりつつあった、ハードウェアのライフサイクルとアプリケーションのライフサイクルを分離する手法として、タイミングよく登場した点も重要なポイントであったといえるだろう。最近はやりのContainer技術もある程度普及する可能性を秘めていると思うけれども、仕組みの継続性という面ではちょっと敷居は高いかもしれず、サーバ仮想化の方式を覆すところにまで行けるかどうかはまだまだ未知数だろう。それでも、標準化を指向するインフラリソースを必要とする目的には、サーバ仮想化よりもコンテナ型のほうが適していることは確かで、一定の普及はするだろう。
仮想化もコンテナ技術も抽象化のための手段の1つといえる。サーバ仮想化はサーバハードウェアを、コンテナ技術はOSを抽象化する。さらにその上で動作するアプリケーションにとっては、その下回りが仮想マシンなのかコンテナなのかは結構どうでもいい。アプリケーションに関しては、ThinAppなどのアプリケーション仮想化技術もありますね。
これらはいずれも、新たなレイヤーを追加することになる技術であり、つまりは新たな管理対象を増やしてしまう技術ではあるのだけれども、それによるデメリットを上回るメリットが得られるからこそ、こうした技術は広く受け入れられてきた。元々はOSもまた、アプリケーションから見たリソースを抽象化するために生まれたレイヤーだ。
そんなわけで、仮想化はあくまでも抽象化のための1手法に過ぎない。そして抽象化自体もまた、アプリケーションからみた環境の標準化のための手段に過ぎない。サーバ仮想化は大きなインパクトがあった最近の出来事なので、多くの人が仮想化=抽象化=標準化と考えてしまっている気がするけれども、それだけにとらわれてしまっていると幅広い視点を見失ってしまいかねないので注意が必要だと思う。

ACI Toolkit

Cisco ACIのコントローラであるAPIC (Application Policy Infrastructure) は、基本的には REST APIインターフェイスとしたAPIの塊なんだけど、もうちょっとラップされた方法でScriptingとか開発をしたい人向けに、ACI Toolkit と呼ばれるPythonモジュールが提供されている。
Githubの以下のパスでApache License 2.0ベースで公開されている。
https://github.com/datacenter/acitoolkit
gitコマンドでレポジトリをcloneして使ってもらえればいいんだけど、zipおよびtar.gzでも配布しているので、お好きな方で。
http://datacenter.github.io/acitoolkit/
使用方法、APIリファレンスなどは以下から。
http://datacenter.github.io/acitoolkit/docsbuild/html/index.html
まだバージョン0.1で、色々と不足していたり不十分な部分は多々あるけれども、サンプルスクリプトやサンプルアプリケーションもちょっと入っているので、お試しあれ。

ブログスタイルの変更について

SNSを始めて、ブログエントリー数が極端に少なくなったのは確かに事実。…ということで、突然だけれども、ちょっとブログのスタイルを変えて、Twitterなどでつぶやくにはちょっと…といった程度の、短めで、かつあまりとりとめのない内容を書き綴っていくスタイルにする代わりに、もうちょっと頻繁に(まずは週1程度を目処に?)更新されるカタチに変更しようかと思う。2015年はそんな感じでやっていければと思うけれども、まずはしばらくその予行演習を兼ねてリハビリを開始しようかな、と。
これまで書いてきた方向性はおおよそそのままにするけれども、たまに全く違うことも書くかも。さてさて、もう年末ですねー。

電気代リターンズ(^_^;)

東京電力の「でんき家計簿」に登録してみた。グラフ作るのが手間で、ずーーーーっとサボっていたけど、これを貼り付けるだけなら簡単だから再開しようかな。細かい数字は見えないだろうけど、別にそこまで知りたい人もいないだろうし。

今年は概ね同じ契約の人達との比較では平均的な使用量っぽい。我が家ではMicroserverが1台ほぼほぼ連続稼働している割には、まぁ悪くはない…かな。

ガスは引いていないので、水道料金と電気料金が我が家の光熱費なんですが、こんなもんでしょうかね。

そうそう、クーラーをけっこう使う夏よりも、床暖房を使ったりエキュートの給湯により電気を使う冬のほうが高いのは、平均グラフを見る限り共通なんですね。

Cisco ACI って?−ポリシーとプロファイル

8月が終わってしまう!(^_^;)

本日のエントリーは、Cisco ACI (Application Centric Infrastructure) についてのエントリーなのですが、あえて少々Cisco UCSについて振り返って見るところから書き始めてみたいと思います。

Cisco UCS (Unified Computing System) は様々な革新をサーバ市場にもたらしましたが、中でもUCS最大の価値は、UCS Managerによって「サーバ自体から分離された構成情報のパーツ」をPolicyとして、そして「それらのPolicyをまとめてサーバに適用する一揃いの構成情報セット」をService Profileとして管理する仕組みを実装した点でしょう。BIOS構成、Firmwareバージョン、論理インターフェイスの接続先VLANやSAN構成、対象サーバが使用するMACアドレスやWWNアドレスなど、これまでサーバを構成する上で意外と手間で時間がかかったり、もしくは設定内容の確実性を担保する方法がなかったような部分に対して、サーバの実体の有無などに関係なく事前に構成したPolicyとProfileに基づいて確実な構成と管理が可能となったのです。

Cisco UCSの管理ツールであるUCS Managerの対象は物理的なサーバやネットワークではありますが、PolicyやService Profileはいずれも完全に物理とは切り離された、ソフトウェア的に制御することが可能なプログラマブルな定義情報です。ソフトウェアだけで実装するような形だとどうしても置き去りにされてしまう(もしくは、オーバーレイなどによって単純化してしまう)ハードウェアの部分について、まるっとまるごと切り離してしまうのではなく、あくまでも管理ポイントと管理対象だけを分離し、可能な限りプログラマブルな対象とするために考えぬかれた実装方式こそが、Policyとそれを組み合わせたService Profileに基づく制御であるといえます。このように実装することによって、ソフトウェア的に構成・制御すべき部分はソフトウェアで、ハードウェア的に構成・制御すべき部分はハードウェアで実装することを可能としつつ一体化された管理を可能としたわけです。

UCSのリリースから5年、こうしたPolicyとProfileに基づく管理手法をサーバの範囲からデータセンター向けのネットワーク全体に拡張する新たな実装こそが ACI (Application Centric Infrastructure) です。ACIでは、Nexus 9000シリーズで構成されるEthernet Fabricを基盤として使用し、そのステータスをコントローラである APIC (Application Policy Infrastructure Controller) が完全に制御し把握していますが、同時に利用者に対しては そのEthernet Fabric自体をネットワークリソースとして提供するのではなく、アプリケーションが必要とする論理ネットワークという形で物理的なEthernet Fabricを一切意識せずに使用することができる抽象化されたカタチで提供します。ACIにおいては、IPアドレスも、VLANも、接続ポートも、単なる識別子として扱われます。まったく同じVLANであったとしても、たとえば接続先スイッチが違ったり、管理連携しているvCenterが違ったりすれば、まったくちがうテナントの、まったく違うシステムの構成要素として扱うことも可能です(逆に、同じ構成要素として扱うことも可能です)。そして、そうしたネットワークをアプリケーション視点での定義を可能とするPolicyとProfile (Application Network Profile) を実装した点こそがUCS同様、ACIの革新といえます。

物理サーバであっても仮想マシンであっても、vSphereのVMであってもHyper-VVMであっても、VLANを使っていようとVXLANをつかっていようと、そしてどのスイッチに接続されていようとも、同じPolicyの適用対象のグループに属すると定義すれば同じように通信が制御されます。仮想マシンがライブマイグレーションで移動しようとも、新たにWebサーバが100台一気に追加されようとも、Policy適用のルールが変わらない限りは「どのサーバがどの利用者の、どのアプリケーションのどの役割に属しているのか」という情報の管理だけでネットワークを制御することができます。

ネットワークに対する構成変更を手作業で個別機器それぞれに対して行う必要がない、という点がいわゆるFabricと呼ばれるネットワークの特徴の1つですが、ACIではさらに一歩踏み込んでネットワークをレガシーな意味でのネットワークとして管理するのではなく、抽象化された論理ネットワークとしてポリシー制御できるレベルへと進んでいます。UCSにおいて、Service Profileによるソフトウェア的な論理的な管理を実現するために FI (Fabric Interconnect) や FEX (Fabric Extender), VIC (Virtual Interface Card) などといったハードウェアコンポーネントとの組み合わせでその仕組みを作り上げた様に、ACIにおいても Application Network Profile による抽象化された論理ネットワーク管理を実現するために、Nexus 9000シリーズはもちろん、様々なL4-L7サービスと連携するための Device Package や、VMware環境における仮想スイッチをACIに完全統合する AVS (Application Virtual Switch)、そして OpFlexプロトコルなど、ハードウェアとソフトウェアの組み合わせで新しい時代におけるネットワークを実現しています。

最後に、ACIのコントローラである APIC (Application Policy Infrastructure Controller) は、個別機器の構成情報そのものを管理しているわけではありません。つまりACI Fabricを構成する各Nexus 9000スイッチの個別ConfigをAPICは管理していません。APICはあくまでもPolicyを管理しており、PolicyをACI Fabricを構成する機器に対して伝えます。伝えられたPolicyを基に自身がどのように構成されるべきなのかについては、各機器の側で判断し制御されます。このように、Policyベースでの管理を実現することによって、コントローラ側はスケール性を非常に大きく持つことができるようになりますし、各機器側は自身での判断と構成が求められる分、柔軟な実装拡張と自律動作が可能となります。

このエントリーではあくまでもACIを対象として書いてきましたが、こうしたポリシーベースでの制御方式は様々なネットワークにおける新しい管理手法として今後、様々な仕組みの中で使われるようになっていくはずです。OpenStackやOpenDaylightなどのプロジェクトにおいても、現在ポリシーベースの管理手法が取り入れられようとしています。そして、それはネットワークがプログラマブルになる時代の本格的な幕開けを意味します。

次回のエントリーでは、プログラマブルなネットワークとは?という点にフォーカスしてみたいと思います。

Cisco ACI って? − Introduction of "Application Centric Infrastructure" (1)

えー…まるまる2か月以上ぶりのエントリーでございます<(_ _)>

Ciscoの Application Centric Infrastructure (ACI) は、新しいデータセンターネットワーク基盤を実現するために根本的にこれまでのネットワークのあり方を再デザインしたものとなっており、ハードウェアとソフトウェアの両面を含む様々な要素と階層から構成されているため、メディア記事やCiscoのウェブサイトなどを読んでみたり、スライドベースなどで簡単な紹介を受けても、わかるけどわからない?と感じている方もけっこう多いのではないかと思います。

そこで、このエントリーでは、Cisco ACIについての基本をご理解して頂けるよう、あれもこれもまとめてご説明するのではなく、一歩ずつACIについてご紹介していきたいと思います。

まずは、ACIのどんなところがこれまでのネットワークとはどこがどう違うのか、というそもそもの概念的な部分ついてから見ていくことにしましょう。

どこから話を始めるとよいのか、ちょっと悩むのですが、IT、とひとくくりにしているものは実際には様々な要素から構成されている、という基本的なところから改めて考えてみることにしましょう。企業におけるITを大きく二つにわけてみるとすると、ちょっと無理やりかもしれませんが、究極的にはアプリケーションとインフラという2つの要素に行きつくのではないかと思います。そして、ITは根源的には利用者にとってはオフィスや文房具、店舗などと同じく数あるツールの1つですので、利用者がそれを使って様々な活動を行うために存在しています。利用者という枠には、その企業の社員だけの場合も、その企業にとってのお客様も含まれている場合もあるでしょう。

もちろんITのインフラは、ITを支える重要な要素であり、インフラがなければアプリケーションは動きません。しかし、利用者にとってのITはサービスですのでより重要なのはアプリケーションであり、極端に言ってしまえばその裏側のインフラは何であっても、アプリケーションが問題なく、使いたいときに使えるようにしてくれてさえいればどうなっていてもよい存在であるとも言えます。

企業内でITサービスを提供する責任者にとっても、最も重要なのは利用者にとって見える部分、つまりは満足するアプリケーションが問題なく使用でき、より満足するアプリケーションを提供することによって満足してもらえるようにすることであり、その基盤たるインフラはアプリケーションを問題なく動作するために必要となる単なる「下回り」です。インフラにはサーバやストレージ、セキュリティやネットワークなどの様々な要素が存在していますが、これらはそれ自体が問題なく動いているかどうかが重要なのではなく、それらに依存しているアプリケーションの動作にマイナスの影響を与えないかどうかこそが重要なのです。

ITはサービスであり、利用者のニーズは変化していきますので、当然ながらIT側もまた変化していく必要があります。その変化のスピードがそれほど速くなければ、年単位や、せいぜい月単位であれば、人が直接的に変更作業を行っていくことで対応できていました。しかし、ITが利用者にとって欠かせないツールになればなるほど、利用者はより多くをITはに求めるようになり、当然ながらニーズの変化のスピードは次第に速くなりつつあります。そして、初期のころは変換のスピードに対応するためにはアプリケーション側だけで対処することができていました。しかしここ数年で、アプリケーションの開発手法や開発体制は大きく変化し、そしてアプリケーションを提供する企業自体も大きく変化してきました。そして現在では、アプリケーションだけではなくインフラに対しても、アプリケーションの変化に追随するスピード感での変換への対応が求められるようになりつつあります。

たとえば、オンラインサービス系では爆発的な利用者の増加もあり得ますし、社内システムであったとしても他のシステムとの連携が開始さたり、組織体制の変更などによって新たなアプリケーションが早急に必要となったり、既存のアプリケーションの使い方が大きく変化することもあるでしょう。ウェブアプリケーションの増加に伴って、利用者はすぐに使い始められて、しかもどんどんと改善されていくアプリケーションを当たり前のものとして欲するようになってきています。

そうした、変化のスピードに追随するために、インフラリソースのうち、最もアプリケーションに近いレイヤーであるサーバについては仮想化によって対応が進められてきました*1。そして現在、ネットワークやストレージについても変化のスピードへの対応が求められるようになりつつあります。

ネットワークをよりすばやく、全体的に、変化させていくためのソリューションとして、この数年で様々なソリューションが登場してきています。いわゆるSDNと呼ばれているようなソリューションです。ソリューションの数だけ特徴や仕組みは異なりますが、その多くの根本的な考え方は共通で、ネットワークデバイスを管理機能である"Control Plane"とネットワーク通信を処理する"Data Plane"に分離して扱えるようにする、という形が採られています。

一番シンプルな方式は、いわゆるOpenFlow的に、ネットワークデバイス自体からはControl Planeを取り出してしまい、ネットワークデバイス自体は単なるData Planeとして位置付けて、1か所のControl Planeから管理できるようにする、という手法です。これによって、1か所のControl Planeから複数のData Planeを統合管理することができるようになりますので、ネットワークの制御は、個別のネットワークデバイスを構成しなければならない場合と比べて、格段に容易になります。

しかし、この方式にはいくつかの問題があります。1点目は、Control Planeが単一管理点であるということ自体です。このControl Planeによって管理されているすべてのData Planeは、当然ながらこのControl Planeに強く依存することになりますので、Control Planeで何か障害が発生すると、ネットワーク全体が使用できなくなってしまいます。また、Control PlaneはすべてのData Planeのすべての通信を把握して管理しなければならないため、非常に高い処理性能と全体ステータスの詳細把握が求められます。そのため、現時点では、いわゆるフローエントリーとして管理できる数にはそれほど十分ではない限界があります。そして最後に、最も根本的な課題は、この方式では管理は1か所になってはいますが、各機器の各構成をそれぞれ管理しなければならないという状態は実際には変わっていない、という点です。あるネットワーク構成の変更に対して、管理者はどのネットワークデバイスに対してどういう変更を加えなければならないのか、ということを意識して管理する必要があります。

最近では、ネットワークデバイスから完全にControl Planeを取り除いてしまうのではなく、各ネットワークデバイス内でのControl Planeも維持しつつ、統合的な管理を実現する仕組みも色々と登場しつつあります。CiscoのOnePKなどは、既存のネットワークデバイスにおける自律的な動作をそのまま維持しつつ、APIによる集中的な制御を実現するハイブリッド的なソリューションです。たとえばRouting Tableであれば、基本的には各ネットワークデバイス間でそれぞれ自立して動作しているControl Plane間でOSPFやBGPなどのダイナミックルーティング情報の交換で動作しつつ(もしくは個別のStatic Routing定義情報を保持しつつ)、APIによって特定の端末からの特定のアプリケーションの通信についてだけは管理者が指定した経路で通信されるように制御する、といったことを実現することができます。このようにすることにより、統合管理する側のControl Planeがすべてを把握し、すべてを制御するのではなく、特定の、特別に制御したい通信だけを制御するといったかたちでいわゆるコントローラによる統合管理と各ネットワークデバイスの自立管理はそれぞれの役割を分担し合うことができるようになります。これによって、統合管理する側は管理しなければならない情報を大幅に削減することができますし、もし統合管理する側で何らかの障害が起きたとしても、ベースとしては自律分散動作しているネットワークが維持されていますので、単に新規の特別な通信制御の追加構成や削除などの操作ができなくなるだけで、現状の通信構成はそのまま維持されます。

…と、ここまでControl PlaneとData Planeという視点で色々と書いてきたのですが、こうしたネットワーク視点での改善自体はいずれもアプリケーション側とは直接結びついていませんでした。それは、これではネットワークの管理をネットワークの視点で改善しようとしているだけに過ぎないからです。つまりは、結局のところアプリケーションの要件をネットワークの設計に対してどのように実現するのかについては、人間が判断してネットワーク設定に落とし込む必要があるということになります。もちろん、階層化によってレイヤー区分し、レイヤー間では密結合しないとう意味では、この仕組みは正しい実装といえました。しかし、アプリケーションの変化に追随するためには、ネットワークをどう構成するべきなのかについて人間の判断が介在してしまってはどんなに集中管理を実現したとしてもスピードを向上させることは困難です。

アプリケーションエンジニアが描くネットワークイメージと、ネットワークエンジニアが設計する実際のネットワークは、これまでおそらく大きなかい離がありました。そして、アプリケーション要件を実現するために必要となるネットワークを設計し構成することが、これまでネットワークエンジニアに求められていた仕事でした。しかし、アプリケーション自体やアプリケーションが要求するインフラ構成が状況によって刻々と増減し、変化していくような使われ方がされる時代に置いては、じっくりと腰を据えてネットワークを設計し、設定していく手法を採っていてはそのスピードに対応することはもはや困難です。

VRFやVLAN、Subnet、Bridge Domain、Routing、そしてIP Addressなどのネットワークとしての要素と、アプリケーションが求めるロジカルな関係性(たとえば、WebサーバとAppサーバ、AppサーバとDBサーバの間の通信要件や、DNSなどの共有リソースとの通信要件など)を、結びつけるためには、もはやネットワークを構成として管理していてはスピード感においつきません。たとえば100台の仮想マシンが構成されたり削除したり、しかもそれらの仮想マシンがホスト間をActiveなまま移動することが容易にできて、通信する対象が異なるHypervisor上の仮想マシンであったり、物理マシンであったりする様な状況に対して、人間が介在しなくてもそれらの仮想マシンの増減に適切に対応することができるネットワーク、それがACIが実現しようとしているネットワークです。

では、次回はACIがどうやってそうしたネットワークを実現しようとしているのか、について見ていきたいと思います。
キーワードは、ポリシーとプロファイルです。

*1:最近は、Dockerなどによって改めてコンテナ型も見直され、本格的に普及し始める兆しを見せてはいますが。