Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

OpenDaylight Helium SR3を試してみた 【OpenDaylight 「Helium」をインストールしてみよう】

こんにちは、こんばんは miyakeです :-)
GW開け早々、まだ5月なのに台風が来たり、真夏のような暑さになったりしているなか、いかがお過ごしでしょうか...

今回は「OpenDaylight Helium SR3を試してみた」の2回目、「OpenDaylight 「Helium」をインストールしてみよう」です。

http://www.opendaylight.org/sites/all/themes/opendaylight/ixm/images/logo_opendaylight.png

 前回:OpenDaylight 「Helium」 概要編
 今回:OpenDaylight 「Helium」をインストールしてみよう < イマココ
 次回:OpenDaylight 「Helium」でSDNを構築してみよう

インストール環境の準備

今回、OpenDaylight 「Helium」はCentOS7にインストールします。
DebianUbuntuの方は....ごめんなさい...
あと、最新のFedoraではOpenJDK1.7のパッケージが用意されていなかったので、出来るだけCentOS7にしてください。
試してはいませんが、CentOS6.5以降でも動作するはずです。

なお、ここではCentOS7のインストール手順は説明しませんので、WebからOSのインストール手順を調べて、VirtualBoxなどを使って仮想マシンを構築してCentOS7をインストールしてください。
CentOS7をインストールする際に出てくる「ソフトウェアの選択」の設定は、”最小限のインストール”のままでOKです。
ネットワークインタフェース(NIC)については1つで十分ですが、インターネットに接続できるようIPアドレスGatewayDNSの設定をしておいてください。

それから、OpenDaylightを実行するためのユーザを追加しておいてください。
rootユーザでもOpenDaylightを実行出来ますが、root権限でアプリケーションを実行するのも気持ち悪いので...

OSの準備ができたら、以下の手順でOpenDaylight をインストールするための準備を行います。
なお、以下の手順はyumでパッケージのインストールなどを行うので、root権限で実行してください。

yum update

まずはOSを最新の状態に更新します。

# yum -y update

SELinuxの無効化

open vSwitchのデータベースデーモン(ovsdb-server)との接続などに影響するので、SELinuxを無効化します。
完全に停止(Disabled)するのも抵抗があるので、ここではPermissiveに設定します。

まずはコマンドでPermissiveに設定します。

# setenforce 0
# getenforce
Permissive

OS再起動後もPermissiveになるよう、/etc/selinux/configの設定項目、SELINUXを、enforcingからpermissiveに変更します。

# vi /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=permissive <-- ここを変更する

...

OpenJDK、Mavenインストール

OpenDaylightはJavaで開発されているので、JDKのインストールが必要になります。
前回のブログにも書いていますが、OpenDaylightがまだJava8に対応できていないため、OpenJDK 7をインストールします。

インストールは以下のように行います。

# yum install java-1.7.0-openjdk

OpenJDKのインストールが終わったら、次はMavenのインストールです。
OpenDaylightインストールのところで説明するプラグイン(Feature)のインストールでは、裏でMavenが使用されているので、事前にMavenをインストールします。

# yum install maven

※会社など、Proxy経由でインターネットにアクセスしている環境では、MavenのProxy設定を行っていないと、OpenDaylightのプラグインインストールが出来ないので注意してください。

open vSwitchインストール

次回のSDN構築用に、事前にopen vSwitchをインストールしておきます :-)
通常、open vSwitchはリポジトリに含まれていないので、ソースコードからrpmパッケージをビルドしてインストールするのですが、ちょっと面倒なので、RDOリポジトリに登録されているopen vSwitchパッケージをインストールします。

[補足]
いきなり出てきたRDOですが、これはRedHat主体で運営している、RedHatディストリビューション用OpenStackコミュニティです。
OpenStackの仮想ネットワークの下回りはopen vSwitchがほぼ標準になっているので、RDOのリポジトリ(まぁ、厳密にはFedoraの下にあるのですが...)にパッケージとして登録されています。
※本気でOpenStackをサービスで使い始めると、open vSwitchでは性能が出ないので、他の手段を使う様になるんですけどね...

インストールは以下のように、RDOのリポジトリ情報を登録してから、open vSwitchのインストールを行います。

# yum install https://repos.fedorapeople.org/repos/openstack/openstack-juno/rdo-release-juno-1.noarch.rpm
# yum install openvswitch

インストールが完了したら、open vSwitchサービスの有効化と、起動を行います。

# systemctl enable openvswitch.service
# systemctl start openvswitch.service

open vSwitchサービスが正しく起動しているかどうかは、statusで確認します。

#  systemctl status openvswitch.service
openvswitch.service - Open vSwitch
   Loaded: loaded (/usr/lib/systemd/system/openvswitch.service; enabled)
   Active: active (exited) since 日 2015-05-17 16:55:09 JST; 2min 23s ago
  Process: 1555 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 1555 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/openvswitch.service

5月 17 16:55:09 ******.localdomain systemd[1]: Starting Open vSwitch...
5月 17 16:55:09 ******.localdomain systemd[1]: Started Open vSwitch.

ここで使っているsystemctlコマンドですが、CentOS6.x以前(RHEL6以前)を使用している人には馴染みがないかもしれませんが、CentOS7(RHEL7)からサービスの管理するシステムがSystemdに変更されたことに伴い、サービス管理コマンドがsystemctlに変更されています。
RHEL系で仕事をしていると、遅かれ早かれSystemdの洗礼を受けることになるので、今のうちに慣れておきましょう。

それでは以下のコマンドで、インストールされたopen vSwitchのバージョンを確認します。

# ovs-vsctl -V
ovs-vsctl (Open vSwitch) 2.3.1
Compiled Dec 26 2014 15:35:14
DB Schema 7.6.2

2.3.1は、最新のバージョン(http://openvswitch.org/releases/)をベースにビルドされているもののようなので、問題なさそうです :-)

OpenDaylight 「Helium」インストール

それではこれから、本命のOpenDaylight 「Helium」をインストールします。
なおOpenDaylightのインストールは、OpenDaylightを実行するユーザで行ってください。
※プロンプトが"#"から"$"になっていることに注意してください...

JAVA_HOMEの設定

OpenDaylightは、環境変数JAVA_HOMEで指定されているJavaJVM)を使用して起動します。
このため環境変数JAVA_HOMEを設定します。

$ export JAVA_HOME=/etc/alternatives/jre_1.7.0_openjdk

環境変数JAVA_HOMEの設定を、.bashrcに追加しておきます。

$ vi .bashrc

# .bashrc
....
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
export JAVA_HOME=/etc/alternatives/jre_1.7.0_openjdk  <-- 追加
....

OpenDaylightインストール

それではこれから、OpenDaylight「Helium」SR3をインストールします :-)

まずはOpenDaylightのサイトからイメージファイル(zip)をダウンロードしてから解凍します。
※ここではホームディレクトリに解凍していますが、ホームディレクトリ配下であれば、どこに解凍してもOKです

$ wget https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.3-Helium-SR3/distribution-karaf-0.2.3-Helium-SR3.zip
$ unzip distribution-karaf-0.2.3-Helium-SR3.zip
$ mv distribution-karaf-0.2.3-Helium-SR3 opendaylight 

これでOpenDaylight本体のインストールは完了です :-)
あとは、OpenDaylightを起動させて、SDNコントローラとしての基本的なプラグイン(Feature)のインストールを行います。
まずはOpenDaylightの起動です。

$ cd opendaylight
$ ./bin/karaf

    ________                       ________                .__  .__       .__     __
    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_
     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \<   |  ||  | |  |/ ___\|  |  \   __\
    /    |    \  |_> >  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  >   Y  \  |
    \_______  /   __/ \___  >___|  /_______  (____  / ____||____/__\___  /|___|  /__|
            \/|__|        \/     \/        \/     \/\/            /_____/      \/


Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown OpenDaylight.

opendaylight-user@root>

OpenDaylightの起動が完了すると、"opendaylight-user@root"というプロンプトが表示されます。
インストール直後の起動時は、初期化などが行われるため、起動か完了するまで数分かかることがあります。

OpenDaylightを終了させる場合は、「Ctrl+d」と押下するか、logoutとコマンドを実行します。

それでは、次に基本的なプラグイン(Feature)をインストールします。
まずは初期段階にインストールされているFeatureを、"feature:list -i"を実行して確認してみます。

opendaylight-user@root>feature:list -i
Name       | Version | Installed | Repository     | Description
------------------------------------------------------------------------------------------------------
standard   | 3.0.1   | x         | standard-3.0.1 | Karaf standard feature
config     | 3.0.1   | x         | standard-3.0.1 | Provide OSGi ConfigAdmin support
package    | 3.0.1   | x         | standard-3.0.1 | Package commands and mbeans
kar        | 3.0.1   | x         | standard-3.0.1 | Provide KAR (KARaf archive) support
ssh        | 3.0.1   | x         | standard-3.0.1 | Provide a SSHd server on Karaf
management | 3.0.1   | x         | standard-3.0.1 | Provide a JMX MBeanServer and a set of MBeans in K
opendaylight-user@root>

これだけではSDNコントローラとして機能しないので、OpenFlowPluginやGUIのDLUX、L2Switchとして動作させるためのFeatureをインストールします。

opendaylight-user@root>feature:install odl-dlux-core odl-restconf odl-mdsal-apidocs odl-l2switch-switch
....

opendaylight-user@root>

これで、依存する他のFeatureを含めてインストールが完了します。
実際にどのようなFeatureがインストールされているか確認しましょう。

opendaylight-user@root>feature:list -i
Name                             | Version          | Installed | Repository                              | Description                          
--------------------------------------------------------------------------------------------------------------------------------------------------------------
....
odl-aaa-authn                    | 0.1.3-Helium-SR3 | x         | odl-aaa-0.1.3-Helium-SR3                | OpenDaylight :: AAA :: Authentication
odl-l2switch-switch              | 0.1.3-Helium-SR3 | x         | l2switch-0.1.3-Helium-SR3               | OpenDaylight :: L2Switch :: Switch   
odl-l2switch-hosttracker         | 0.1.3-Helium-SR3 | x         | l2switch-0.1.3-Helium-SR3               | OpenDaylight :: L2Switch :: HostTracker
odl-l2switch-addresstracker      | 0.1.3-Helium-SR3 | x         | l2switch-0.1.3-Helium-SR3               | OpenDaylight :: L2Switch :: AddressTracker
odl-l2switch-arphandler          | 0.1.3-Helium-SR3 | x         | l2switch-0.1.3-Helium-SR3               | OpenDaylight :: L2Switch :: ArpHandler
odl-l2switch-loopremover         | 0.1.3-Helium-SR3 | x         | l2switch-0.1.3-Helium-SR3               | OpenDaylight :: L2Switch :: LoopRemover
odl-l2switch-packethandler       | 0.1.3-Helium-SR3 | x         | l2switch-0.1.3-Helium-SR3               | OpenDaylight :: L2Switch :: PacketHandler
odl-mdsal-common                 | 1.1.3-Helium-SR3 | x         | odl-config-0.2.8-Helium-SR3             | OpenDaylight :: Config :: All        
odl-config-api                   | 0.2.8-Helium-SR3 | x         | odl-config-0.2.8-Helium-SR3             | OpenDaylight :: Config :: API        
odl-config-netty-config-api      | 0.2.8-Helium-SR3 | x         | odl-config-0.2.8-Helium-SR3             | OpenDaylight :: Config :: Netty Config API
odl-config-core                  | 0.2.8-Helium-SR3 | x         | odl-config-0.2.8-Helium-SR3             | OpenDaylight :: Config :: Core       
odl-config-manager               | 0.2.8-Helium-SR3 | x         | odl-config-0.2.8-Helium-SR3             | OpenDaylight :: Config :: Manager    
odl-config-netty                 | 0.2.8-Helium-SR3 | x         | odl-config-persister-0.2.8-Helium-SR3   | OpenDaylight :: Config-Netty         
odl-mdsal-broker                 | 1.1.3-Helium-SR3 | x         | odl-mdsal-1.1.3-Helium-SR3              | OpenDaylight :: MDSAL :: Broker      
odl-flow-model                   | 1.1.3-Helium-SR3 | x         | odl-flow-1.1.3-Helium-SR3               | OpenDaylight :: Flow :: Model        
odl-flow-services                | 1.1.3-Helium-SR3 | x         | odl-flow-1.1.3-Helium-SR3               | OpenDaylight :: Flow :: Services     
odl-openflowjava-protocol        | 0.5.3-Helium-SR3 | x         | odl-openflowjava-0.5.3-Helium-SR3       | OpenDaylight :: Openflow Java :: Protocol
odl-config-persister             | 0.2.8-Helium-SR3 | x         | odl-config-persister-0.2.8-Helium-SR3   | OpenDaylight :: Config Persister     
odl-config-startup               | 0.2.8-Helium-SR3 | x         | odl-config-persister-0.2.8-Helium-SR3   | OpenDaylight :: Config Persister:: Config Startup
odl-restconf                     | 1.1.3-Helium-SR3 | x         | odl-controller-1.1.3-Helium-SR3         | OpenDaylight :: Restconf             
odl-restconf-noauth              | 1.1.3-Helium-SR3 | x         | odl-controller-1.1.3-Helium-SR3         | OpenDaylight :: Restconf             
odl-mdsal-apidocs                | 1.1.3-Helium-SR3 | x         | odl-controller-1.1.3-Helium-SR3         | OpenDaylight :: MDSAL :: APIDOCS     
odl-protocol-framework           | 0.5.3-Helium-SR3 | x         | odl-protocol-framework-0.5.3-Helium-SR3 | OpenDaylight :: Protocol Framework   
odl-yangtools-models             | 0.6.5-Helium-SR3 | x         | odl-yangtools-0.6.5-Helium-SR3          | OpenDaylight :: Yangtools :: Models  
odl-yangtools-data-binding       | 0.6.5-Helium-SR3 | x         | odl-yangtools-0.6.5-Helium-SR3          | OpenDaylight :: Yangtools :: Data Binding
odl-yangtools-binding            | 0.6.5-Helium-SR3 | x         | odl-yangtools-0.6.5-Helium-SR3          | OpenDaylight :: Yangtools :: Binding 
odl-yangtools-common             | 0.6.5-Helium-SR3 | x         | odl-yangtools-0.6.5-Helium-SR3          | OpenDaylight :: Yangtools :: Common  
odl-yangtools-binding-generator  | 0.6.5-Helium-SR3 | x         | odl-yangtools-0.6.5-Helium-SR3          | OpenDaylight :: Yangtools :: Binding Generator
odl-dlux-core                    | 0.1.3-Helium-SR3 | x         | odl-dlux-0.1.3-Helium-SR3               |                                      
odl-netconf-api                  | 0.2.8-Helium-SR3 | x         | odl-netconf-0.2.8-Helium-SR3            | OpenDaylight :: Netconf :: API       
odl-netconf-mapping-api          | 0.2.8-Helium-SR3 | x         | odl-netconf-0.2.8-Helium-SR3            | OpenDaylight :: Netconf :: Mapping API
odl-netconf-util                 | 0.2.8-Helium-SR3 | x         | odl-netconf-0.2.8-Helium-SR3            |                                      
odl-netconf-impl                 | 0.2.8-Helium-SR3 | x         | odl-netconf-0.2.8-Helium-SR3            | OpenDaylight :: Netconf :: Impl      
odl-config-netconf-connector     | 0.2.8-Helium-SR3 | x         | odl-netconf-0.2.8-Helium-SR3            | OpenDaylight :: Netconf :: Connector 
odl-netconf-netty-util           | 0.2.8-Helium-SR3 | x         | odl-netconf-0.2.8-Helium-SR3            | OpenDaylight :: Netconf :: Netty Util
odl-netconf-monitoring           | 0.2.8-Helium-SR3 | x         | odl-netconf-0.2.8-Helium-SR3            | OpenDaylight :: Netconf :: Monitoring
pax-jetty                        | 8.1.14.v20131031 | x         | org.ops4j.pax.web-3.1.0                 | Provide Jetty engine support         
pax-http                         | 3.1.0            | x         | org.ops4j.pax.web-3.1.0                 | Implementation of the OSGI HTTP Service
pax-http-whiteboard              | 3.1.0            | x         | org.ops4j.pax.web-3.1.0                 | Provide HTTP Whiteboard pattern support
pax-war                          | 3.1.0            | x         | org.ops4j.pax.web-3.1.0                 | Provide support of a full WebContainer
odl-openflowplugin-southbound    | 0.0.6-Helium-SR3 | x         | openflowplugin-0.0.6-Helium-SR3         | OpenDaylight :: Openflow Plugin :: SouthBound
odl-openflowplugin-flow-services | 0.0.6-Helium-SR3 | x         | openflowplugin-0.0.6-Helium-SR3         | OpenDaylight :: Openflow Plugin :: Flow Services
opendaylight-user@root>

依存関係のあるものを含めて、かなりの数のFeatureがインストールされました。
これで、次回のSDN構築に必要なFeatureのインストールが完了しました。

それでは実際に、OpenDaylightのGUI画面を開いてみましょう。

まず、Webブラウザから以下のURLにアクセスします。

http://[OpenDaylightをインストールしたマシンのIPアドレス]:8181/dlux/index.html

Featureのインストールが成功していれば、以下のログイン画面が表示されます。

f:id:acro-engineer:20150517183735j:plain

Usernameに"admin"、Passwordに"admin"と入力してLoginボタンを押すと、ログインに成功して以下のトポロジ画面が開きます。

f:id:acro-engineer:20150517184408j:plain


まだopen vSwitchの設定などを行っていないので、何も表示されていませんが、これでOpenDaylight 「Helium」のインストールは完了です :-)
ここまで来たらもう一息。
次回に紹介するSDN構築が成功すると、以下のようなトポロジが表示されるようになります。
f:id:acro-engineer:20150506184659j:plain

それでは、また次回をよろしくお願いします~

Acroquest Technologyでは、キャリア採用を行っています。


  • 日頃勉強している成果を、Hadoop、Storm、NoSQL、HTML5/CSS3/JavaScriptといった最新の技術を使ったプロジェクトで発揮したい。
  • 社会貢献性の高いプロジェクトに提案からリリースまで携わりたい。
  • 書籍・雑誌等の執筆や対外的な勉強会の開催を通した技術の発信や、社内勉強会での技術情報共有により、技術的に成長したい。
  • OSSの開発に携わりたい。

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
 キャリア採用ページ