OpenStack Grizzly構築 on Wheezy (9) ネットワーク作成

ひととおりコンポーネントの設定が終わったところで、ネットワークの作成を行います。

ここは組みたい構成によってちょこちょこ内容が変わるので、1つの参考にしていただけると。



構成について

絵は面倒くさいので箇条書きで説明します。

  • adminプロジェクトが全体で1つのルータを持ちます
  • adminプロジェクトは外部ネットワークを持ち、ルータのExternalG/Wとします
  • adminプロジェクトは内部ネットワークを持ち、ルータに紐付けます
  • 一般プロジェクトは内部ネットワークを持ち、同じルータに紐付けます
  • 外部ネットワークのG/WアドレスをControllerNodeに割り当て、内部ネットワークへのルーティングをルータのG/Wに送ることで、Linux Network Namespaceを介さず内外を疎通します

  • 今回の構成・運用で重要なポイントは、いわゆるFloatingIPはVMに割り当てないというところです。外部ネットワークは外部との通信を行なうためのG/Wに過ぎません。その代わり、外部からVMへの接続は、NovaSecurityさえ通せばNamespaceを介さずに通る経路設定にしています。

    当初は複数ルータにしてみたり色々挑戦したのですが、複数ルータが難しかったり、(言い訳がましいですが)実際の運用を考慮するとルータは1つで十分だったりしたので、このような構成になりました。


    管理プロジェクト用ネットワーク作成

    ここでいう管理プロジェクトとは、adminプロジェクトのことをさしています。adminプロジェクトは運用時はほぼ触りませんが、外部ネットワークを保持させたり、VMイメージを保管したりと重要な役割を持たせて運用しています。

    プロジェクト

    プロジェクトIDを変数に格納しておきます。

    ルータ作成

    最も重要なルータを作成しますが、quantum router-create で作った段階ではLinux Network Namespace(ip netns)ができません。netnsがないと続き何をしても動かないので、quantum-l3-agent restart を実行してnetnsができるのを確認します。reboot時は問題なく作成されるので、軽いバグということで。

    内部ネットワーク作成

    ネットワーク、サブネットと作って、ルータに紐付けます。

    ネットワーク

    サブネット
    ちょっとしたメモです。
  • DHCPのIPアドレスが、アドレス範囲のstartと同じアドレスになっていなかったら何かおかしいので作りなおしたほうがよいです
  • DHCPの ip netns ができなかったら quantum-dhcp-agent restart が必要です
  • dnsmasqプロセスの –interface は tap*** の方が普通っぽいので、dhcp_agent.ini の #ovs_use_veth = True はコメントアウトのままがよさそうです
  • ルータと内部ネットワークを紐付け
    quantum router-interface-add を実行すると、Namespace内のルーティングに
    -net 172.30.0.0/22 gw 0.0.0.0 が作成されます。

    外部ネットワーク

    全プロジェクトが共有する外部ネットワークを、adminプロジェクトに作成します。

    ネットワーク

    サブネット
    今回はFloatingIPはVMに割り当てませんが、必要に応じてネットワーク範囲を決めます。
    DHCPは不要なのでFalseにしています。

    ゲートウェイ
    ルータのG/Wに設定します。
    こうすることで、NamespaceのDefaultG/Wにルーティングが追加されるので、外部ネットワークへの経路が通ることになります。


    ホストOSとVMの経路

    外部ネットワークのG/WとなっているIPアドレスをControllerに割り当て、
    VMネットワークへの経路をルータG/Wに送ることで、内外部を疎通します。

    /etc/network/if-pre-up.d/openstack

    実行しておきます(OS起動時は自動で実行されます)。

    OpenStackと全く関係ないところからVMに接続したい場合、ルータG/Wに対してFORWARD&ルーティングするとNamespace関係なしに綺麗に利用できます。ControllerNodeの通常のStaticAddressに対してルーティングすると、一見動きますが、VM -> 外部サーバ への通信で復路が返ってこなかったりと不安定になるので注意が必要です。



    一般プロジェクト用ネットワーク

    ルータ、外部ネットワークは作らず、外部接続はadminプロジェクトのルータにおんぶにだっこです。


    VM作成

    あとはHorizonでVMを作成し色々確認します。
  • ControllerNode内のVM同士の通信
  • DNSサーバへの通信・名前解決
  • 外部サイトへの通信
  • 外部プライベートサーバからVMへの通信
  • など。


    ネットワーク周りは一度崩れると、いったん全部削除して作りなおすハメになったりします。
    安定して運用に入るために、理解・納得いくまでキッチリやっておくべきことろだと思います。

    私は何十回、丸ごと作りなおしたかわかりません・・・大変だったなぁ・・・しみじみ。