OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介

8,952 views

Published on

日本OpenStackユーザ会 第15回勉強会 発表資料です。

Published in: Technology
0 Comments
15 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,952
On SlideShare
0
From Embeds
0
Number of Embeds
140
Actions
Shares
0
Downloads
166
Comments
0
Likes
15
Embeds 0
No embeds

No notes for slide

OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介

  1. 1. OpenStack + OpenContrailで 実現するマルチテナントIaaS のご紹介 Takashi Sogabe(@rev4t) Internet Initiative Japan., Inc.
  2. 2. あなた、誰? • Takashi Sogabe (@rev4t) • IIJという会社でサービスやデバイスの開発を しています – 最近は、新しいサービスを作るためにソフトウェア を検証したり、ネットワーク構築もやっています – 自称フルスタックエンジニアです 
  3. 3. 何したいの? • Contrail がオープンソースになりました! – エンジニアとしては使って試すのが理解への早 道 – ソースコードを眺めてニヤニヤしたい – まずはデモ環境を作って遊んでみよう
  4. 4. OpenContrailって何? • スケールアウト性の高いIaaSを簡単に構築で きるソフトウェア – いわゆるSDN製品です • OpenStack, CloudStackと連係して動作する • コントロールプレイン: BGP又はXMPP • データプレイン: MPLS over GRE – MPLS over UDP, VXLANにも対応している模様
  5. 5. 情報源 • http://opencontrail.org/ – 各種ドキュメントやパッケージが提供されている • https://github.com/Juniper/contrail-controller – ソースコードはgithub上に公開されている • http://juni.pr/17tlcQh – Juniper有村さんがJ-NETに投稿された、 OpenContrailの貴重な日本語情報です
  6. 6. 何故MPLS/BGPなの? • 何といっても、枯れた技術なので安心して使 える – ISP各社が既に IP-VPNサービスとしてMPLSを利用 中 – 沢山のVPNコネクションを張っても性能が出る – DC間の接続やハイブリッドクラウドが簡単に出来 る • External routerはL3VPNルータなので、相互接続が簡 単に出来る
  7. 7. 他に何かできるの? • Service Chaining – いわゆるNFV – Firewallなど、色々な機能をVMに挟み込める • Network Monitoring – 通信中のセッション情報をWeb画面から閲覧 – 必要であれば、Web画面からtcpdumpが出来る • Remote SPAN(RSPAN)のオーバーレイネットワーク版と いう感じ
  8. 8. テストに必要な最小構成は? • PC server 1台 – Juniper推奨は5台以上です – テスト目的であれば、1台あれば十分です • ルータ 1台 – MPLS VPNが喋られる物 – Juniper MX や SRXが使えます – External Router不要であれば無くても大丈夫
  9. 9. デモ環境のサーバ構成 インターネット接続ルータ 10.0.0.1/24 External Router(Gateway Router) .79 192.168.192.0/24 .64 • Contrail System • OpenStack (controller, etc) • OpenStack(nova-compute) • vRouter
  10. 10. OpenContrail アーキテクチャ
  11. 11. インストール(1) • http://juni.pr/1alNn7h – sourceからビルド • git + repo – セットアップが大変なので、ビルドのみの用途に向いている • devstack – https://github.com/dsetia/devstack – Binaryパッケージを使用 • Juniper提供のOSイメージ • rpmパッケージ (CentOS or Fedora) • Juniper.net のアカウントが必要 – Online formから申請すれば、1日程度でアカウントが発行されるとのこと • 今回のデモでは、OSイメージを使用 – Contrail Install Media for CentOS 90-day EVAL (Release 1.02) – OpenStack Grizzly
  12. 12. インストール(2) 1. OSイメージをダウンロード、PCにインストール 2. setup.sh の実行 – cd /opt/contrail/contrail_packages; ./setup.sh 3. testbedファイルの作成 4. システムのインストール – – – – cd /opt/contrail/utils; fab install_contrail (自動的に再起動されます) cd /opt/contrail/utils; fab setup_all (自動的に再起動されます)
  13. 13. testbedファイル • cd /opt/contrail/utils/fabfile/testbeds • cp testbed_singlebox_example.py testbed.py • vi testbed.py を編集 ext_routers = *(‘srx1’, ‘192.168.192.79’)+ (external router が無い場合はコメントのままにしておく) host1 = ‘root@192.168.192.64’ host_build = ‘root@192.168.192.64’ env.passwords = { host1: ‘<ホストのパスワード>’, host_build: ‘<ホストのパスワード>’, }
  14. 14. インストール(3) • インストールが成功すれば、Horizon及び ContrailのWeb画面にログインできるようにな ります – Horizon • http://(ホストのIPアドレス)/ • username: admin • password: contrail123 – Contrail • http://(ホストのIPアドレス):8080/ • username, password は Horizonと同じ
  15. 15. External Routerの設定(1) • Interfaceの設定 interfaces { ge-0/0/0 { unit 0 { family inet { address 192.168.192.79/24; } } } ge-0/0/1 { unit 0 { family inet { address 10.0.0.1/24; } } }
  16. 16. External Routerの設定(2) • L3VPNの設定 routing-options { static { route 0.0.0.0/0 next-hop 192.168.192.5; } route-distinguisher-id 192.168.192.79; autonomous-system 64512; dynamic-tunnels { setup1 { source-address 192.168.192.79; gre; destination-networks { 192.168.192.0/24; } } } } protocols { bgp { group contrail-controller { type internal; local-address 192.168.192.79; family inet-vpn { unicast; } neighbor 192.168.192.64; } } stp; }
  17. 17. External Routerの設定(3) • VRFの設定 routing-instances { cusotomer-public { instance-type vrf; interface ge-0/0/1.0; vrf-target target:64512:10000; routing-options { static { route 0.0.0.0/0 next-hop 10.0.0.2; } } } }
  18. 18. External Routerの設定(4) • SRXを使う場合は forwarding mode を packet basedにする security { forwarding-options { family { inet6 { mode packet-based; } mpls { mode packet-based; } iso { mode packet-based; } } } } root> show security flow status Flow forwarding mode: Inet forwarding mode: packet based Inet6 forwarding mode: packet based MPLS forwarding mode: packet based ISO forwarding mode: packet based Flow trace status Flow tracing status: off Flowベースだと、security zone に dynamic tunnelを追加する方法が無 い模様です
  19. 19. OPENCONTRAILを使ったテナント ネットワークの構築
  20. 20. ネットワークの設定(1) • 設定方法は3つ – OpenContrail Web画面から設定 – OpenStackから設定 • 但し、一部パラメタはneutron(quantum)から設定でき ない – OpenContrail REST API • API server: http://(controller_host):8082/ • 今のところ、ドキュメントが全くありません – Top level のURLを叩けば、使い方は大体分かると思います
  21. 21. テナントネットワーク .1 Floating-ip External router vRouter 10.1.0.253 .254 .253 .252 external network 10.0.0.0/24 global 10.1.0.0/24 public 10.255.0.0/24 .254 vRouter test-public-1 .253 test-private-1 test-public-2 .252 test-private-2 .254 private 10.254.0.0/24
  22. 22. ネットワークの作成(public)
  23. 23. IPアドレスブロックの作成(public)
  24. 24. Globalネットワークの設定
  25. 25. test-public-1, test-public-2 起動
  26. 26. Ping from test-public-1 to 10.0.0.1
  27. 27. Privateネットワークの作成
  28. 28. test-private-1, test-private-2 起動
  29. 29. Ping from test-private-1 to test-public-1
  30. 30. Policyの作成
  31. 31. Policyの適用
  32. 32. 再度 Ping from test-private-1 to test-public-1
  33. 33. Floating-ipの作成、割り当て
  34. 34. Ping from ext-router to test-public-1 root> ping 10.1.0.253 routing-instance cusotomer-public PING 10.1.0.253 (10.1.0.253): 56 data bytes 64 bytes from 10.1.0.253: icmp_seq=0 ttl=62 time=31.423 ms 64 bytes from 10.1.0.253: icmp_seq=1 ttl=62 time=2.510 ms ^C --- 10.1.0.253 ping statistics --2 packets transmitted, 2 packets received, 0% packet loss
  35. 35. External router show route (1) root> show route inet.0: 5 destinations, 5 routes (4 active, 0 holddown, 1 hidden) + = Active Route, - = Last Active, * = Both 0.0.0.0/0 *[Static/5] 1d 20:49:14 > to 192.168.192.5 via ge-0/0/0.0 10.1.0.1/32 *[Local/0] 1d 20:49:29 Reject 192.168.192.0/24 *[Direct/0] 1d 20:49:14 > via ge-0/0/0.0 192.168.192.79/32 *[Local/0] 1d 20:49:20 Local via ge-0/0/0.0
  36. 36. External router show route (2) inet.3: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 192.168.192.0/24 *[Tunnel/300] 1d 20:49:46 Tunnel 192.168.192.64/32 *[Tunnel/300] 00:56:35 > via gr-0/0/0.32769
  37. 37. External router show route (3) cusotomer-public.inet.0: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 0.0.0.0/0 *[Static/5] 1d 20:49:14 > to 10.0.0.2 via ge-0/0/1.0 10.0.0.0/24 *[Direct/0] 1d 20:49:14 > via ge-0/0/1.0 10.0.0.1/32 *[Local/0] 1d 20:49:19 Local via ge-0/0/1.0 10.1.0.253/32 *[BGP/170] 00:07:40, localpref 100, from 192.168.192.64 AS path: ? > via gr-0/0/0.32769, Push 16
  38. 38. External router show route (4) mpls.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 299792 *[VPN/170] 02:02:08 > to 10.0.0.2 via ge-0/0/1.0, Pop bgp.l3vpn.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 192.168.192.64:2:10.1.0.253/32 *[BGP/170] 00:07:40, localpref 100, from 192.168.192.64 AS path: ? > via gr-0/0/0.32769, Push 16
  39. 39. Network管理(1)
  40. 40. Network管理(2)
  41. 41. Network管理(3) Flowの情報をリアルタイムに把握できる
  42. 42. Network管理(4) Routing Table の情報を確認
  43. 43. Analyzerを使う(1) • L3SWのRemote SPAN(RSPAN)機能を便利にし たようなもの – パケットを捕捉したいネットワークとパケットの種 類を指定 • Analyzerインスタンスが自動的に起動する • 管理者は、OpenStackの管理画面上からWiresharkを 操作することでパケットダンプを閲覧できる – Compute Nodeにログインしてtapインタフェースを 直接tcpdumpすることもできるけれど、Analyzerの 方がずっと便利
  44. 44. Analyzerを使う(2)
  45. 45. Analyzerを使う(3)
  46. 46. まとめ • とても使いやすい管理画面 – オーバレイ上の通信を把握できる • スケールアウトが期待できそうなアーキテクチャ – オーバーレイ上の通信は各ノードが自律的に行なう ため、コントローラの仕事が少ない – Cassandraを用いたスケールアウト性能の高いバック エンドデータベース – External router はL3VPNルータを沢山接続することで アップリンクを増強できる • VXLANも使えるらしいけれど、管理画面からはまだ設定でき ない模様
  47. 47. 今後調べたいこと • Service Chaining • ノード数を増やしてスケールアウト性能を測 定 • VXLANで external router を終端 • Havana対応版を使ってみたい

×