LoginSignup
2
2

More than 5 years have passed since last update.

Mirantis vmware-dvsドライバによるOpenStack + VMwareのネットワーク統合

Last updated at Posted at 2015-12-25

vmware-dvsとは

https://github.com/Mirantis/vmware-dvs
Mirantisが開発を行っているVMware vSphere用のML2(MoudleLayer2)のメカニズムドライバの一つだ。ご存じのとおりML2はメカニズムドライバを変更することでネットワークの実装部分を変更する事ができる。おおよその人たちは、1度はOpen vSwitchの設定をしただろう(昨今はLinuxBridge?)。それに追加してこのvmware-dvsドライバを入れることで、VMware vSphereでのネットワーク構築、またOpenvSwitchと連携してKVM等他ハイパーバイザの混在環境を作成できる。

一般的に、ESXiをハイパーバイザとした場合にはVMware NSXなどのSDN製品が必要になったりするが、高価であったり、試用ができなかったりと敷居が高い。しかしこのドライバであれば、vSphere Distributed Switchが使える環境であれば問題ない、vSphere Enterprise Plusがあれば利用が可能である。この製品はMy VMwareに登録すれば60日間試用が可能だ。

基本的な動きは、OpenStackでネットワーク作成->Distributed SwitchにPortGroupを作成、OpenStackでサブネット作成->PortGroupにVLANを設定する、という単純なフローとなる。

検証環境

20151225162809.png

(様々な検証を行っていたので、ごちゃごちゃしていてすみません。。。)

全てvSphere上のVMを用いてOpenStackを構築した。OpenStackはController1台とComputeとNetworkの兼任(Compute自身にVMを立てるわけでは無いので負荷が低いため)が1台、vSphere上にnovaを経由してVMを立てるためのマシンが1台となる。このVMを立てるマシンには、Distributed Switchを設定してある。

各OSはCentOS 7.0を使い、OpenStackのLibertyをPackStackを使ってデプロイした。その際、VMware環境がハイパーバイザであること、ネットワークとしてVLANを用いることをanswerファイル(PackStackにおける構築設定)に記入した。

vmware-dvsの導入

無事OpenStackが入れ終わったらvmware-dvsを導入する。導入方法自体はリポジトリ内のINSTALL.rstに書かれている。

Controllerへのインストール

pipとgitを用いてインストールする。(CentOS7.0ではデフォルトでは入っていないのでyumで入れておく)
# pip install git+git://github.com/Mirantis/vmware-dvs.git@liberty
行末に@libertyを追加することでLibertyブランチを指定している。
ここで依存関係等でERRORが出たりするので適切に処理する。(setuptoolsやsixが古いなどでERRORが出た)

また、ml2_conf.ini、neutron.confの設定をする。

/etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
...
type_drivers = vlan
tenant_network_types = vlan
mechanism_drivers =openvswitch, vmware_dvs

[ml2_type_vlan]
...
network_vlan_ranges = physnet1:1000:2999

[ml2_vmware]
vsphere_hostname = vcenter.openstack.local
vsphere_login = <vSphereのユーザ名>
vsphere_password = <vSphereのパスワード>
network_maps = physnet1:DSwitch-Compute

type_driversnetwork_vlan_rangesはデプロイ時に設定されているはずなので、あくまで確認。mechanism_drivers[ml2_vmware]のセクションの追記をする。network_mapsvlan_rangesが複数あればカンマ区切りで追加する。

/etc/neutron/neutron.conf
[DEFAULT]
...
nova_admin_tenant_name = <nova admin tenant name>
nova_admin_username = <nova admin user name>
nova_admin_password = <nova admin password>
nova_admin_tenant_id = <nova admin tenant_id>

notification_driver = messagingv2
notification_topics = notifications,vmware_dvs

nova_admin_*は設定されてるか確認、notification_*の行を設定する。

実はnova_admin_*の表現は古いものであり、Liberty以降で新しい設定になった模様。ただ、このままではvmware-dvsが動かない。PackStackでデプロイするとこの設定になってしまうし、リファレンスで新しい設定も見つけられず、vmware-dvsの一部ソースを変更することにして対応した。

/usr/lib/python2.7/site-packages/mech_vmware_dvs/compute_util.py
    params = dict(
         #元々のソース 42行目~
         #username=cfg.nova.username,
         #api_key=cfg.nova.password,
         #project_id=cfg.nova.tenant_name,
         #auth_url=cfg.nova.auth_url+”v2.0/”,

         #変更点ここから
         username=cfg.nova_admin_username,
         api_key=cfg.nova_admin_password,
         project_id=cfg.nova_admin_tenant_name,
         auth_url=cfg.nova_admin_auth_url,
         #変更点ここまで
         bypass_url=bypass_url,
    )

Computeへのインストール

ComputeではNovaにパッチを当てる必要がある(patchはCentOS7.0では入っていないのでyumで入れておく)。nova.patchはvmware-dvsのリポジトリにあるのでそこから入手する。

patch -p1 -d /usr/lib/python2.7/site-packages/ < nova.patch

これでドライバの導入は完了。各コンポーネントをrestartするなり、マシンごとリブートして、導入したドライバが使えるようにする。

デモ

ネットワークの作成

Horizonからネットワークの作成を行った。
20151225175124.png
OpenStack上で作成したネットワークのIDと同じ名前のポートグループがDistributed Switchに作成されている事がわかる。またVLAN IDが設定され、説明にはManaged By Neutronとなっていることも確認できる。

インスタンスを接続

インスタンスを新しく作成し、先ほど作成したネットワークに接続してみた。
20151225181028.png
インスタンスが作成したネットワークに接続されたことが確認できた。

所感

SDN製品を使ったり、OVSvAppVMware Integrated OpenStackなどを使うのに比較して、手軽にVMware vSphere込みのOpenStack環境を作ることができます。現状は開発中のため若干不安定なところはありますが、今後もFW機能等も増えてくる模様です。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2