こんにちは、こんばんは miyakeです :-)
GW開け早々、まだ5月なのに台風が来たり、真夏のような暑さになったりしているなか、いかがお過ごしでしょうか...
今回は「OpenDaylight Helium SR3を試してみた」の2回目、「OpenDaylight 「Helium」をインストールしてみよう」です。
前回:OpenDaylight 「Helium」 概要編
今回:OpenDaylight 「Helium」をインストールしてみよう < イマココ
次回:OpenDaylight 「Helium」でSDNを構築してみよう
インストール環境の準備
今回、OpenDaylight 「Helium」はCentOS7にインストールします。
Debian、Ubuntuの方は....ごめんなさい...
あと、最新のFedoraではOpenJDK1.7のパッケージが用意されていなかったので、出来るだけCentOS7にしてください。
試してはいませんが、CentOS6.5以降でも動作するはずです。
なお、ここではCentOS7のインストール手順は説明しませんので、WebからOSのインストール手順を調べて、VirtualBoxなどを使って仮想マシンを構築してCentOS7をインストールしてください。
CentOS7をインストールする際に出てくる「ソフトウェアの選択」の設定は、”最小限のインストール”のままでOKです。
ネットワークインタフェース(NIC)については1つで十分ですが、インターネットに接続できるようIPアドレスやGateway、DNSの設定をしておいてください。
それから、OpenDaylightを実行するためのユーザを追加しておいてください。
rootユーザでもOpenDaylightを実行出来ますが、root権限でアプリケーションを実行するのも気持ち悪いので...
OSの準備ができたら、以下の手順でOpenDaylight をインストールするための準備を行います。
なお、以下の手順はyumでパッケージのインストールなどを行うので、root権限で実行してください。
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で指定されているJava(JVM)を使用して起動します。
このため環境変数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のインストールが成功していれば、以下のログイン画面が表示されます。
Usernameに"admin"、Passwordに"admin"と入力してLoginボタンを押すと、ログインに成功して以下のトポロジ画面が開きます。
まだopen vSwitchの設定などを行っていないので、何も表示されていませんが、これでOpenDaylight 「Helium」のインストールは完了です :-)
ここまで来たらもう一息。
次回に紹介するSDN構築が成功すると、以下のようなトポロジが表示されるようになります。
それでは、また次回をよろしくお願いします~
Acroquest Technologyでは、キャリア採用を行っています。
- 日頃勉強している成果を、Hadoop、Storm、NoSQL、HTML5/CSS3/JavaScriptといった最新の技術を使ったプロジェクトで発揮したい。
- 社会貢献性の高いプロジェクトに提案からリリースまで携わりたい。
- 書籍・雑誌等の執筆や対外的な勉強会の開催を通した技術の発信や、社内勉強会での技術情報共有により、技術的に成長したい。
- OSSの開発に携わりたい。
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
キャリア採用ページ