Quantcast
Channel: サイバーエージェント 公式エンジニアブログ
Viewing all articles
Browse latest Browse all 161

ACIとロードバランサー連携について

$
0
0
どうもこんにちわ

インフラ&コアテク本部でNWエンジニアしていると思われる田中です。
今回は、以前篠原が記載した記事の環境とロードバランサーとの連携について少しご紹介できればと思います。本記事はまだ検証段階ですので内容に不備があるかもしれませんがあしからず。。。

今現在私が検証している内容としては、
CiscoさんのACI環境とF5さんのLB(BIG-IP)との相互接続
です。
そもそもACIって何?という方は、こちらを参考にしてください。
「それでもなんのこっちゃか分からないぜ!」
「だから何が出来るんだ!」

という方、一緒に僕と検証しましょう!


本題:APICを使って負荷分散環境の構築!
今回はC社さんがリリースしたコントローラーのAPIC(ACIのコントローラー)を使って、BIG-IP と連携したサーバの負荷分散を実施してみたいと思います。細かい手順については割愛させて頂きますのでご了承ください。
オフィシャルなデモとしては、youtubeにあがっているので参考にしてみるといいと思います。

構成
雑な構成図ですが一旦こんな感じの検証をしているんだなという雰囲気だけでもわかって頂ければと。


下準備
1.APIC上でTenant/PN/BD/Appを用意しておくこと
2.APICとLBのmgmtセグメントは同一セグメントであること
3.PhysicalDomain=VLANセグメントの定義を作成
4.Contracts=ポリシーの用意
5.F社さんのDevicePackageをAPICにインポート

と何を言っているのかわからないかも知れませんが、そういうものがあるんだなと思って頂ければ助かります(・_・;)


1.Device Clusterの作成
DeviceClusterとは、
PhysicalまたはVM上で稼働しているL4-L7サービス(LB・FWなど)をACI Fabric上で稼働させるための論理インターフェースの設定や、デバイス情報を定義する所
と私は解釈しています。

さて、実際にDeviceCluseterを作成するにあたって下記3つのステップが必要になってきます。
=======================================
1.プレコンフィグされているmgmtテナントでDeviceClusterの作成
2.DeviceClusterのマネージメントIPや、論理インターフェースの定義
3.実際のロードバランサーのマネージメントIPや、物理インターフェースと②で定義した論理インターフェースのマッピング定義
=======================================

ステップ1


まず、"Tenant" メニューを選択し、"mgmt"テナントを選択。
そして、"L4-L7 Services"を開いて"Create Device Cluster"を選択。
次にステップ2に移りましょう。

ステップ2

ここでは、"EPG"以外の項目を全て埋めていきます。

"Cluster Info"にはDeviceClusterの名前、使用するDevicePackage、マルチなのかシングルテナントのみでの利用※1なのか、L4-L7機器が物理なのか仮想なのかを指定します。
追記:BIG-IPの場合だと、APICで指定したDeviceCluster名がDeviceGroups名になるので気をつけましょう。


"Cluster Management Interface"という項目ですが、
現VerでのF社さんのDevicePackageだとHA構成が組めないみたいなので、対象機器のmgmtアドレスとログイン/パスワードを指定してください。


"Logical Interfaces"項目では、あとで物理ポートとのマッピングする際の外向け、内向けの定義を行います。
基本的にNameとTypeは同じ名前にしておいた方が無難です。

※1 今回mgmtテナントでDeviceClusterを作成しましたが、それ以外のテナントでDeviceClusterを作成することも可能です。
理由として、mgmtテナント以外で作成したDeviceClusterは基本的に作成したテナントのみでの使用が考えられているため、複数のテナントで同じDeviceClusterを使用したいので本検証ではmgmtテナントで作成しました。



ステップ3

ステップ3では、ステップ2で定義した論理インターフェース等を踏まえて、稼働しているロードバランサーのマッピングを行います。

"Device Info"にはロードバランサーの名前を指定します。
"Management Interface"という項目は、
ステップ2で設定した設定内容と一緒のものを指定してください。


最後に"Interfaces"の指定ですが、ここがかなり重要です。
上図の場合だと、Nameに
BIG-IPで作成したTrunkインターフェース名を指定(BIG-IP上では"ext.int"というTrunkインターフェースを作成しています)、
Pathには事前にAPIC上で作成したインターフェースポリシーを指定(C社さんのvPCテクノロジーのポリシー)、
Logical Interfaceにはステップ2で作成した"external,internal"を指定しています。

※Trunkインターフェースを組まずに作成する場合は、もっと簡単にできるかと思います。
F5が提供しているドキュメントを見ながら作成すれば、一連の流れが記載されているので問題無く進めるかと思います。

さて、これでステップ1-3で終わりました。
問題なく終われば下図のように、APIC経由でBIG-IP上にDevice Groupsが作成されているはずです。



2.DeviceClusterのExportとServiceGraphの作成
ここでは、作成したDeviceClusterをマルチテナントで使えるようにしたので、構成図の"LBTest"テナントへExportし、ServiceGraphを作成します。
ServiceGraphとは、ACI Fabric内で定義したApplication間をつなぐL4-L7機能を提供するサービスと思って頂ければいいかなと思います。


作成したDeviceClusterのExport方法は、
"Tenant" メニューを選択し、"mgmt"テナントを選択。
そして、"L4-L7 Services"を開いて"Export Device Cluster"を選択。

すると下図の画面が表示され、"Device Cluster"に先ほど作成したDeviceClusterを指定し、
"Tenant"にExportしたいテナント名を記載してSUBMITをクリック。

Export先のテナント"LBTest"にてDeviceClusterがImportされているはずです。

exportdevicecluster


次にServiceGraphの作成ですが、


"Tenant" メニューの、"LBTest"テナントを選択。そして、"L4-L7 Services"を開いて"Service Graphs"を選択しServiceGraphを作成していきます。
基本的にドラッグ&ドロップ操作で完結するので、難しくないかと思います。

下図のようなウィンドウが出てきたら、Devicesウィンドウから"Virtual-Server"を右のウィンドウにドラッグ&ドロップ。
次に、"Consumer EPG"を選択し、VirtualServerの"ext"インターフェースにドラッグ、"Provider EPG"も同様に"int"インターフェースにドラッグして線をつなげてあげればServiceGraphの「もと」が完成です。
あと、"Name"にはServiceGraph名を指定してあげてください。


この「もと」が作成したあとは、Virtual-ServerのFunction Nodeを編集していきます。
"Service Graphs"の中に上記で作成した"WebGraph"があるはずなので、それを選択をし”Function Node"を選択してください。
すると下図のようなパラメータ設定画面が出てくるので、マニュアルに従って各値を入力していきます。

この各パラメータ値の内容は超重要で、少しでも入力ミスがあるとAPIC⇔BIG-IPの連携が出来ません。ただ、本ブログでは割愛させて頂きます。ごめんなさいm(_ _)m


3.ContractにServiceGraphの適用
いよいよ大詰めです。
作成したServiceGraphを
Contractに対しマッピングして、ClientからServerに対して通信を確立させましょう!

まずはじめに、App ProfileとContractsのマッピングを行います。
事前に作成済みのApplication Profile配下のServer-EPGで"Consumed"に対してContractを適用します。Consumed,ProvidedというのはContractを適用する向きについてです。こちらについてはC社さんのドキュメントを見て頂ければと思います。


同じようにClient-EPGでもContractsを適用するのですが、Client-EPGではContractの向きを"Provided"にしておいてください。
すると、下図の様なClient -> Contract -> Serverといった流れがAPIC上で定義されます。



最後に作成したServiceGraphをContractsへのマッピング方法ですが、

"Security Policies"の"Contracts"を選択、事前に作成していた"WebContract"を選択し、作成したServiceGraphをドロップダウンリストから選択してあげればOK。
これでAPIC→BIG-IPに対して、DevicePackage経由でServiceGraphで指定した各値が反映されていきます。
以上で一連の作業は完了です!

下図は反映後のBIG-IPです。自動的にパーティションが切られていますが、ACI上のテナント毎でServiceGraphを作成すると”Route Domain”が作成されるためです。そのため別テナントで同じようにServiceGraphを作成し反映すると、新たな"Route Domain"とパーティションが作成されます。





最後に
結構最後はすっ飛ばしましたが、APICを使って負荷分散環境の構築についての説明でした!
実際に通信・負荷分散出来るかどうかなどは、どこかでご紹介できれば・・・(;・∀・)
ところどころ抜けている所がありますが、こんな感じなんだなと雰囲気だけでも伝わってもらえれば幸いです。

(完)


Viewing all articles
Browse latest Browse all 161

Trending Articles