*

RDOを使用したOpenStack+MidoNet環境のインストール

公開日: 最終更新日:2015/08/03  |  By  |  midonet, OpenStack, OSS, RDO, SDN

ビットアイル総合研究所 田波です。

今回は以前紹介したRDOを使用して、OpenStack+MidoNetを導入する手順を紹介します。
RDOのインストール方法は以前の記事「RDOを使用したOpenStack Juno環境の構築」で紹介しておりますので、そちらも併せてご覧ください。

以下公式サイトにRDO+MidoNetの手順が紹介されていますが、1台構成のみの手順の為、今回は3台構成での手順を紹介したいと思います。

MidoNet integration – RDO

MidoNetとは

MidoNetはミドクラが作った、オープンソースのクラウドIaaS向けネットワーク仮想化プラットフォームです。
OpenStackと組み合わせることで、デフォルトのNeutron ML2 Pluginとは異なり、分散仮想ルート等の機能が使用可能になります。

詳細は下記の公式サイトをご参照ください。

MidoNetの概要 – ミドクラ

MidoNetは2014年11月にオープンソースとなっており、今回は無償版を使用してみたいと思います。

RDOを使用したOpenStackインストール

まずはOpenStack環境を構築します。

今回は構成を少し変更して下図のような3台構成のOpenStack環境を構築します。

簡易構成図

尚、OSは全てCentOS7.1を使用しています。

こちらの記事を参考に、パッケージ「openstack-packstack」をインストールし、設定ファイル(answers)を作成してください。

今回は設定ファイルの下記箇所を修正します。

CONFIG_COMPUTE_HOSTS=computeのIP
CONFIG_NETWORK_HOSTS=gatewayのIP
CONFIG_STORAGE_HOST=controllerのIP
CONFIG_AMQP_HOST=controllerのIP
CONFIG_MARIADB_HOST=controllerのIP

設定ファイルの修正が完了したら、packstackコマンドを使用してOpenStack環境をインストールします。
これだけだとOpenStackのNWでPluginはML2PluginというPluginが使用されています。
こちらのPluginをMidoNetPluginへ変更していきたいと思います。

レポジトリの追加等の事前作業

続いて、MidoNetを導入する際に必要となるレポジトリを追加します。
下記2つのファイルを作成してください。

# DataStax (Apache Cassandra)
[datastax]
name = DataStax Repo for Apache Cassandra
baseurl = http://rpm.datastax.com/community
enabled = 1
gpgcheck = 0
gpgkey = https://rpm.datastax.com/rpm/repo_key
[midonet]
name=MidoNet
baseurl=http://repo.midonet.org/midonet/v2015.03/RHEL/7/stable/
enabled=1
gpgcheck=1
gpgkey=http://repo.midonet.org/RPM-GPG-KEY-midokura

[midonet-openstack-integration]
name=MidoNet OpenStack Integration
baseurl=http://repo.midonet.org/openstack-juno/RHEL/7/stable/
enabled=1
gpgcheck=1
gpgkey=http://repo.midonet.org/RPM-GPG-KEY-midokura

[midonet-misc]
name=MidoNet 3rd Party Tools and Libraries
baseurl=http://repo.midonet.org/misc/RHEL/7/misc/
enabled=1
gpgcheck=1
gpgkey=http://repo.midonet.org/RPM-GPG-KEY-midokura

作成が完了したら、下記コマンドを実行します。

sudo yum clean all
sudo yum upgrade

また、各ノードが名前解決できるよう、全てのノードのhostsに下記を追加します。

controllerのIPアドレス   controller
computeのIPアドレス   compute
gatewayのIPアドレス   gateway

RDO OpenStack設定変更~Controllerノード~

最初はControllerノードでの作業です。

まず、keystoneコマンドでmidonet用のサービス・ユーザを作成します。
コマンドはRDOインストール時に自動作成されたadminユーザにて実行してください。

keystone service-create --name midonet --type midonet --description "MidoNet API Service"
keystone user-create --name midonet --pass MIDONET_PASS --tenant services
keystone user-role-add --user midonet --role admin --tenant services

※MIDONET_PASSは任意の文字列に置換してください。

続いて、neutron.confを編集します。
変更1か所、コメントアウトが2ヶ所あります。

core_plugin = midonet.neutron.plugin.MidonetPluginV2
# service_plugins
# allow_overlapping_ips

次に、midonet Plugin用のconfigファイルを作成します。

mkdir /etc/neutron/plugins/midonet
[DATABASE]
sql_connection = mysql://neutron:NEUTRON_DBPASS@controller/neutron

[MIDONET]
# MidoNet API URL
midonet_uri = http://controller:8081/midonet-api
# MidoNet administrative user in Keystone
username = midonet
password = MIDONET_PASS
# MidoNet administrative user's tenant
project_id = services

※MIDONET_PASSは先程作成したmidonetユーザのパスワードに置換してください。
※NEUTRON_DBPASSはRDOインストール時のanswerファイル内の「CONFIG_NEUTRON_DB_PW」に記載された文字列と置換してください。

既存のplugin.iniファイルを削除し、シンボリックリンクを生成します。
また、NeutronDBを作成します。

rm /etc/neutron/plugin.ini
ln -s /etc/neutron/plugins/midonet/midonet.ini /etc/neutron/plugin.ini
/bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/midonet/midonet.ini upgrade juno" neutron

最後にいくつかのサービスのStart/Restart/Enableを実行し、Controllerノードでの作業は
ひとまず終了です。

systemctl restart openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service
systemctl enable neutron-server.service
systemctl start neutron-server.service

RDO OpenStack設定変更~Computeノード~

続いて、Computeノードでの作業です。
まずはqemu.confを修正します。

user = "root"
group = "root"
cgroup_device_acl = [
    "/dev/null", "/dev/full", "/dev/zero",
    "/dev/random", "/dev/urandom",
    "/dev/ptmx", "/dev/kvm", "/dev/kqemu",
    "/dev/rtc","/dev/hpet", "/dev/vfio/vfio",
    "/dev/net/tun"
]

一部パッケージのインストールと、サービスのStart/Restart/Disableを行う。

systemctl restart libvirtd.service
yum -y install openstack-nova-network
systemctl disable openstack-nova-network.service
systemctl restart openstack-nova-compute.service

次に、openstack-neutron-openvswitchのパッケージを削除します。

yum -y remove openstack-neutron-openvswitch

続いて、neutron.confを修正します。

# core_plugin =neutron.plugins.ml2.plugin.Ml2Plugin
# service_plugins
# allow_overlapping_ips

最後に、openvswitchを停止します。

systemctl disable openvswitch.service
systemctl stop openvswitch.service

RDO OpenStack設定変更~Gatewayノード~

最後にGatewayノード(OpenStackインストール時にNetworkノードとしてインストールしたノード)の設定を変更します。

まずは不要なパッケージを削除し、必要なパッケージをインストールします。

yum -y remove openstack-neutron-openvswitch
yum -y install openstack-neutron python-neutron-plugin-midonet

次に、neutron.confを編集します。

core_plugin = midonet.neutron.plugin.MidonetPluginV2
# service_plugins
# allow_overlapping_ips

続いてdhcp_agent.iniを編集します。

interface_driver = neutron.agent.linux.interface.MidonetInterfaceDriver
dhcp_driver = midonet.neutron.agent.midonet_driver.DhcpNoOpDriver
enable_isolated_metadata = True
# use_namespaces = True
[MIDONET]
# MidoNet API URL
midonet_uri = http://controller:8081/midonet-api
# MidoNet administrative user in Keystone
username = midonet
password = MIDONET_PASS
# MidoNet administrative user's tenant
project_id = services

※MIDONET_PASSは先程作成したmidonetユーザのパスワードに置換してください。

最後に、一部サービスを起動します。

systemctl enable neutron-dhcp-agent.service neutron-metadata-agent.service neutron-ovs-cleanup.service
systemctl start neutron-dhcp-agent.service neutron-metadata-agent.service

ここまででRDO OpenStackのインストール・設定変更が完了となります。
次にMidoNetのインストール作業に入りたいと思います。

MidoNet関連サービスのインストール

こちらの項目は全ノード共通の作業となります。
※個別の設定値の違いは存在します。

Zookeeperのインストール

まずは分散処理のためのコーディネートサービス「Zookeeper」をインストールします。

yum install zookeeper zkdump nmap-ncat

インストールされたZookeeperのコンフィグファイルを編集します。

server.1=controller:2888:3888
server.2=network:2888:3888
server.3=compute:2888:3888

各ノード毎にmyidファイルを作成します。

◆controllerノード
echo 1 > /var/lib/zookeeper/data/myid

◆gatewayノード
echo 2 > /var/lib/zookeeper/data/myid

◆computeノード
echo 3 > /var/lib/zookeeper/data/myid

/usr/java/default/binディレクトリを作成し、シンボリックリンクを作成します。
また、zookeeperのサービスを起動します。

mkdir -p /usr/java/default/bin
ln -s /usr/lib/jvm/jre-1.8.0-openjdk/bin/java /usr/java/default/bin/java
chkconfig zookeeper on
service zookeeper start

Zookeeperのインストールが問題なく終わっている場合、下記コマンドを実行すると「imok」とレスポンスが来るようになります。

echo ruok | nc 127.0.0.1 2181

Cassandraのインストール

続いて、NoSQLデータベースシステム「Cassandra」をインストールします。

yum install dsc20

次に、Cassandraのコンフィグファイルを修正します。

cluster_name: 'midonet'
- seeds: "controller,network,compute"

また、下記2項目に関しては、ノード毎に設定値が異なるのでご注意ください。

◆controllerノード
listen_address: controller
rpc_address: controller

◆gatewayノード
listen_address: network
rpc_address: network

◆computeノード
listen_address: compute
rpc_address: compute

cassandraを起動します。

service cassandra start
chkconfig cassandra on

次に、OracleJDKを/opt/にダウンロード・解凍します。
wgetでダウンロードする場合、ライセンス同意のCookieを挿入する必要があります。

cd /opt/
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz"
tar xzf jdk-7u79-linux-x64.tar.gz

alternativesコマンドを使用して、javaの標準コマンドを変更します。

alternatives --install /usr/bin/java java /opt/jdk1.7.0_79/bin/java 2
alternatives --config java
    /opt/jdk1.7.0_79/bin/javaを選択

続いてcassandra-env.shを編集します。

◆controllerノード
JVM_OPTS=”$JVM_OPTS -Djava.rmi.server.hostname=controller”

◆gatewayノード
JVM_OPTS=”$JVM_OPTS -Djava.rmi.server.hostname=network”

◆computeノード
JVM_OPTS=”$JVM_OPTS -Djava.rmi.server.hostname=compute”

最後にcassandraをrestartします。

service cassandra restart

Cassandraのインストールが正常に行えていた場合、下記コマンドで正常なレスポンスが返ってきます。
※下記はコマンド並びにレスポンス例です。

# nodetool -host 127.0.0.1 status
[...]
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens  Owns   Host ID                               Rack
UN  192.0.2.1  123.45 KB  256     33.3%  11111111-2222-3333-4444-555555555555  rack1
UN  192.0.2.2  234.56 KB  256     33.3%  22222222-3333-4444-5555-666666666666  rack1
UN  192.0.2.3  345.67 KB  256     33.4%  33333333-4444-5555-6666-777777777777  rack1

MidoNet API/CLIのインストール

MidoNetの設定作業を実施できるよう、今回はControllerノードにAPIとCLIの実行環境をインストールします。
※下記作業は全てControllerノードで実施します。

まずはapi用のパッケージをインストールします。

yum -y install midonet-api tomcat

続いてweb.xmlを編集します。

<context-param>
    <param-name>rest_api-base_uri</param-name>
    <param-value>http://controller:8081/midonet-api</param-value>
</context-param>

<context-param>
    <param-name>keystone-service_host</param-name>
    <param-value>controller</param-value>
</context-param>

<context-param>
    <param-name>keystone-admin_token</param-name>
    <param-value>ADMIN_TOKEN</param-value>
</context-param>

<context-param>
    <param-name>zookeeper-zookeeper_hosts</param-name>
    <param-value>controller:2181,network:2181,compute1:2181</param-value>
</context-param>

<context-param>
    <param-name>midobrain-properties_file</param-name>
    <param-value>/var/lib/tomcat/webapps/host_uuid.properties</param-value>
</context-param>

次にtomcatのsever.xmlに記載されているポート番号を編集します。

8080 ⇒ 8081

midonet-api.xmlを作成します。

/etc/tomcat/Catalina/localhost/midonet-api.xml

<Context
    path="/midonet-api"
    docBase="/usr/share/midonet-api"
    antiResourceLocking="false"
    privileged="true"
/>

最後にtomcatを起動すればapi設定は完了です。

systemctl enable tomcat.service
systemctl start tomcat.service

次にMidoNet CLIをインストールします。

yum install python-midonetclient

midonetrcファイルを作成します。

[cli]
api_url = http://controller:8081/midonet-api
username = admin
password = ADMIN_PASS
project_id = admin

※ADMIN_PASSはRDOで作成されたadminユーザのパスワードに置換してください。

Midolmanのインストール

最後に、ComputeノードとGatewayノードにMidoNetの分散型エージェント「midolman」をインストールします。
作業はComputeノードとGatewayノードで同様の内容となります。

まずはmidolmanをインストールします。

yum -y install midolman

midolman.confを編集します。

zookeeper_hosts = controller:2181,network:2181,compute1:2181

続いてNSDBへのアクセスを設定します。

echo << EOF | mn-conf set -t default
 > zookeeper {
 >     zookeeper_hosts = $CONTROLLER:2181,$NETWORK:2181,$COMPUTE1:2181
 > }
 >
 > cassandra {
 >     servers = $CONTROLLER,$NETWORK,$COMPUTE1
 > }
 > EOF

最後にmidolmanを起動します。

systemctl start midolman.service

以上でRDOを使用したOpenStack+MidoNet環境の導入が完了となります。

ここまでの作業では、OpenStack内部の通信は可能ですが、External Net(外部NW)を介して、物理環境の外へのアクセスができない状態となっております。

下図の緑色の四角の中はOpenStack環境なので、通常通りHorizon・apiから作成することが可能です。
青色四角内のルータがMidoNet Plugin独自のルータとなっており、このルータの作成・外部への接続を実施することにより、外部環境との通信が可能となります。

簡易論理構成図

以降の作業に関しては通常のMidoNetの設定作業となりますので、下記ページをご参照ください。
MidoNet Quick Start Guide
※MidoNet Host Registrationから先の作業が必要となります。

関連記事

no image

Pythonライブラリによる Swift の操作 ~ Swiftによるオブジェクトストレージシステムの構築(6)

by Yamagata 2013.03.14(Swift関連の記事の一覧はこちらをご覧ください)前回

記事を読む

tokyo2

OpenStack Summit in Paris (Day2)

by Ikuo Kumagai (@kumagai19o) 引き続き、OpenStack Su

記事を読む

oss_on_slshowcase

CentOS 6 から7へのアップグレード

この記事は OSS on SoftLayer Showcase  の OpenStack Juno

記事を読む

Rally-Actions

OpenStack Rally入門

RallyはOpenStackのプロジェクトの一つです。OpenStackのベンチマークツールと簡単

記事を読む

summittokyo

OpenStack Summit Tokyoのセッションへの投票をお願いします。

OpenStack Summit Tokyo のセッションへの投票が行われています。 弊研究所でも

記事を読む

no image

Grizzlyの新機能(1) ~ Swiftによるオブジェクトストレージシステムの構築(8)

by You Yamagata 2013.04.24(Swift関連の記事の一覧はこちらをご覧くださ

記事を読む

affinity_swift-get-node

Swift のグローバルクラスタ(2) affinity の設定

Swift のグローバルクラスタ(2) affinity 山縣です。Havana 版(1.10.0)

記事を読む

dpdk

OpenStack OVS VXLAN ネットワークの高速化

少し前の話になりますが、3月2日に開催された 日本仮想化技術株式会社様の OpenStack最新情報

記事を読む

no image

構成管理ツール「Ansible」のインストールと使用方法

ビットアイル総合研究所の田波です。 今回は構成管理ツール「Ansible」のインストール方法と

記事を読む

pattern1

OpenFlow スイッチとしてのOpen vSwitch の性能

by Hiroki Ide 2013/8/26Open vSwitch のカーネルモジュールがLin

記事を読む

no image

ビットアイル総合研究所は、クラウド技術に関する調査&研究を通して、社会と会社に寄与していくことを目的に、ビットアイル・エクイニクスの企業内研究所として2011年8月に設立されました。

openstack-figure1-2x
COHO DataStream のCinder連携

OpenStack Cinder のストレージバックエンドとしてはCe

blog-ocata
Jujuで Ocataを含む様々なバージョンのOpenStack をデプロイする方法

祝OpenStack Ocata リリース!! ということで、早速デプ

newton
Juju Manual Cloud で OpenStack 環境構築

本当にご無沙汰しております。 この投稿はOpenStack Adve

top
HACK! THE Juju/MAAS

6/8~6/10まで幕張メッセで開催されたInterop 2016。皆

dpdk
OpenStack OVS VXLAN ネットワークの高速化

少し前の話になりますが、3月2日に開催された 日本仮想化技術株式会社様

→もっと見る

PAGE TOP ↑