日本OpenStackユーザ会(Neutron deep dive)に参加してきた

第20回の日本OpenStackユーザ会(Neutron deep dive)に参加してきた際のメモです。 当日取ったメモなので荒いです。

日本仮想化技術さんのセミナーにも参加しました。 OpenStack最新情報セミナー@渋谷に参加してきた | komei.com

12/1 Openstackユーザ会 19:00~

http://connpass.com/event/9958/

↑中井さん資料はこちらにアップされています

Agenda

  • 19:00 - 19:10 これまでのNeutron 中井 悦司
  • 19:10 - 19:50 DVR 真壁 徹
  • 20:00 - 20:40 L3-HA(VRRP) 織 学
  • 20:40 - 21:20 Midonet 中井 悦司
  • 21:20 - 21:30 Midonet OSS版に関するデモとコミュニティ紹介 杉原 智衛

Openstackの復習

  • たった10分で簡潔にわかりやすく説明。すごい。
    ※中井さん執筆のOpenstack入門を記事の下に紹介していますので是非読んでみてください(勝手に宣伝)

  • P7にコンポーネントがわかりやすく書いてある

  • テナントのネットワークは家庭内LANをイメージしてみると良い。

  • L3機能はL3Agent、L2機能はL2Agent。

  • 一番使われるのがOVSPlugin(標準プラグイン)。シンプル。 トンネルインタフェースが1対1で作成されるなど、大規模環境ではパッと見複雑。

  • icehouseまでは仮想ルータが1台のノードに集約されてしまう。 JunoからはHA(VRRP)とDVRに対応。後のセッションで説明あり。

  • P11、P12がわかりやすい。

  • どこにAgentがいるかはプラグインの実装次第

  • P14のよく見る図の最初は中井さんが作ったらしい。

  • OVSの内部のVLANはOVSが独自でアサインするので、内部と外部のVLANは変換処理が入っている。

  • ComputeNodeはOVSの裏にスイッチがいる。NetworkNodeは仮想ルータ(NAT&フィルタリング)

DVR

  • DVRではHPが大きく貢献。発表はHPの真壁さん。

NetworkNodeの課題

  • 単一障害点になる
  • トラフィックフローが無駄
  • 負荷的に無理

    → ComputeNodeへ分散配置したい

  • オープンソースPluginの利用率は高い Summit Parisのアンケート結果ではOVS、Nova-network、LinuxBridge、ML2

DVRとは

Network Nodeに集中していたL3処理をCompute Nodeで分散処理する

  • Junoから
  • ML2Plugin+OVS
  • VXLANでもGREでも
  • Non-DVRモードもある

DVRの正体

・L3
Linuxのnamespaces(テナント毎)+iptables(Node毎)   ・L2 Openvswitch
br-int br-tunへDVR関連ルールを書き込む。DVR-MACアドレスを活用してフロー制御 L2 PopulationがARPテーブルへ他ノードVMMACアドレスを登録    

DVS設定方法

Neutron router-create --distributed=true

・l3_agent.ini

compute agent_mode = dvr

network agent_mode = dvr_snat

・ml2_conf.ini

mechanism_drivers = openvswitch,l2population

DVRのフロー

送信側ノードはIR(InternalRouter)を通る。受信側ノードはIRを通らないがローカルから受信したようになる

 1.Defaul Gatewayへ送信。IR。

 2.ARPテーブル見てDstMACをセット

 3.VXLANの旅支度とDVR-MACの指定(オリジナルのsrc)

 4.VNIを外す。内部VLANのタグを頭にくっつける。

 5.br-intでDVR-MACを変換しIR-Bが送信したようにする  

その他

  • Floating IPもDVR経由

  • SNATはNetworkNode経由になってしまう。。。技術的には可能だが、監査の観点とIP消費の観点で見送りとのこと。

  • DVRはComputeNodeにL3Agent+OVSAgentにDVR Logicが入る

  • DHCPAgentはNetworkNodeに残る。複数起動。  

  • DVRRouterとHARouterは統合される予定(今は排他)

  • technical deptの返済   ○Neutron L3HA

  • L3HAはDVRより簡単です

  • 仮想ルータはどこか一つのノード上で起動する

HA機能が出てくるまで

  • allow_automatic_l3agent_failover=ture
    Juno以降、フェイルオーバーに時間がかかる

  • eNovance(別リポジトリ
    Grizzly以降で使用可能。これも時間かかる

  • Pacemacker
    大変

L3HAの仕組み

  • keepaliveddです

  • RPCレイヤーから独立

  • VRRPハートビートネットワークを作成 neutorn router-createするとハートビート用のネットワークできる。テナントで一つ。

  • HAはVLANでもいける

  • br0intにha-XXXというポートができる。そこでハートビート。

  • qrouter-xxxのNamespaceでKeepalivedが動く

  • 8bit制約の256個まで。

  • セッションは引き継がない

  • DVRとは排他

  • XXaasと統合は現時点で未サポート

L3HAの改良予定

  • どれがマスターかわかりにくい
  • 手動フェイルオーバー
  • L2population

L3HA マスターの確認方法

  • ip listでVIPがついているもの

  • /var/lib/neutron/ha_confs/xxxの中身 タイミングで両方マスターに見える(??)

  • non-HA構成で作ったルータをHA構成に変更できるか? → マニュアル通りできなかった

Midonetの話

  • Openflowプロトコルは使っていない

  • OVSのフローテーブルはカーネル。MidonetはカーネルモジュールはOVSから借りているので

  • フローテーブルは使用する。Midonetエージェントが直接書き換え。

  • GREでデモ。

  • OVSの場合、大量にトンネル用のポートができる。

  • mm-dpctlとかの紹介

  • neutronからすると管理サーバがDHCP Agent L3Agent L2Agent全部やっているように見える

  • ComputeNodeを出た時点でFloatingIPにNATされている。midonetのNWに入った時にAgentが処理

  • zkdumpを打ってみるとよいかも

  • tunnel idはいつ作られるの?  →VMが作られたとき。どこにいてどのIPに送るかを決めて付与  

Midokuraオープンソースになったよ

最後に

  • OpenstackSummitは有償だけど意義がある!
  • スピーカーやコントリビュータになれば無償参加できる。

  • UpstreamTraining

  • Openstack Days Tokyo 2015

  • 次回の勉強会はNeutronとかコンテナ系も検討


シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。

このエントリーをはてなブックマークに追加

Deploying OpenStack

Deploying OpenStack