Cisco Nexus 9000 シリーズ スイッチ

データセンターにプログラマビリティを統合

ホワイトペーパー





Cisco Nexus 9000 シリーズ スイッチ:データセンターにプログラマビリティを統合


概要


このドキュメントでは、Cisco Nexus® 9000 シリーズ スイッチがビジネスおよび IT のニーズとどのように調和し、プログラマビリティとオートメーションがネットワーク インフラストラクチャ全体にどのように統合されるかについて説明します。 オートメーションは、これまでも常に管理の重要な部分を占めていましたが、ネットワークがより堅牢になるにつれて、その重要性はますます高まっています。 このトレンドを支えるため、シスコは、Cisco Nexus 9000 シリーズ スイッチに多数の機能を追加すると同時に、複雑さの軽減、コストやトレーニング オーバーヘッドの削減に取り組んできました。 Cisco® アプリケーション セントリック インフラストラクチャ(ACI)は、一部の組織にとっては適切なソリューションですが、このドキュメントで主に扱う Cisco NX-OS スタンドアロン モードの Cisco Nexus 9000 シリーズ スイッチのプログラマビリティを利用することを望んでいる組織もあります。

はじめに


現在、多くの組織は、オートメーションと仮想化を活用することで、IT インフラストラクチャのコスト効率を高め、オンデマンド モデルに移行する方法を模索しています。 また、各組織は、ビジネスをより効率的に管理するための優れた分析方法を確立しようと努力しています。 IT 部門は、Cisco Nexus 9000 シリーズ スイッチのプログラマビリティを利用することで、優先度の高いビジネス ニーズを迅速に高いコスト効率で満たすことができます。 この機能は、大規模な Linux または Unix 環境を持つ組織にとって特に重要です。 次世代のデータセンターはビジネス チャンスを作り出していますが、その多くは予算が縮小する中で運営しています。 Cisco Nexus 9000 シリーズがより多くのオープン ソース機能を取り込み、より Linux に近くなるにつれて、社内にすでに Linux や Unix のスキル セットがある IT 部門は、わずかなトレーニングでこのプログラマビリティを活用できます。

また、Cisco Nexus 9000 シリーズは、クラス最速の 40 および 100 Gbps プラットフォームを提供し、電力および冷却効率が 15 % 向上しています。
Cisco Nexus 9000 シリーズでは、オープンなオペレーティング システムを提供することによって、IT とビジネスのニーズを満たしつつ、設備投資(CapEx)と運用コスト(OpEx)を減らすことができます。

プログラマビリティの使用例


お客様は、いくつかの理由でデータセンターのプログラマビリティ機能を引き続き望んでいます。 理由の 1 つに、プロビジョニングと構成を自動化して、新しいネットワーク デバイスをプロビジョニングする際の時間を節約し、マニュアル構築の副産物になりやすい人為的なミスを防ぐことがあります。

また、プログラマビリティを採用するもう 1 つの重要な理由として、オーケストレーション ツールとの統合が挙げられます。 ネットワークは、管理者が管理すべきインフラストラクチャの一部にすぎません。 単一のオーケストレーション ツールを使用してコンピューティング リソース、ストレージ リソース、ネットワーキング リソースを管理できれば、より少ない時間で新しいツールを学ぶことができます。

さらに、分析のための情報収集は、作業の自動化に伴ってより重要になります。 分析ツールやヘルス モニタリング ツールを使用することで、環境を最適化し、ネットワーク内のあらゆる問題をトラブルシューティングし、それについてのアラートを提供できます。

起動とプロビジョニング POAPPXE*
パッケージとアプリケーションの管理 RPM
オープン インターフェイス BashBroadcom ShellPythonGuest Shell
拡張性 コンテナ
オーケストレーション ツール PuppetChefCFEngineAnsible*

* 一部の機能は現在サポートされていない可能性があります。 サポートされている正確な機能については、シスコの担当者にご確認ください。



起動とプロビジョニング


Cisco Nexus 9000 シリーズ スイッチのブートアップとプロビジョニングは、いくつかの方法で自動化できます。

Power-On Auto Provisioning

Cisco Nexus 9000 シリーズには、Power-On Auto Provisioning(POAP)機能が搭載されています。 POAP では、スイッチの起動時にそのイメージがアップグレードされ、管理者が手を触れる必要がないため、マニュアル構築が原因で発生しかねない誤りを除去することができます。 POAP は、startup-config ファイルがスイッチにない場合に動作します。 その時点で、システムは Dynamic Host Configuration Protocol(DHCP)サーバを探します。DHCP サーバは、IP アドレス、デフォルト ゲートウェイ、およびドメイン ネーム システム(DNS)サーバの IP アドレスをシステムに割り当てます。 また、システムはスクリプト サーバの IP アドレスを取得し、スイッチでローカルに実行する適切なスクリプトをダウンロードします。 一般にスクリプトは、正しいイメージと running-config ファイルをダウンロードしてインストールするようにシステムに指示します。

Puppet エージェント POAP を導入することもできます。 ルータがイメージと running-config ファイルをダウンロードする際、Puppet エージェントの実行可能ファイルも実行されます。 スイッチが起動する際、Puppet エージェントが Linux コンテナで実行されます。 Puppet エージェントは Puppet Master サーバとの接続を確立します。

構成の詳細については、構成ガイド(http://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/fundamentals/configuration/guide/b_Cisco_Nexus_9000_Series_NX-OS_Fundamentals_Configuration_Guide_7x/b_Cisco_Nexus_9000_Series_NX-OS_Fundamentals_Configuration_Guide_7x_chapter_0100.html [英語])を参照してください。
また、GitHub(http://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/fundamentals/configuration/guide/b_Cisco_Nexus_9000_Series_NX-OS_Fundamentals_Configuration_Guide_7x/b_Cisco_Nexus_9000_Series_NX-OS_Fundamentals_Configuration_Guide_7x_chapter_0100.html [英語])でスクリプトを入手できます。


ブート前実行環境

Cisco Nexus 9000 シリーズで利用できるもう 1 つの高度なブート ローダは、ブート前実行環境(PXE)起動ツールです。 PXE は、十分に理解されたフレームワークを使用した一般的なツールであり、サーバ チームによく知られています。 また、PXE は、ネットワークからイメージを取得して、自動化されたインストールとブートアップを可能にします。 PXE は、サーバとスイッチの両方で利用できるため、現在のスキル セットを活用してソリューションを統合できます。



パッケージとアプリケーションの管理


Yocto を使用した Linux カーネル

スイッチは、64 ビットの Yocto(バージョン 1.2)ベースの Wind River(バージョン 5)Linux カーネルに基づいています(図 1 を参照)。

図 1.  プロビジョニング、モニタリング、オーケストレーションは、すべて Yocto Linux 環境に基づく

図 1.  プロビジョニング、モニタリング、オーケストレーションは、すべて Yocto Linux 環境に基づく


ネットワーク チームとサーバ チームにはすでに Linux のスキルがあるため、管理の視点で見ると、このアーキテクチャにより運用コストが削減されます。 各チームは、Linux サーバと同様にスイッチを管理できます。 この設計は、よりオープンな Cisco NX-OS ネットワークを提供することにより、ビジネスや企業だけでなく、大規模なスケーラビリティを持つデータセンター(MSDC)の設計と管理に取り組むクラウド プロバイダーにも適しています。 また、Yocto のツールチェーン環境を使用してカーネル ロード モジュールをビルドできます。ユーザは RPM とカーネル ロード モジュールを活用して、独自のパッケージをスイッチのカーネル空間またはユーザ空間で実行できます。


YUM を使用した RPM パッケージ マネージャ

シスコのパッチと他のソフトウェア パッケージの多くは、現在 Red-Hat Package Manager(RPM)として提供されています。 Cisco Nexus 9000 シリーズ スイッチでのソフトウェアの更新やロードは、Linux サーバと同じ方法で行うことができます。 また、tcpdump、tcollector、iperf などのサードパーティの RPM やデーモンを、Linux コンテナまたは Cisco NX-OS カーネル自体にインストールすることもできます。 これらのデーモンは、広く利用されているパッケージ アップデータ Yellowdog Updater, Modified(YUM)で管理されるため、yum update コマンドを通じてアップグレードできます。 たとえば、コマンド yum update BGP を使用して Border Gateway Protocol(BGP)を更新できます。


オープン インターフェイス


Bash アクセス

Bash シェルにアクセスできることにより、Bash スクリプトを実行できるのに加え、サードパーティのレイヤ 1、2、および 3 ツールに対してスイッチが開かれたものになります。 ユーザはコマンドライン インターフェイス(CLI)コマンドを使用して、Bash シェルに容易にアクセスできます。 Bash の中では、ps や grep などの一般的なコマンドを使用して、さらなるモニタリングとスクリプティングが可能です。 Bash シェルには、オペレータの誤りから保護するための非ルート権限があり、ロールベース アクセス コントロール(RBAC)機能が提供されています。 Bash アクセスでは、ネットワーク インターフェイスが Linux デバイス(eth1/1 など)として公開されるため、ifconfig や tcpdump などのコマンドを使用して、Linux サーバでネットワーク ポートを管理するのと同じ方法でスイッチ インターフェイスを管理できるようになっています。 また、サード パーティのオーケストレーション アプリケーションを使用して、Linux ネットワーキング スタックを活用することもできます。たとえば、スイッチ上でのルートの挿入やサードパーティ ルーティング プロトコルのインストールといった作業を実行できます。 また、Bash が公開されているため、Virtual Routing and Forwarding(VRF)インスタンスを Linux の名前空間として管理できます。 VRF の転送テーブルは、基本的に Linux の名前空間に一致します。


Broadcom シェル アクセス

また、Broadcom(BCM)シェルへのアクセスも可能となっています。これは、Broadcom チップ上で診断を実行したり、BCM シェルに対する Python ラッパーを使用して出力を得ることで、転送動作を変更したいと考えるユーザに向けた機能です。 このアクセス機能では、ハードウェアの各種テーブルへの読み書きアクセスと、下位のレジスタへのアクセスが可能です。


Python スクリプティング

Python は、容易に学習できる強力なプログラミング言語です。 Python は、効率的で高度なデータ構造を持ち、オブジェクト指向プログラミングに対するシンプルであるにもかかわらず効果的なアプローチが備えられています。 その洗練された構文と動的な型付け、そのインタープリタ型であるという性質により、ほとんどのプラットフォーム上の多くの分野で、スクリプティングおよび迅速なアプリケーション開発のための優れた言語となっています。 Python インタープリタと豊富な標準ライブラリは、Python の Web サイト(http://www.python.org/[英語])から、すべての主要なプラットフォーム向けに、ソースまたはバイナリ形式で自由に入手できます。

同サイトには、多数の無料のサードパーティ Python モジュール、プログラム、ツール、追加ドキュメントの配布と参照先が含まれています。

Cisco Nexus 9000 シリーズでは、Python リリース 2.7.5 のインタラクティブ モードと非インタラクティブ(スクリプト)モードの両方がサポートされています。

Cisco Nexus 9000 シリーズ スイッチ上の Python スクリプティング機能により、スイッチの CLI にプログラムからアクセスし、さまざまなタスクや、POAP および Cisco Embedded Event Manager(EEM)アクションを実行できます。 Cisco NX-OS CLI を実行する Python 呼び出しに対する応答では、テキスト出力の代わりに JavaScript Object Notation(JSON)出力が返されます。これは、Python スクリプティングを容易にし、スクリプトの上位互換性を確保するのに役立つ、強力な機能です。

Python インタープリタは、NX-OS でデフォルトで利用できます。

Cisco Nexus 9000 シリーズで Python スクリプティング機能を使用することにより、誤りを起こしやすく、反復的で手作業の各種ワークフローを、デバイス上およびデバイス外部で自動化できます。

Secure Guest Shell

Cisco Nexus 9000 シリーズ スイッチでは、Secure Guest Shell アクセスも可能です。 これは、基本的に、Bash と、カスタマイズ可能なルート システムを使用したセキュア Linux 環境を組み合わせたものです。 このアクセスにより、管理者は、普段 Linux サーバで行うのと同様に Linux コマンドを実行し、RPM をネイティブにロードできますが、制御され開かれた環境で実行されるため、ホストの破壊が防止されます。 各種のライブラリもホストとは無関係に Secure Guest Shell で更新できるため、システムのモジュール性が高まります。 これは Linux コンテナ内の閉じた環境に存在します。



拡張性


Linux コンテナ

お客様は、Linux コンテナ(図 2)に独自のアプリケーションをインストールできます。これは、Bash シェルにデーモンを直接追加するよりもセキュアな選択肢となります。 Linux コンテナ(LXC)は、ホスト カーネルをゲストと共有するオペレーティング システム仮想化テクノロジーですが、Linux カーネルに対する名前空間の拡張を通じた分離が可能です(詳細についてはhttp://linuxcontainers.org[英語] を参照してください)。


図 2.  Linux コンテナ

図 2.  Linux コンテナ


LXC では、Puppet や Chef などのシスコまたはサードパーティ アプリケーションを実行できます。 シェルへのフル アクセスができないため、機能は制限されますが、カーネルからの分離はより安全な方法です。 お客様は、LXC でほとんどの標準的な Linux ディストリビューションを使用できます。 また、ユーザは、SMACKなどのセキュアな Linux テクノロジーを使用して、サードパーティ アプリケーションがルート権限にアクセスすることを制限できます。


オーケストレーション ツール

Puppet および Chef は、Cisco Nexus 9000 シリーズで使用できるサードパーティ オーケストレーション ツールです。 これまで、Puppet を利用できるのは、機能が制限される可能性があるコンテナ内だけでした。 新しいバージョンの Nexus 9000 シリーズ スイッチでは、Puppet、Chef、および CFEngine がカーネル上で RPM として実行され、ネイティブに使用できるため、より多くの機能を利用できます。 これらのオーケストレーション ツールはすべてエージェント ベースであるため、マスター Puppet、Chef、および CFEngine サーバがあり、エージェントが Cisco Nexus 9000 シリーズ スイッチにインストールされます。 これらの言語のほとんどは宣言的であるという性質を持っているため、コンプライアンスと構成ポリシーが非常に効果的になっています。

Cisco NX-OS API


Cisco Nexus 9000 シリーズ スイッチ上の Cisco NX-OS API(NX-API)を使用すると、Cisco Nexus 9000 シリーズへの、Web ベースのプログラム アクセスが可能になります。 このサポートは、オープン ソースの Web サーバである NGINX を通じて提供されます。 NX-API では、Web ベースの API を通じて、CLI の完全な構成および管理機能を利用できます。 API 呼び出しの出力を、XML または JSON フォーマットで発行するように、Cisco Nexus 9000 シリーズ スイッチに指示することができます。 この包括的で使いやすい API により、Cisco Nexus 9000 シリーズ スイッチ上の迅速な導入が可能です(図 3)。 GitHub サイトでは、すでに構成されている多数のスクリプトにアクセスできます。 これらのスクリプトを探すには、http://github.com/datacenter/nexus9000[英語] を参照してください。スクリプトは随時追加されています。


図 3.  	Cisco NX-API を通じた Cisco Nexus 9000 シリーズへのプログラム アクセス

図 3.  Cisco NX-API を通じた Cisco Nexus 9000 シリーズへのプログラム アクセス


Ansible などのサードパーティ オーケストレーション ツールは、NX-API を使用するうえで非常に効果的です。 Ansible は、Chef や Puppet と同じくオーケストレーション ツールですが、エージェントはありません。 Ansible はプッシュ モデルを使用しており、Python をベースとし、Cisco Nexus 9000 シリーズで使用するのに適しています。


まとめ


シスコは、Cisco Nexus 9000 シリーズ スイッチを使用したオートメーションとオーケストレーションにおけるリーダーです。 シスコは、開発と運用(DevOps)のオープンな文化を採り入れ、より Linux に近い環境を Cisco Nexus 9000 シリーズの中に構築することで、Linux の高いスキル セットを持つ IT 部門が、ビジネス ニーズを効率的に満たすことができるようにします。 お客様は、POAP と PXE を使用することで、Cisco Nexus 9000 シリーズ スイッチを自動的にプロビジョニングおよび構成できます。 Bash シェル、Secure Guest Shell、LXC アクセスのサポートにより、管理者は、Linux サーバと同様に、シスコおよびサードパーティの RPM とデーモンを自由にロードできます。 最後に、シェルまたは LXC 内で Cisco NX-API を通じて Puppet、Chef、CFEngine、Ansible などのオーケストレーション ツールを使用することで、サーバで使用しているのと同じオーケストレーション ツールを使用して、タッチレスでスイッチを構成できるため、人為的ミスが減り、作業に要する時間が短縮されます。



詳細情報


Cisco Nexus 9000 シリーズ スイッチの詳細についてはhttp://www.cisco.com/web/JP/product/hs/switches/nexus9000/index.htmlを参照してください。