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: nebula/java-logic-server:8
    volume: /opt/cloudfn/java-server
    cmd: java -jar /opt/emitter/cloudfn-java-server.jar

  java8:
    repoTag: nebula/java-logic-server:8
    volume: /opt/cloudfn/java-server
    cmd: java -jar /opt/emitter/cloudfn-java-server.jar

  node: # latest
    repoTag: nebula/node-logic-server:8
    volume:/opt/cloudfn/node-server/package
    cmd: node /opt/emitter/bin/server.js

  node8:
    repoTag: nebula/node-logic-server:8
    volume:/opt/cloudfn/node-server/package
    cmd: node /opt/emitter/bin/server.js

  node6:
    repoTag: nebula/node-logic-server:6
    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> の箇所にスペック名を記述します。 スペックが複数存在する場合は、複数セット指定する必要があります。

設定項目は以下のとおりです。

  • repoTag : 起動する Docker イメージの repository/tag 名
  • volume : 起動するロジックサーバが格納されたディレクトリ
  • cmd : Docker コンテナ内で起動時に実行するコマンドライン

起動タイプを 'docker' に指定した場合は Docker 経由でサーバが起動されます。

spec.[spec].volume で指定したディレクトリは、コンテナ内の "/opt/emitter" ディレクトリに固定的にマウントされます。 spec.[spec].cmd では、これを意識してサーバを起動するように記述してください。

起動タイプを 'direct' に指定した場合は Docker は使用せず直接サーバが起動されます。 サーバの起動には cmd に指定したコマンドラインが使用されます (Dockerコンテナ内ではなくサーバホスト上で直接起動しますので注意してください)。 なお、repoTag, volume の値は無視されます。

6.1.2. サーバマネージャログ出力設定

サーバマネージャが出力するログの設定は、/etc/baas/cloudfn-server-manager-logback.properties ファイルで行います。 設定ファイルのサンプルは /opt/cloudfn/etc-samples/ ディレクトリに格納されていますので、/etc/baas ディレクトリにコピーして 編集してください。

設定ファイルの例を示します。

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>