ARMS-Proxy サーバの構築

本章では ARMS-Proxy サーバのインストール方法を説明します。

RPM パッケージのインストール

まず、ARMS-Proxy で利用する外部パッケージをインストールします。 rpm コマンドを使ってパッケージ内の以下の 3 つの RPM パッケージをインストールしてください。

  • /Proxy/python-smf-Twisted-8.1.0-*.{i386,x86_64}.rpm
  • /Proxy/python-smf-zope-interface-3.3.0-*.{i386,x86_64}.rpm
  • /Proxy/python-smf-socket-2.4.3-*.i386.rpm (RedHat Enterprise Linux 5 系のみ)
# cd <smfsdk_dir>/Proxy

(RedHat Enterprise Linux 5 系の場合)
# rpm -ivh python-smf-Twisted-11.0.0p1-*.i386.rpm python-smf-socket-2.4.3-*.i386.rpm python-smf-zope-interface-3.3.0-*.i386.rpm

(RedHat Enterprise Linux 6 系の場合)
# rpm -ivh python-smf-Twisted-11.0.0p1-*.x86_64.rpm python-smf-zope-interface-3.3.0-*.x86_64.rpm

続けて、ARMS-Proxy サーバの実行ファイルをインストールします。 rpm コマンドを使って、パッケージ内の /Proxy/arms-proxy-X.XX-X.{i386,x86_64}.rpm ファイルをインストールしてください。 (X.XX-X には SMF SDK のバージョン番号が入ります)

# cd <smfsdk_dir>/Proxy

(RedHat Enterprise Linux 5 系の場合)
# rpm -ivh arms-proxy-X.XX-X.i386.rpm

(RedHat Enterprise Linux 6 系の場合)
# rpm -ivh arms-proxy-X.XX-X.x86_64.rpm

証明書の設置

ARMS プロトコルでは TLS による通信を行うため、ARMS-Proxy サーバには X.509 証明書を設置 する必要があります。 この証明書は、RS の API を用いて作成する必要があります。作成方法の詳細は 「システム開発ガイド」をご覧ください。 作成した証明書と鍵ファイルは ARMS-Proxy サーバ上に設置 してください。 ここではそれぞれサーバ証明書のファイル名を rs-cert.pem、サーバ鍵のファイル名を rs-key.pem、CA 証明書のファイル名を ca-cert.pem としています。

# cp -i rs-cert.pem /var/service/smf/etc/rs-cert.pem
# cp -i rs-key.pem /var/service/smf/etc/rs-key.pem
# cp -i ca-cert.pem /var/service/smf/etc/ca-cert.pem

Apache TLS の無効化

Apache が TLS による接続を受け付けるように設定されていると、ARMS-Proxy サーバとの競合が発生し、正常に動作しません。 そのため、Apache の TLS 機能を無効化して下さい。 以下では例として /etc/httpd/conf.d/ssl.conf を削除することで Apache の TLS 機能を無効化する方法を示します。

# cd /etc/httpd/conf.d
# mv -i ssl.conf ssl.conf.bak

proxy.cfg の設定

ARMS-Proxy サーバの動作に関する設定は、/var/service/smf/etc/proxy.cfg で行います。 rpm からインストールを行うと、設定のサンプルファイルが/var/service/smf/etc/proxy.cfg.sample としてインストールされますので、これを元に必要な個所を書き換えてください。

# cd /var/service/smf/etc
# cp proxy.cfg.sample proxy.cfg

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]”)
ARMS-Proxy の識別子です。任意の文字列を指定できます。
MyRpcUrl
ARMS-Proxy の XML-RPC エンドポイントの URL となります。下記 api-listen-port と合わせて設定してください。
RsRpcUrl1
RS の XML-RPC エンドポイントの URL となります。RS 側の設定と合わせてください。
RsRpcUrl2
2 台目の RS の XML-RPC エンドポイントの URL となります。RS を冗長化する場合に設定してください。
RsRpcUrl3
3 台目の RS の XML-RPC エンドポイントの URL となります。RS を冗長化する場合に設定してください。
RsRpcUrl4
4 台目の RS の XML-RPC エンドポイントの URL となります。RS を冗長化する場合に設定してください。
RsRpcUrl5
5 台目の RS の XML-RPC エンドポイントの URL となります。RS を冗長化する場合に設定してください。
RsRpcTimeout
RS との XML-RPC 通信のタイムアウト時間です。秒数単位で指定します。
ApiListenAddress
RS との XML-RPC エンドポイントのアドレスです。指定しない場合は任意の IPv4 アドレスへの接続を受け付けます。 my-rpc-url と合わせて設定してください。
ApiListenPort
RS との XML-RPC エンドポイントのポート番号です。MyRpcUrl と合わせて設定してください。
ArmsListenAddress
サービスアダプタからの ARMS プロトコル接続を受け付けるアドレスです。 指定しない場合は任意の IPv4 アドレスへの接続を受け付けます。RS 側の設定と合わせてください。
ArmsListenPort
サービスアダプタからの ARMS プロトコル接続を受け付けるポート番号です。RS 側の設定と合わせてください。
PushResultSaveTo
オペレーションリクエスト結果の保存先を指定します。RS を指定すると RS に保存します。 local を指定するとローカルディスクに保存します。通常は変更する必要はありません。
RsRoundRobin
RS の参照順序を変更します (on = ラウンドロビン)。通常は変更する必要はありません。
DelayPushInterval
RS が delay フラグを指定した Push オペレーションの実行間隔。秒数単位で指定します。 通常は変更する必要はありません。
SslDhParameter
Pull 待ち受けおよび HTTP 転送機能に使用するDHパラメータを指定します。 openssl dhparam コマンドで生成したファイルを指定してください。
SslCipherSuite
Pull 待ち受け、Push(https-tunnel) および HTTP 転送機能に使用する暗号アルゴリズムを指定します。 フォーマットは使用する OpenSSL ライブラリに従います。
SslCipherSuitePush
Push (https-simple) に使用する暗号アルゴリズムを指定します。 フォーマットは使用する OpenSSL ライブラリに従います。
UseSSLv3
Pull 待ち受け、Push(https-tunnel) および HTTP 転送機能において SSLv3 を有効にします。通常は変更する必要はありません。
ArmsHttpsMaxConnections
サービスアダプタからの ARMS プロトコル接続の https-simple モード時の最大同時接続数です。
ArmsHttpsTunnelMaxConnections
サービスアダプタからの ARMS プロトコル接続の https-tunnel モード時の最大同時接続数です。
ArmsHttpsTimeout
サービスアダプタからの ARMS プロトコル接続の https-simple モード時のタイムアウト時間です。秒数単位で指定します。
ArmsHttpsTunnelTimeout
サービスアダプタからの ARMS プロトコル接続の https-tunnel モード時のタイムアウト時間です。秒数単位で指定します。
HttpForward
HTTP 転送機能の有効/無効を設定します。
HttpForwardPort
HTTP 転送機能で転送する HTTP 接続の転送先ポート番号を指定します。
HttpForwardServer
HTTP 転送機能で転送する HTTP 接続の転送先ホストを IP アドレスまたはホスト名で指定します。
HttpForwardTimeout
HTTP 転送機能での転送先 HTTP サーバとの通信のタイムアウト時間です。秒数単位で指定します。
AgentConcurrency
サービスアダプタへのリクエストを同時に処理する並列度です。
LogFile
ARMS-Proxy の動作全般が記録されるログファイルのパスとなります。通常は変更する必要はありません。
MsgLogFile
ARMS メッセージが記録されるログファイルのパスとなります。通常は変更する必要はありません。
TwistdLogFile
ARMS-Proxy が利用する補助プログラムのログファイルのパスとなります。通常は変更する必要はありません。
OpDir
サービスアダプタへのリクエストを保持するディレクトリを指定します。通常は変更する必要はありません。
CpLifeTime
サービスアダプタへのリクエストを保管する日数を指定します。
PwCacheExpire
内部で使用するキャッシュの有効期間となります。通常は変更する必要はありません。
NoPwCache
内部で使用するキャッシュの有効/無効を設定します。通常は変更する必要はありません。
MyCertificate
TLS 通信で利用するサーバ証明書ファイルのパスを指定します。
MyPrivateKey
TLS 通信で利用するサーバ秘密鍵ファイルのパスを指定します。
CaCertificate
TLS 通信で利用する CA 証明書ファイルのパスを指定します。変更する必要はありません。
RunagentInterval
オペレーションリクエストを取得する間隔です。秒数単位で指定します。
GarbageCollectAt
有効期限が切れたオペレーションリクエスト結果を削除する時刻です。
DebugApi
デバッグ用のオプションです。通常は変更する必要はありません。
DebugHttp
デバッグ用のオプションです。通常は変更する必要はありません。
DebugLog
デバッグ用のオプションです。通常は変更する必要はありません。
DebugShell
デバッグ用のオプションです。通常は変更する必要はありません。
ShellListenPort
デバッグ用のオプションです。通常は変更する必要はありません。

一つのホスト上で IPv4/IPv6 のサービスを提供する場合は以下のように設定してください。 識別子、 ファイル、ディレクトリが重複しないよう注意してください。

[proxy1-ipv4]
MyRpcUrl = http://127.0.0.1:8000/arms/xmlrpc
RsRpcUrl1 = http://127.0.0.1/rs/rpc/arms-xmlrpc/
ApiListenAddress = 127.0.0.1

ArmsListenAddress = 10.0.0.1

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

LogFile = /var/service/smf/logs/proxy/proxy.log
MsgLogFile = /var/service/smf/logs/proxy/msg.log
TwistdLogFile = /var/service/smf/logs/proxy/twistd.log

[proxy1-ipv6]
MyRpcUrl = http://[::1]:8000/arms/xmlrpc
RsRpcUrl1 = http://[::1]/rs/rpc/arms-xmlrpc/
ApiListenAddress = ::1

ArmsListenAddress = 2001:db8::1

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/op6

LogFile = /var/service/smf/logs/proxy/proxy.6log
MsgLogFile = /var/service/smf/logs/proxy/msg.6log
TwistdLogFile = /var/service/smf/logs/proxy/twistd.6log

自動起動設定

ARMS-Proxy サーバがシステムの起動時に自動起動されるよう設定します。

# /sbin/chkconfig --add arms-proxy
# /sbin/chkconfig arms-proxy on

ARMS-Proxy サーバの起動

ARMS-Proxy サーバを起動させるには以下のように入力してください。

# /sbin/service arms-proxy start

ARMS-Proxy サーバの停止

ARMS-Proxy サーバを停止させるには以下のように入力してください。

# /sbin/service arms-proxy stop