OpenStackのアーキテクチャを見てみる


まずは書き出して眺めてみよう

OpenStack.orgのサンプルアーキテクチャを参考にします

こないだの記事と合わせて読んでなんぼになります。
まずはNeutronを用いた最小のサンプル

  • コンピュートノード
    KVM
    Open vSwitch
    Compute
    Networking ML2 Plugin
    Networking Open vSwitch Agent

  • ネットワークノード
    Open vSwitch
    Networking ML2 Plugin
    Networking Open vSwitch Agent
    Networking L3 Agent
    Networking DHCP Agent
    Networking Metadata Agent

  • コントローラノード
    SQL データベースサービス
    Message Queue
    Network Time Service
    Identity
    Image Service
    Compute Management
    Network Management
    Networking ML2 Plugin

では続いて前回参考にしたサンプルケースから、各ノードにインストールしたパッケージを並べて見まする

  • コンピュートノード
    Nova:Nova-compute-quem
    Neutron:neutron-plugin-ml2
    neutron-plugin-openvswitch-agent
    Ceilometer:ceilometer-agent-compute

  • ネットワークノード
    Neutron:neutron-plugin-ml2
    neutron-plugin-openvswitch-agent
    neutron-l3-agent
    neutron-dhcp-agent
    Open vSwitch:openvswich-switch
    vlan
    bridge-utils

  • コントローラノード
    MySqlServer
    RabbitMQ Server
    Memcached
    MongoDB
    Keystone
    Nova:nova-api
    nova-scheduler
    nova-conductor
    nova-spiceproxy
    nova-consoleauth
    Glance:glance-api
    glance-registry
    Cinder:cinder-api
    cinder-scheduler
    cinder-volume
    Neutron:neutron-server
    Ceilometer:ceilometer-api
    ceilometer-collector
    ceilometer-agent-central
    ceilometer-agent-notification
    ceilometer-agent-evaluator
    ceilometer-alarm-notifier
    Heat:heat-api
    heat-api-cfn
    heat-engine
    Horizon

並べてみるとこんな感じです。

次はOpenStack.orgに戻って、レガシーネットワーク(Nova-Network)を用いた最小構成アーキテクチャです。

  • コンピュートノード
    KVm
    Compute
    Compute Networking

  • コントローラノード
    SQL Database service
    Message Queue
    Network Time Service
    Identity
    Image Service
    Compute Manage

こんな感じで、レガシーネットワークを用いたケースは2台構成となっていました。過去にレガシーネットワークを使った時は1台で構築できました。
Neutronを利用するには3台必要なのでしょうか。
1台で構築する場合、レガシーネットワークでないといけないのでしょうか。

Neutronについて少し調査

レガシーネットワーク(Nova-Network)はOpenStack初期から利用されていて、枯れた技術と言えるほど情報も豊富である。しかし、これからのトレンドはNeutronとなるので、押さえるべきはNeutronらしい。

OpenStackはマルチテナントで、各テナントに対してネットワークを提供することが可能。

テナント分離というのは、各テナントにたいして完全に独立したネットワーク環境を用意することが可能。
たとえば全てのテナントで192.168.0.1/24というネットワークを使う事が可能ということ。

重複した各テナントが外部と通信するにはNAT処理の可能なルーターが必須。
あと、独自のDHCP、DNSが必要となってくる。

これらをソフトウェアで実現するのがNeutronだ。

マルチノード構成の場合、コンピュートノードとネットワークノードがGreトンネルでつながって通信をするという事になるようです。読んでみた感触だと、シングルノードでもNeutronを採用してオールインワンのOpenStack環境ができるんじゃないかなぁという気がしますがどうなんでしょうか。

Nova-networkはHavanaで非推奨 > Icehouseで一旦解除。というのもFlatDHCPなどのマイグレーションバスが欠如していたらしい。ネットワークを作っている時にFlatでセットアップがエラーでできなかったのはこの辺が起因しているのでしょうか。
もしそうなんだったら1台では作れないのかな?
うーん。難しいです。
サンプルからして基本的には複数台〜大規模なサーバーでクラウド環境を作るようなので、1台にこだわるのもおかしな話なんだがね。

以前よりネットワークまわりの疑問点が増えた

OpenStack Grizzlyの時はフローティングIPを用意して、各ローカルIPを割り当てればそのまま使えたし、まぁまぁなんとか動いていたものの、今回のIcehouceは(というよりもOVSとかSDNかな?)難しいね。

RubyのStudyでも、ひと通り進んだのでSocketなんかの話がちらほら出てきましたが、それはまたプロトコルの話になっちまうので、Let's Enjoyしながらネットワークの学習ができるような、何かいいアイデアはないかなぁっと。

OVS RubyとかOVS Pythonとかでぐぐると色々でてくるようなので、この辺から探っていこうかなぁっと。

Similar Posts:


Leave a Reply

Your email address will not be published. Required fields are marked *