CodeZine(コードジン)

特集ページ一覧

ネットワーク仮想化ソフトウェア「MidoNet」(実践/前編)
~OpenStackとMidoNetのインストール

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所 第24回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2016/02/15 14:00

目次

MidoNetのインストール

 続いて、こちらのインストールガイドに従い、MidoNetをインストールします。インストールは、以下の手順で行っていきます。

  1. NSDBホスト
    1. yumリポジトリの設定
    2. OpenJDK 1.7のインストール
    3. Apache Zookeeperのインストールと設定
    4. Apache Cassandraのインストールと設定
  2. 管理ホスト
    1. yumリポジトリの設定
    2. MidoNet Clusterのインストールと設定
    3. python-midonet-clientのインストールと設定
  3. ハイパーバイザホスト1、2
    1. yumリポジトリの設定
    2. OpenJDK 1.8のインストール
    3. Midolmanのインストールと設定
  4. ゲートウェイホスト
    1. yumリポジトリの設定
    2. OpenJDK 1.8のインストール
    3. Midolmanのインストールと設定
    4. 外部ネットワークのルータ相当を作成 (この操作は直接MidoNetとは関係ありませんが、ここで実施することにします)

 沢山手順があるように見えますが、パッケージで配布されているものを利用でき、実際はyumでインストールして少し設定ファイルを編集するだけなので、さほど時間は掛かりません。

 ソースコードからビルドする場合は、それなりに性能のあるマシンと、ある程度時間が必要です。

NSDBホスト

 最初に、NSDBを準備します。

Apache Cassandra用 yumリポジトリの設定

 Apache Cassandraのインストールを行うためのリポジトリを設定します。

/etc/yum.repos.d/datastax.repo
[datastax]
name=DataStax Repo for Apache Cassandra
baseurl=http://rpm.datastax.com/community
enabled=1
gpgcheck=1
gpgkey=https://rpm.datastax.com/rpm/repo_key

 Apache ZookeeperはMidoNetのリポジトリからインストールしますので、その設定を行います。

/etc/yum.repos.d/midonet.repo
[midonet]
name=MidoNet
baseurl=http://builds.midonet.org/midonet-5/stable/el7/
enabled=1
gpgcheck=1
gpgkey=http://builds.midonet.org/midorepo.key

[midonet-misc]
name=MidoNet 3rd Party Tools and Libraries
baseurl=http://builds.midonet.org/misc/stable/el7/
enabled=1
gpgcheck=1
gpgkey=http://builds.midonet.org/midorepo.key

 リポジトリ設定後、更新を行います。

リポジトリ情報の更新
$ sudo yum update -y
OpenJDK 1.7のインストール

 NSDBで利用するミドルウェアではOpenJDK 1.7を使用しますので、OpenJDK 1.7をインストールします。

java-1.7.0-openjdkインストール
$ sudo yum install -y java-1.7.0-openjdk
$ sudo mkdir -p /usr/java/default/bin/
$ sudo ln -s /usr/lib/jvm/jre-1.7.0-openjdk/bin/java /usr/java/default/bin/java
Apache Zookeeperのインストール

 NSDB用にApache Zookeeperをインストールします。

zookeeperインストールと動作確認
$ sudo yum install -y zookeeper

 インストールが完了したら、zookeeperの設定ファイルにZooKeeperアンサンブル(クラスタ)の設定を追記します。今回はこの1台のみでNSDBを構築しますが、複数ある場合はここにserver.*の形で複数記述します。

/etc/zookeeper/zoo.cfg
(省略)
server.1=10.170.9.10:2888:3888

 また、zookeeperが永続データを保存するdataディレクトリを作成しておきます。

zookeeperのdataディレクトリ作成
$ sudo mkdir /var/lib/zookeeper/data
$ sudo chown zookeeper:zookeeper /var/lib/zookeeper/data

 最後に、サーバの識別子を設定します。今回はこの1台のみでNSDBを構築しますが、複数ある場合はここが2、3、……となります。

/var/lib/zookeeper/data/myid
1

 編集が終わったら、zookeeperを有効にし、起動します。

zookeeperの有効化と起動
$ sudo systemctl enable zookeeper.service
$ sudo systemctl start zookeeper.service
Apache Cassandraのインストール

 NSDB用にApache Cassandraをインストールします。この手順で利用するcassandraのバージョンは、記事執筆時点で2.0(最近は2.2)です。

cassandraのインストール
$ sudo yum install -y dsc20

 インストールが完了したら、設定ファイルを編集します。listen_address、rpc_address、seedsにホストのIPアドレスを設定します。 今回はこの1台のみでNSDBを構築しますが、複数ある場合はseedsにカンマ区切りで複数のIPアドレスを指定します。

/etc/cassandra/conf/cassandra.yaml
(省略)
cluster_name: 'midonet'
(省略)
listen_address: 10.170.9.10
(省略)
rpc_address: 10.170.9.10
(省略)
          - seeds: "10.170.9.10"

 編集が終わったら、cassandraを有効にし、起動します。 systemctl enableで警告が出ますが、これはcassandraがsystemdに完全に対応していないためであり、この処理はchkconfigにリダイレクトされるため、問題はありません。

cassandraの有効化と起動
$ sudo systemctl enable cassandra.service
$ sudo systemctl start cassandra.service
留意点

 Cassandraをインストールした際に/var/run/cassandraが作成されますが、/varをtmpfsにしている場合、サーバを再起動するとこのディレクトリは消えてしまいますので、その場合は起動スクリプトにディレクトリを再作成する処理を追加しておきます。

/etc/init.d/cassandra
(省略)
case "$1" in
    start)
        # Cassandra startup
        echo -n "Starting Cassandra: "
        mkdir -p /var/run/cassandra
        chown cassandra:cassandra /var/run/cassandra
(省略)

管理ホスト

yumリポジトリの設定

 MidoNet、およびMidoNet Neutron Pluginをインストールするためのyumリポジトリを設定します。

/etc/yum.repos.d/midonet.repo
[midonet]
name=MidoNet
baseurl=http://builds.midonet.org/midonet-5/stable/el7/
enabled=1
gpgcheck=1
gpgkey=http://builds.midonet.org/midorepo.key

[midonet-openstack-integration]
name=MidoNet OpenStack Integration
baseurl=http://builds.midonet.org/openstack-kilo/stable/el7/
enabled=1
gpgcheck=1
gpgkey=http://builds.midonet.org/midorepo.key

[midonet-misc]
name=MidoNet 3rd Party Tools and Libraries
baseurl=http://builds.midonet.org/misc/stable/el7/
enabled=1
gpgcheck=1
gpgkey=http://builds.midonet.org/midorepo.key

 設定が完了したら、パッケージの更新を行います。

パッケージの更新
$ sudo yum clean all
$ sudo yum upgrade -y
$ # 必要に応じて再起動してください
$ sudo reboot
MidoNet Clusterのインストールと設定

 MidoNet Clusterをインストールします。

MidoNetClusterのインストール
$ sudo yum install -y midonet-cluster

 MidoNet Clusterのインストールが完了したら、/etc/midonet/midonet.confにZookeeperを参照する設定を記述します。

/etc/midonet/midonet.conf
[zookeeper]
zookeeper_hosts = 10.170.9.10:2181

 次に、mn-confコマンドでMidoNet Clusterに対し、ZookeeperとCassandraの設定を行います。 現在のMidoNet(v5.0)はmn-confでクラスタ内に設定情報を保持するため、過去のバージョンでMidolmanの設定ファイルであったmidolman.confなどには接続先であるZookeeperホストの指定だけが残っており、他には記述しない形となっています。

MidoNetClusterの設定
$ cat << EOF | mn-conf set -t default
zookeeper {
    zookeeper_hosts = "10.170.9.10:2181"
}
cassandra {
    servers = "10.170.9.10"
}
EOF
$ echo "cassandra.replication_factor : 1" | mn-conf set -t default
$ cat << EOF | mn-conf set -t default
cluster.auth {
    provider_class = "org.midonet.cluster.auth.keystone.v2_0.KeystoneService"
    admin_role = "admin"
    keystone.tenant_name = "admin"
    keystone.admin_token = "<answerfileに記述されたCONFIG_KEYSTONE_ADMIN_TOKENの値>"
    keystone.host = 10.170.9.6
    keystone.port = 35357
}
EOF

 mn-confコマンド実行時、「Installing config key that was not found in the schema: ……」、といった旨のメッセージが表示されますが、値の初回設定時に表示されるメッセージであるため、問題はありません。 また、今回はcassandra.replication_factorは簡略化のため1としてあります。

 設定が完了したら、MidoNet Clusterを再起動します。

MidoNetClusterの再起動
$ sudo systemctl restart midonet-cluster.service
midonet-cliのインストールと設定

 midonet-cliのインストールを行います。midonet-cliは、仮想ネットワークを操作するMidoNet APIをラッピングし、コマンドラインから実行できるようにするツールです。

midonet-clientのインストール
$ sudo yum install -y python-midonetclient

 次に、midonet-cliが利用する~/.midonetrcを設定します。 今回はOpenStackと連携するため、Keystoneで認証を行います。

~/.midonetrc
[cli]
api_url = http://10.170.9.6:8181/midonet-api
username = admin
password = <answerfileに記述されたCONFIG_KEYSTONE_ADMIN_PWの値>
project_id = admin

 ここまでの設定が完了したら、midonet-cliが実行できますので、動作を確認します。

midonet-cliが実行できることを確認
$ midonet-cli
midonet>

 問題なくmidonet-cliが動作することが確認できました。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:近未来の技術トレンドを先取り! 「Tech-Sketch」出張所

もっと読む

著者プロフィール

  • 村木 暢哉(TIS株式会社)(ムラキ マサヤ)

    TIS株式会社 戦略技術センター所属。 以前はアプリケーション・ミドルウェア開発のエンジニアでしたが、紆余曲折を経て、現在はSoftware Defined Networking/Software Defined Infrastructureの研究開発を主に担当しています。 知らないことばかりで...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5