6. 設定¶
6.1. サーバマネージャ設定ファイル¶
Cloud Functionsサーバの設定ファイルは、YAML ファイルとして作成します。 設定ファイルは /etc/baas/cloudfn ディレクトリに server-manager-config.yaml という名前で作成してください。
6.1.1. 設定ファイルの書式¶
設定ファイルの書式は以下の通りです。
system:
type: 起動タイプ
noChargeKey: APIカウント対象外キー
amqp:
uri: AMQP URI
usercode:
host_root_dir: ユーザコード展開ベースディレクトリ
docker:
uri: Docker URI
fluentd:
address: fluentd IPアドレス:ポート番号
spec:
<spec>:
repoTag: Docker イメージの repository/tag 名
volume: ロジックサーバが格納されたディレクトリ
cmd: Docker コンテナ内で実行するコマンドライン
設定項目は以下のとおりです。
- system
- type: 起動タイプを指定します。 'docker' を指定した場合は Docker を使用してロジックサーバを起動します。 'direct' を指定した場合は Docker は使用せずロジックサーバを直接起動します(Dockerレス)。
- noChargeKey: モバイルバックエンド基盤サーバ側に対する内部操作(コードダウンロードなど)を API カウントの対象外とするためのキーです。モバイルバックエンド基盤サーバの設定 の値に合わせてください。
- amqp : AMQP 設定
- uri : AMQP 接続 URI
- usercode : ユーザコード設定
- host_root_dir: ユーザコードを展開するベースディレクトリです
- docker : Docker設定
- uri : Docker URIです。通常は unix:///var/run/docker.sock を指定します。
- fluentd : fluentd 設定
- address : fluentd のIPアドレス:ポート番号です。Docker コンテナ内からアクセス可能なアドレス/ポート番号を指定してください。
- spec: スペックを指定します。詳細は後述します。
Docker を使用する場合のサンプルを以下に示します。
system:
type: docker
noChargeKey: sAmPleNoChargeKey12345678
amqp:
uri: amqp://guest:guest@localhost:5672
usercode:
host_root_dir: /var/cloudfn/usercode
docker:
uri: unix:///var/run/docker.sock
fluentd:
address: 172.17.0.1:24224
spec:
java: # latest
repoTag: necbaas/java-logic-server:8
volume: /opt/cloudfn/java-server
cmd: java -jar /opt/emitter/cloudfn-java-server.jar
java8:
repoTag: necbaas/java-logic-server:8
volume: /opt/cloudfn/java-server
cmd: java -jar /opt/emitter/cloudfn-java-server.jar
node: # latest
repoTag: necbaas/node-logic-server:14
volume:/opt/cloudfn/node-server/package
cmd: node /opt/emitter/bin/server.js
node14:
repoTag: necbaas/node-logic-server:14
volume:/opt/cloudfn/node-server/package
cmd: node /opt/emitter/bin/server.js
Docker を使用しない場合(Dockerレス)の例を示します。
system:
type: direct
noChargeKey: sAmPleNoChargeKey12345678
amqp:
uri: amqp://guest:guest@localhost:5672
usercode:
host_root_dir: /var/cloudfn/usercode
fluentd:
address: 172.17.0.1:24224
spec:
java: # latest
cmd: java -jar /opt/cloudfn/java-server/cloudfn-java-server.jar
java8:
cmd: java -jar /opt/cloudfn/java-server/cloudfn-java-server.jar
node: # latest
cmd: node /opt/cloudfn/node-server/package/bin/server.js
node8:
cmd: node /opt/cloudfn/node-server/package/bin/server.js
注意
Node.js を使用する限り、上記設定は amqp.uri, system.noChargeKey 以外変更する必要はありません。 上記の値をそのまま使用してください。
注意
Dockerレスの場合は、spec に適合する Java / Node.js のバージョンを事前にインストールしておく必要があります。
警告
Docker コンテナが Fluentd に接続できない場合 (fluentd.address が正しくないか,Fluentd が起動していない場合),Docker コンテナは起動に失敗します. その際に,起動に失敗したプロセスが残ってしまう場合があります.
スペック¶
「スペック」はロジックサーバを実行する環境の設定です。 「スペック名」はスペックを一意に指定する文字列で、ファンクション定義ファイルから指定します。
上記設定ファイルでは、<spec> の箇所にスペック名を記述します。 スペックが複数存在する場合は、複数セット指定する必要があります。
起動タイプ 'docker' の場合¶
起動タイプを 'docker' に指定した場合は Docker 経由でサーバが起動されます。
設定項目は以下のとおりです。
- repoTag : 起動する Docker イメージの repository/tag 名
- volume : 起動するロジックサーバが格納されたディレクトリ
- cmd : ロジックサーバ起動コマンドライン (Docker コンテナ内で起動時に実行)
spec.[spec].volume で指定したディレクトリは、コンテナ内の "/opt/emitter" ディレクトリに固定的にマウントされます。 spec.[spec].cmd では、これを意識してサーバを起動するように記述してください。
注意
以前(ver 7.5.0以下)は repoTag は 'nebula/...' という形式でしたが、 ver 7.5.1 以降は 'necbaas/...' という形式となります。
新形式では、Docker イメージは Docker Hub から自動的にダウンロードされます。 (なお、ver 7.5.0 以前でも新形式の repoTag は利用可能です)
起動タイプ 'direct' の場合¶
起動タイプを 'direct' に指定した場合は、Docker は使用せず直接サーバが起動されます(Dockerレス)。
設定項目は以下の通りです。
- cmd : ロジックサーバ起動コマンドライン
サーバの起動には cmd に指定したコマンドラインが使用されます (Dockerコンテナ内ではなくサーバホスト上で直接起動しますので注意してください)。
6.1.2. サーバマネージャログ出力設定¶
サーバマネージャが出力するログの設定は、/etc/baas/cloudfn/server-manager-logback.properties ファイルで行います。 設定ファイルのサンプルは /opt/cloudfn/etc-samples/ ディレクトリに格納されていますので、/etc/baas/cloudfn ディレクトリにコピーして 編集してください。
設定ファイルの例を示します。
logback.level=INFO
logback.types=FILE
#logback.types=STDOUT,FLUENT
logback.logdir=/var/log/cloudfn
#logback.fluent.host=localhost
#logback.fluent.port=24224
- logback.level : ログレベルです。デフォルトは INFO になっています。
- logback.types : ログ種別を指定します。以下任意の値をカンマ区切りで指定します。
- STDOUT: 標準出力に出力します。
- FILE: ファイルに出力します。ファイル名は cloudfn-server-manager.log となります。ログは自動的にローテートされます。
- FLUENT: fluentd に出力します。
- logback.logdir : FILE を指定したときのログファイル出力ディレクトリを指定します。cloudfn ユーザが書き込めるよう permission を指定しておく必要がります。
- logback.fluent.{host|port} : fluentd のホスト名/ポート番号を指定します。
6.2. Fluentd の設定¶
ユーザコードが出力するログを、MongoDBに転送するための設定が必要です。
サーバ利用手順書の fluentdを利用したロギング を参照して td-agent.conf および baas-system.conf の設定を行ってください。
6.2.1. Cloud Functions ログ設定ファイル¶
/etc/td-agent/conf.d ディレクトリに baas-cloudfn.conf ファイルを作成します。 以下に例を示します。本ファイルは td-agent.conf から include で読み込まれます。
# MongoDB にユーザコード実行ログを出力する
<match nebula.cloudfn>
@type mongo
# MongoDBサーバのホスト
host localhost
# MongoDBサーバのポート(デフォルト:27017)
port 27017
database baas_log
collection nebula_customlogic
capped
# Collectionのサイズ
capped_size 1024m
# 認証(MongoDB認証有効時のみ、以下の項目追加)
#user baas
#password Passw0rD
#auth_source admin
<buffer>
# flush間隔
flush_interval 10s
</buffer>
</match>
<match nebula.cloufdn> タグ内に、ユーザコードログ出力のための設定を以下の通り記述します。
- データベース名は "baas_log" としてください。
- コレクション名は "nebula_customlogic" としてください。
- コレクションのサイズは適宜変更してください。
- 認証は MongoDB認証用ユーザ、パスワードと認証データベース名を設定してください。
注意
- BaaS v5 以前は <match nebula.customlogic> という記述となっていましたが、v6 では <match nebula.cloudfn> に変更となっています。
- MongoDB認証有効時のみ、user、passwordとauth_sourceの項目を追記し、MongoDB認証用ユーザ、パスワードと認証データベース名を設定してください。
- 認証データベース名とは、認証を行うユーザーが登録されているデータベースの名称のことです。
また、サーバマネージャおよび Java ロジックサーバのログをシステムログに出力するために、 モバイルバックエンド基盤サーバ側の fluentd の設定(baas-system.conf)も合わせて行ってください。
6.2.2. MongoDB レプリカセットを使用する場合¶
レプリカセットを使用する場合(シャーディングなし)は、設定ファイルの書式が若干変わります。
<match nebula.cloudfn>
# @type を以下記述に変更
@type mongo_replset
# nodes にホスト/ポート番号を記述
nodes localhost:27017,localhost:27018,localhost:27019
# host, port は記述削除
# その他の記述は同じ
...
</match>
6.3. モバイルバックエンド基盤サーバの設定¶
モバイルバックエンド基盤サーバ側に設定の追加・変更が必要です。
6.3.1. APIサーバ内部ベースURIの設定¶
デベロッパーコンソールの「APIサーバ内部向けベースURI」に Cloud Functions サーバから見た MBaaS APIサーバの URI を設定してください。
詳細は、「デベロッパーコンソール利用ガイド」の「システム設定」を参照してください。
6.3.2. RabbitMQ サーバ設定¶
RabbitMQ と通信するための設定が必要です。 モバイルバックエンド基盤サーバの設定ファイルに以下の項目を修正・追記してください.
(設定ファイルの記述方法については, コンフィグレーション を参照してください.)
項目名 | 説明 |
---|---|
amqp.uri | MBaaSサーバからみた RabbitMQ の AMQP Broker URI (追記) |
system.noChargeKey | APIカウント対象外キー (追記) |
以下に例を示します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
(中略)
<entry key="amqp.uri">amqp://guest:guest@localhost:5672</entry>
(中略)
<entry key="system.noChargeKey">sAmPleNoChargeKey12345678</entry>
</properties>