デモ環境セットアップ手順

想定する環境

本書では、以下のような環境でデモ環境を構築することにします。

../_images/overview.png

SMF SDK をインストールするのは図中「RS (kewarra.iij.ad.jp)」で示されているマシンです。

サービスアダプタは、SMFv2 対応クライアントライブラリ (libarms) が組み込まれた製品です。

ここでは例として 0001-0000-0000-000B-02E0-4DFF-FE10-0020 という Distribution ID が付与されているものとします。

このサービスアダプタは、起動時に DHCP サーバからアドレスを取得し、LS/RS に対してコンフィグ取得動作 (Pull) を行います。

起動後は静的なアドレス (192.168.100.101) が付与され、RS から Push を行うことが可能になります。

RS に対するオペレーションは、Web アクセス端末からブラウザを用いて行います。

OS のセットアップ

まずはじめに、SMF SDK デモ環境を動作させるためのマシンに CentOS をインストールし、最低限の設定を行うまでの手順を解説します。

既に Linux インストール済みのマシンがある場合はこの章はスキップして先に進めて構いません。

CentOS 6.4 のインストール

CentOS Web サイト (http://www.centos.org/) より CentOS 6.4 の ISO 形式イメージを取得し、DVD-R に書き込みを行います。

書き込みが完了したら、インストール対象のマシンで DVD-R から起動します。しばらく待つと、以下のような画面が表示されます。 「Next」をクリックし、先に進みます。

../_images/centos6-install-01.png

使用する言語を選択します。ここでは Japanese(日本語) を選択し、「Next」をクリックします。 なお、使用する言語は特にどれを選んでも構いません。

../_images/centos6-install-02.png

使用するキーボードを選択します。ここでは英語 (アメリカ合衆国) を選択し、「次」をクリックします。 なお、キーボードは特にどれを選んでも構いません。

../_images/centos6-install-03.png

ストレージデバイスのタイプを選択します。ストレージデバイスのタイプを選択し、「次」をクリックします。

../_images/centos6-install-04.png

ネットワークデバイスの設定を行います。

ホスト名に「 kewarra.iij.ad.jp 」を設定し、「ネットワークの設定」をクリックします。

../_images/centos6-install-06.png

ここでは System eth0 を選択し、「編集...」をクリックします。

../_images/centos6-install-07.png

「自動接続する」をクリックし、想定した環境に従い、アドレスを「192.168.100.100/24」、ゲートウェイを「192.168.100.1」、DNS サーバーを「192.168.100.2」に設定します。

設定が完了したら「適用...」をクリックしダイアログを閉じ、「次」をクリックします。

../_images/centos6-install-08.png

地域の選択を行います。アジア/東京などの地域を選択し、「次」をクリックします。

../_images/centos6-install-09.png

root アカウントのパスワードを設定します。任意のパスワード文字列を入力し、「次」をクリックし ます。

../_images/centos6-install-10.png

ハードディスクのパーティション設定を行います。ここでは「すべての領域を使用する」を選択し、「次」をクリックします。

../_images/centos6-install-11.png

選択したパーテーション設定でディスクに書き込むか聞かれます。問題なければ「変更をディスクに書き込む」をクリックします。

../_images/centos6-install-12.png

インストールするパッケージの選択を行います。ここでは「今すぐカスタマイズする」にチェックを入れ、「次」をクリックします。

../_images/centos6-install-13.png

するとインストールするパッケージの詳細を選択することができますので、以下のパッケージをインストールするようにしてください。

  • データベース - MySQL データベースサーバー
  • Web サービス - Web サーバー
  • サーバー - 電子メールサーバー

また、以下のパッケージはインストールしないようにしてください。

  • 開発 - その他の開発
  • Web サービス - Web サーブレットエンジン
  • ベースシステム - Java プラットフォーム

これらのパッケージは後ほど Oracle JDK をインストールするため不要となります。他のパッケージ は必要に応じて選択を行ってください。

すべての準備が完了したら「次」をクリックしてインストールを開始します。

../_images/centos6-install-14.png

インストールが完了すると以下のような画面になります。CD-ROM を抜いてから再起動を行います。

../_images/centos6-install-15.png

再起動後、初期設定を行うためのウィザードが開始します。「進む」をクリックします。

../_images/centos6-install-16.png

ライセンス情報を確認したら「はい、ライセンス同意書にどうします」を選択し、「進む」をクリックします。

../_images/centos6-install-17.png

通常利用するユーザの登録を行います。ここでは「admin」というユーザを作成します。

../_images/centos6-install-18.png

日付と時刻を設定します。ここでは「ネットワーク上で日付と時刻を同期化します」を選択し、「進む」をクリックします。

../_images/centos6-install-19.png

Kdumpの設定をします。必要に応じて有効か無効か選択し、「完了」をクリックします。

../_images/centos6-install-20.png

以上で CentOS のインストール作業は完了となります。

なお、以下の作業は基本的にコマンドラインでの操作となります。

他の端末から ssh コマンドでログインするか、ホスト上の GUI にて GNOME 端末等を起動して操作を行ってください。

ファイアウォールの設定を行います。ここでは設定作業の簡易化のため無効化しています。 実環境でグローバルアドレスを付与する場合などは必ず適切な設定を行ってください。

# /etc/init.d/iptables stop
# chkconfig iptables off

# /etc/init.d/ip6tables stop
# chkconfig ip6tables off

SELinux の設定を行います。ここでも簡易化のため無効化していますが、実際には注意して運用を行ってください。

# setenforce 0
# vim /etc/selinux/config
  (SELINUX=disabled に変更しておく)

Tomcat のインストールと設定

まず、以下のファイルをダウンロードします。なお、ソフトウェアのバージョンはその時点での最新版のものを取得してください。

JDK 7
http://www.oracle.com/technetwork/java/javase/downloads/index.html から取得します。取得するファイル名は jdk-7u25-linux-x64.rpm のようになります。
Tomcat 7
http://tomcat.apache.org から取得します。取得するファイル名は apache-tomcat-7.0.41.tar.gz のようになります。
mysql-connector-java
http://www.mysql.com/downloads/connector/j/ から取得します。取得するファイル名は mysql-connector-java-5.1.25.tar.gz のようになります。

取得が完了したら、以下のようにインストールを行います。

  1. JDK インストール

    # rpm -ivh jdk-7u25-linux-x64.rpm
    準備中...                ########################################### [100%]
      1:jdk                    ########################################### [100%]
    Unpacking JAR files...
      rt.jar...
      jsse.jar...
      charsets.jar...
      tools.jar...
      localedata.jar...
    
  2. Tomcat インストール

    まず、tomcat User/Group を作り、インストール先のディレクトリ (/var/service/smf/web) を準備します。

    # mkdir -p /var/service/smf/web
    # /usr/sbin/groupadd tomcat
    # /usr/sbin/useradd -g tomcat -d /var/service/smf/web/tomcat -s /sbin/nologin tomcat
    

    tomcat パッケージを展開し、tomcat user にオーナを設定します。

    # rm -fr /var/service/smf/web/tomcat
    # tar xzvf apache-tomcat-7.0.41.tar.gz
    # cp -R apache-tomcat-7.0.41 /var/service/smf/web/tomcat
    # chown -R tomcat:tomcat /var/service/smf/web/tomcat
    

    mysql-connector-java のインストールを行います。

    # tar xzvf mysql-connector-java-5.1.25.tar.gz
    # cp mysql-connector-java-5.1.25/mysql-connector-java-5.1.25-bin.jar /var/service/smf/web/tomcat/lib
    # chown tomcat:tomcat /var/service/smf/web/tomcat/lib/mysql-connector-java-5.1.25-bin.jar
    

    mod_proxy_ajp の設定を行います。/etc/httpd/conf.d/proxy_ajp.conf に以下の設定を追加します。

    ProxyPass /rs/ ajp://localhost:8009/rs/
    

    SMF SDK パッケージを展開し、各種設定ファイルをコピーします。

    # tar xzvf smfsdk-X.X-l6-x64.tar.gz
    # cd smfsdk-X.X-l6-x64/demo
    # cp rc.tomcat /etc/rc.d/init.d/tomcat
    # cp sysconfig.tomcat /etc/sysconfig/tomcat
    # mkdir -p /var/service/smf/web/tomcat/conf/Catalina/localhost/
    # chown tomcat:tomcat /var/service/smf/web/tomcat/conf/Catalina/localhost/
    # cp rs.xml /var/service/smf/web/tomcat/conf/Catalina/localhost/
    

    続けて起動時に自動的に起動する設定を行います。

    # /sbin/chkconfig --add tomcat
    # /sbin/chkconfig --level 345 tomcat on
    # /sbin/chkconfig --level 345 httpd on
    # /sbin/chkconfig --level 345 mysqld on
    

MySQL データベース構築

RS-API ライブラリで使用するデータベーススキーマを作成し、権限の設定を行います。

まず、SMF SDK から RS-API パッケージを展開し、データベーススキーマをコピーします。 (ファイル名の*.*は実際のバージョン番号に置き換えてください)

# cd /tmp
# unzip smfsdk-X.X-l6-x64/RS/rs-api-*.*.zip

MySQL のコマンドを用いてデータベース”smf” およびユーザ”smf” を作成します。 また、RS-API に含まれるデータベーススキーマ (mysql.sql) を用いてデータベースの初期化を行います。

# mysqladmin -u root create smf
# mysql -u root smf
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 5.0.22

Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.
mysql> grant all on smf.* to 'smf'@'localhost' identified by 'smf';
Query OK, 0 rows affected (0.01 sec)

mysql> source /tmp/sql/mysql.sql
(省略)
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql>

デモ Web アプリケーションの設置

デモ用 Web アプリケーションを Tomcat 上に配置します。SMF SDK から rs-cli.war ファイルをコピーします。

# mkdir -p /var/service/smf/web/webapps
# chown tomcat.tomcat /var/service/smf/web/webapps
# cp smfsdk-X.X-l6-x64/demo/rs-cli.war /var/service/smf/web/webapps/

ログ出力用のディレクトリ”/var/service/smf/logs/rs” を作成します。

# mkdir -p /var/service/smf/logs/rs
# chown -R tomcat.tomcat /var/service/smf/logs/rs

Web アプリケーションで利用する設定ファイルをコピーします。

# mkdir -p /var/service/smf/etc
# cp smfsdk-X.X-l6-x64/demo/rs-*.properties /var/service/smf/etc/

/var/service/smf/web/tomcat/conf/tomcat-users.xml に以下の行を追加します。 この設定で、一般ユーザ兼管理者として ”admin” (パスワード admin) が用意されます。 必要に応じ、SMFV2_USER ロールのみを割り当てられたユーザを作り、 一般ユーザ (契約の作成、サーバ設定等が不可) としてログインさせることもできます。

<user name="admin" password="admin" roles="SMFV2_USER, SMFV2_ADMIN"/>

最後に、JCE プロバイダ (SSL 認証局の発行/管理) のインストールを行います。 先ほど展開した RS-API のパッケージに含まれる JCE プロバイダのライブラリをコピーします。 (Java インストール先ディレクトリについては適宜環境に合わせてください)

# cd /tmp/lib
# cp bcprov-jdk15on-149.jar /usr/java/default/jre/lib/ext/

また、/usr/java/default/jre/lib/security/java.security に以下の行を追記して JCE プロバイダを有効にしてください。 (“10” の部分は環境によって変わることがあります)

security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider

以上で設定は終了です。最後に tomcat を再起動して Web アプリケーションが正常に配置されることを確認します。

# /sbin/service tomcat restart

正常に配置が完了すると、/var/service/smf/web/tomcat/logs/catalina.out に以下のようなログが出力されます。

6 25, 2013 10:53:07 午前 org.apache.catalina.core.AprLifecycleListener init
情報: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
6 25, 2013 10:53:07 午前 org.apache.coyote.AbstractProtocol init
情報: Initializing ProtocolHandler ["http-bio-8080"]
6 25, 2013 10:53:07 午前 org.apache.coyote.AbstractProtocol init
情報: Initializing ProtocolHandler ["ajp-bio-8009"]
6 25, 2013 10:53:07 午前 org.apache.catalina.startup.Catalina load
情報: Initialization processed in 555 ms
6 25, 2013 10:53:07 午前 org.apache.catalina.core.StandardService startInternal
情報: サービス Catalina を起動します
6 25, 2013 10:53:07 午前 org.apache.catalina.core.StandardEngine startInternal
情報: Starting Servlet Engine: Apache Tomcat/7.0.41
6 25, 2013 10:53:07 午前 org.apache.catalina.startup.HostConfig deployDescriptor
情報: 設定記述子 /var/service/smf/web/tomcat/conf/Catalina/localhost/rs.xml を配備します
6 25, 2013 10:53:15 午前 org.apache.catalina.startup.HostConfig deployDirectory
情報: Webアプリケーションディレクトリ /var/service/smf/web/tomcat/webapps/examples を配備します
6 25, 2013 10:53:16 午前 org.apache.catalina.startup.HostConfig deployDirectory
情報: Webアプリケーションディレクトリ /var/service/smf/web/tomcat/webapps/host-manager を配備します
6 25, 2013 10:53:16 午前 org.apache.catalina.startup.HostConfig deployDirectory
情報: Webアプリケーションディレクトリ /var/service/smf/web/tomcat/webapps/ROOT を配備します
6 25, 2013 10:53:16 午前 org.apache.catalina.startup.HostConfig deployDirectory
情報: Webアプリケーションディレクトリ /var/service/smf/web/tomcat/webapps/manager を配備します
6 25, 2013 10:53:16 午前 org.apache.catalina.startup.HostConfig deployDirectory
情報: Webアプリケーションディレクトリ /var/service/smf/web/tomcat/webapps/docs を配備します
6 25, 2013 10:53:16 午前 org.apache.coyote.AbstractProtocol start
情報: Starting ProtocolHandler ["http-bio-8080"]
6 25, 2013 10:53:16 午前 org.apache.coyote.AbstractProtocol start
情報: Starting ProtocolHandler ["ajp-bio-8009"]
6 25, 2013 10:53:16 午前 org.apache.catalina.startup.Catalina start
情報: Server startup in 8913 ms

Web アプリケーションにブラウザからアクセスします。 「http://<RS のアドレス >/rs/」にアクセスするとユーザ名とパスワードを聞かれますので、“tomcat-users.xml” に 記述したユーザアカウントのうち、“SMFV2_ADMIN” という role が設定してあるアカウントを入力します (本書の例では user:admin, password:admin)。

正常にログインが完了すると、以下のような画面が表示されます。

../_images/webui-01.png

デモ Web アプリケーションの初期設定

ここからは、ブラウザによる操作によって必要な初期設定およびデータの作成を行います。

前節で表示された画面から設定を行っていきます。 まず、「サービスの設定と管理」タブから「認証 局情報」のリンクをクリックします。 しばらく待つと、次のような画面が表示されます (自動的に認証局が生成され、証明書が発行されます)

../_images/webui-02.png

ここで、各リンク (認証局証明書、RS 証明書、RS 証明書秘密鍵) をクリックすると、ファイル形式でダウンロードすることができます。 このファイルは後ほど利用しますのでダウンロードして保存しておいてください。

続けて、「連携サーバ設定」のリンクをクリックします。以下のような画面が表示されますので、それぞれ設定項目を入力していきます。

../_images/webui-03.png
  • サーバグループの追加

    サーバを複数台構成で運用する場合にサーバグループを追加することができます。 本書の構成では標準で用意される「SMFv2 Sample Server Group」 を利用するため、追加する必要はありません。

  • サーバグループの選択

    設定対象となるサーバグループを選択します。ここでは既に SMFv2 Sample Server Group が選択されているため、そのままにしておきます。

  • 各サーバ設定

    デフォルトサーバグループは、新たにユーザを追加した場合に収容されるサーバグループとなります。 SMFv2 Sample Server Group は標準でデフォルトサーバグループとして設定されているため、このままにしておきます。

  • ARMS プロキシサーバ
    • ホスト名: Proxy サーバを識別するための任意の文字列です。Proxy サーバの設定と一致する必要があります。
    • サービスアダプタ用 URI: サービスアダプタが RS に接続するための URI です。 本書の例の場合”https://192.168.100.100/arms/msg” のように記述します。
    • サーバ連携用 URI: XML-RPC を用いた RS との連携に用いるための URI です。 “http://localhost:8000/arms/xmlrpc” のように記述します。
  • ARMS プロキシサーバ (接続持続型)
    • Echo 間隔: https-tunnel モードの接続維持のためのパケット送信間隔です。
    • ホスト名: Proxy サーバを識別するための任意の文字列です。Proxy サーバの設定と一致する必要があります。
    • サービスアダプタ用 URI: サービスアダプタが RS に接続するための URI です。 本書の例の場合”https://192.168.100.100/arms/tunnel” のように記述します。
    • サーバ連携用 URI: XML-RPC を用いた RS との連携に用いるための URI です。 “http://localhost:8000/arms/xmlrpc” のように記述します。
  • Heartbeat サーバ
    • ホスト名: Heartbeat サーバを識別するための任意の文字列です。Heartbeat サーバの設定と一致する必要があります
    • サービスアダプタ用アドレス: サービスアダプタから Heartbeat パケットを送信する際の送信先となるアドレスです。 本書の例の場合”192.168.100.100” となります (RS と Heartbeat は同一サーバで動作します)。
    • サービスアダプタ用ポート番号: サービスアダプタが Heartbeat パケットを送信する際の送信先ポート番号です。 デフォルトは 10010 となります。
    • サーバ連携用 URI: XML-RPC を用いた RS との連携に用いるための URI です。現在は使用されていません。
    • パスフレーズ: Heartbeat パケットの認証に用いるための鍵文字列です。 “0123456789abcdef0123456789abcdef01234567” のように記述します。
  • Heartbeat グラフサーバ
    • ホスト名: Heartbeat グラフサーバを識別するための任意の文字列です。
    • グラフ URI: グラフ提供インターフェイス (grapher.cgi) の URI です。 ブラウザからアクセス出来る URI である必要があります。“http://10.0.0.1/hbcgi/grapher.cgi” のようにパラメータ を除いて記述します。
    • パスフレーズ: 任意の Distribution ID のグラフが表示されないようにするためのグラフ提供 インターフェイスとの共通鍵です。
  • Module サーバ: 本デモ環境では利用しないため、特に変更する必要はありません。

以上で、デモ WebUI の初期設定は完了です。

ARMS-Proxy, Heartbeat インストール

SMF SDK より、ARMS-Proxy と Heartbeat のインストールを行います。 この手順は、「 インストールガイド 」に従って行ってください。本書では詳細は省略しますが、概ね以下のような手順になります。

ARMS-Proxy のインストールと初期設定

  1. (もしインストールされていなければ)pyOpenSSL を yum でインストール

    # yum install pyOpenSSL
    
  2. arms-proxy、Twisted、 zope パッケージを rpm コマンドでインストール

    # cd smfsdk-X.X-l6-x64/Proxy
    # rpm -ivh python-smf-Twisted-11.0.0p1-*.x86_64.rpm python-smf-zope-interface-3.3.0-*.x86_64.rpm arms-proxy-X.X-X.x86_64.rpm
    
  3. /etc/httpd/conf.d/ssl.conf を ssl.conf.bak にリネーム

    # cd /etc/httpd/conf.d
    # mv -i ssl.conf ssl.conf.bak
    
  4. デモ WebUI の初期設定時に作成した証明書ファイル (ca-cert.pem, rs-cert.pem, rs-key.pem) を、/var/service/smf/etc にコピー

  5. /var/service/smf/etc/proxy.cfg.sample を proxy.cfg にコピーし、以下のように編集

    [proxy1]
    MyRpcUrl = http://127.0.0.1:8000/arms/xmlrpc
    RsRpcUrl1 = http://127.0.0.1/rs/rpc/arms-xmlrpc/
    # RsRpcUrl2 =
    # RsRpcUrl3 =
    # RsRpcUrl4 =
    # RsRpcUrl5 =
    # RsRpcTimeout = 30
    # RsRpcRetryInterval = 300
    ApiListenAddress = 127.0.0.1
    # ApiListenPort = 8000
    # RunagentInterval = 300
    # PushResultSaveTo = RS
    # RsRoundRobin = on
    # DelayPushInterval = 1.0
    # SslDhParameter =
    # SslCipherSuite =
    # SslCipherSuitePush =
    
    ArmsListenAddress = 10.0.0.1
    # ArmsListenPort = 443
    # ArmsHttpsMaxConnections = 2500
    # ArmsHttpsTunnelMaxConnections = 2500
    # ArmsHttpsTimeout = 60
    # ArmsHttpsTunnelTimeout = 10800
    # ArmsPushTimeout = 180
    # AgentConcurrency = 100
    
    # HttpForward = on
    # HttpForwardPort = 80
    # HttpForwardServer = 127.0.0.1
    # HttpForwardTimeout = 300
    
    MyCertificate = /var/service/smf/etc/rs-cert.pem
    MyPrivateKey = /var/service/smf/etc/rs-key.pem
    CaCertificate = /var/service/smf/etc/ca-cert.pem
    
    OpDir = /var/service/smf/var/proxy/op
    # OpLifeTime = 7
    # GarbageCollectAt = 04:00
    # PwCacheExpire = 300
    # NoPwCache = off
    
    LogFile = /var/service/smf/logs/proxy/proxy.log
    MsgLogFile = /var/service/smf/logs/proxy/msg.log
    TwistdLogFile = /var/service/smf/logs/proxy/twistd.log
    
    # DebugApi = on
    # DebugHttp = on
    # DebugLog = on
    # DebugShell = on
    # ShellListenPort = 2222
    
    • セクション名(上記の例では”[proxy1]”): RS WebUI の「サーバ連携」設定画面で設定した、ARMS プロキシサーバのホスト名と一致させる
    • MyRpcUrl: RS WebUI の「サーバ連携」設定画面で設定した、ARMS プロキシサーバの サーバ連携URI と一致させる
  6. httpd の再起動

    # /sbin/service httpd restart
    
  7. arms-proxy daemon 自動起動の設定と開始

    # /sbin/chkconfig --add arms-proxy
    # /sbin/chkconfig --level 345 arms-proxy on
    # /sbin/service arms-proxy start
    

Heartbeat のインストールと初期設定

  1. (もしインストールされていなければ)httpd、vixie-cron、libevent、rrdtool を yum でインストール

    # yum install httpd vixie-cron libevent rrdtool
    
  2. Heartbeat 関連パッケージを rpm コマンドでインストール

    # cd smfsdk-X.X-l6-x64/Heartbeat
    # rpm -ivh syck-0.55-*.x86_64.rpm heartbeat-server-X.X-X.x86_64.rpm
    
  3. /var/service/smf/etc/hbserver.conf の設定を編集 以下の項目については最低限確認・変更が必要。

    • SecretKey: RS WebUI の「サーバ連携」設定画面で設定した、Heartbeat サーバパスフレーズと一致させる
    • HeartbeatInterval: RS WebUI の「サーバ連携」設定画面で設定した、Heartbeat サーバのパケット送信間隔と一致させる
    • HeartbeatPort:RS WebUI の「サーバ連携」設定画面で設定した、Heartbeat サーバのサービスアダプタ用ポート番号と一致させる
    • KeyCodeSeed: RS WebUI の「サーバ連携」設定画面で設定した、Heartbeat グラフサーバのパスフレーズと一致させる
    • RSURL:RSのXML-RPCエンドポイント。”http://localhost/rs/rpc/monitor-xmlrpc” のように指定する。
    • ServerID: RS WebUI の「サーバ連携」設定画面で設定した、Heartbeat サーバのホスト名と一致させる
  4. /etc/cron.d/hbserver の設定を有効化。以下の行の先頭の”#” を削除する。

    #*/5 * * * * heartbeat /var/service/smf/bin/mreport.py
    
  5. hbserver 自動起動の設定と開始

    # /sbin/chkconfig --add hbserver
    # /sbin/chkconfig --level 345 hbserver on
    
  6. hbserver 起動

    # /sbin/service hbserver start
    
  7. Apache の再起動

    # /sbin/service httpd restart