デモ環境セットアップ手順¶
想定する環境¶
本書では、以下のような環境でデモ環境を構築することにします。
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」をクリックし、先に進みます。
使用する言語を選択します。ここでは Japanese(日本語) を選択し、「Next」をクリックします。 なお、使用する言語は特にどれを選んでも構いません。
使用するキーボードを選択します。ここでは英語 (アメリカ合衆国) を選択し、「次」をクリックします。 なお、キーボードは特にどれを選んでも構いません。
ストレージデバイスのタイプを選択します。ストレージデバイスのタイプを選択し、「次」をクリックします。
ネットワークデバイスの設定を行います。
ホスト名に「 kewarra.iij.ad.jp 」を設定し、「ネットワークの設定」をクリックします。
ここでは System eth0 を選択し、「編集...」をクリックします。
「自動接続する」をクリックし、想定した環境に従い、アドレスを「192.168.100.100/24」、ゲートウェイを「192.168.100.1」、DNS サーバーを「192.168.100.2」に設定します。
設定が完了したら「適用...」をクリックしダイアログを閉じ、「次」をクリックします。
地域の選択を行います。アジア/東京などの地域を選択し、「次」をクリックします。
root アカウントのパスワードを設定します。任意のパスワード文字列を入力し、「次」をクリックし ます。
ハードディスクのパーティション設定を行います。ここでは「すべての領域を使用する」を選択し、「次」をクリックします。
選択したパーテーション設定でディスクに書き込むか聞かれます。問題なければ「変更をディスクに書き込む」をクリックします。
インストールするパッケージの選択を行います。ここでは「今すぐカスタマイズする」にチェックを入れ、「次」をクリックします。
するとインストールするパッケージの詳細を選択することができますので、以下のパッケージをインストールするようにしてください。
データベース - MySQL データベースサーバー
Web サービス - Web サーバー
サーバー - 電子メールサーバー
また、以下のパッケージはインストールしないようにしてください。
開発 - その他の開発
Web サービス - Web サーブレットエンジン
ベースシステム - Java プラットフォーム
これらのパッケージは後ほど Oracle JDK をインストールするため不要となります。他のパッケージ は必要に応じて選択を行ってください。
すべての準備が完了したら「次」をクリックしてインストールを開始します。
インストールが完了すると以下のような画面になります。CD-ROM を抜いてから再起動を行います。
再起動後、初期設定を行うためのウィザードが開始します。「進む」をクリックします。
ライセンス情報を確認したら「はい、ライセンス同意書にどうします」を選択し、「進む」をクリックします。
通常利用するユーザの登録を行います。ここでは「admin」というユーザを作成します。
日付と時刻を設定します。ここでは「ネットワーク上で日付と時刻を同期化します」を選択し、「進む」をクリックします。
Kdumpの設定をします。必要に応じて有効か無効か選択し、「完了」をクリックします。
以上で 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 のようになります。
取得が完了したら、以下のようにインストールを行います。
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...
- 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)。
正常にログインが完了すると、以下のような画面が表示されます。
デモ Web アプリケーションの初期設定¶
ここからは、ブラウザによる操作によって必要な初期設定およびデータの作成を行います。
前節で表示された画面から設定を行っていきます。 まず、「サービスの設定と管理」タブから「認証 局情報」のリンクをクリックします。 しばらく待つと、次のような画面が表示されます (自動的に認証局が生成され、証明書が発行されます)
ここで、各リンク (認証局証明書、RS 証明書、RS 証明書秘密鍵) をクリックすると、ファイル形式でダウンロードすることができます。 このファイルは後ほど利用しますのでダウンロードして保存しておいてください。
続けて、「連携サーバ設定」のリンクをクリックします。以下のような画面が表示されますので、それぞれ設定項目を入力していきます。
- サーバグループの追加
サーバを複数台構成で運用する場合にサーバグループを追加することができます。 本書の構成では標準で用意される「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 のインストールと初期設定¶
(もしインストールされていなければ)pyOpenSSL を yum でインストール
# yum install pyOpenSSL
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
/etc/httpd/conf.d/ssl.conf を ssl.conf.bak にリネーム
# cd /etc/httpd/conf.d # mv -i ssl.conf ssl.conf.bak
デモ WebUI の初期設定時に作成した証明書ファイル (ca-cert.pem, rs-cert.pem, rs-key.pem) を、/var/service/smf/etc にコピー
/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 と一致させる
httpd の再起動
# /sbin/service httpd restart
arms-proxy daemon 自動起動の設定と開始
# /sbin/chkconfig --add arms-proxy # /sbin/chkconfig --level 345 arms-proxy on # /sbin/service arms-proxy start
Heartbeat のインストールと初期設定¶
(もしインストールされていなければ)httpd、vixie-cron、libevent、rrdtool を yum でインストール
# yum install httpd vixie-cron libevent rrdtool
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
/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 サーバのホスト名と一致させる
/etc/cron.d/hbserver の設定を有効化。以下の行の先頭の”#” を削除する。
#*/5 * * * * heartbeat /var/service/smf/bin/mreport.py
hbserver 自動起動の設定と開始
# /sbin/chkconfig --add hbserver # /sbin/chkconfig --level 345 hbserver on
hbserver 起動
# /sbin/service hbserver start
Apache の再起動
# /sbin/service httpd restart