1.2. ICE Backend 運用ガイド

1.2.1. サービスの起動・停止

セットアップ手順に従って環境を構築する事でBackendサーバに下記のサービスが登録されます。

インストールされるサーバグループ サービス名 説明
mq_servers ice-msgrouter-cor e ICE Message Router
mq_servers rabbitmq-server RabbitMQ
db_servers mongod MongoDB
db_servers ice-mongo-express mongo-express
api_servers ice-backendapi1 ICE Backend API
api_servers nginx ファイルサーバ、リバースプロキシ

各サービスを起動・停止するにはOSが提供するサービス操作用のコマンドを使用してください。

例えば、ice-msgrouter-coreの起動・停止・状態確認は次のように実行します。

  • 起動

    $ sudo systemctl start ice-msgrouter-core
    
  • 停止

    $ sudo systemctl stop ice-msgrouter-core
    
  • 状態確認

    $ sudo systemctl status ice-msgrouter-core
    

1.2.2. サービスの監視

ここではICE Coreの機能を使用してICE Backendの稼働を確認する方法を説明します。

エッジで動作するICE Coreは定期的に、ICE Backendに対してHeartbeat通信を行います。通信間隔は標準で30分から60分の間で、毎回この範囲内でランダムな時間待ってからHeartbeat通信を行います。ICE BackendはエッジからHeartbeat通信を受け取ると、そのエッジIDと受信時刻を記録します。記録したHeartbeat情報は、ICE Backend APIでJSON形式で取得することができます。この機能を使用することで、エッジデバイスおよび、Backendで動作する次のサービスが正常に稼働していることを確認できます。

  • ICE Backend API
  • ICE Message Router
  • MongoDB
  • RabbitMQ
  • Nginx(リバースプロキシ機能)

Backend APIからHeartbeat情報を取得するには、次のURLにアクセスします。

http(s)://<ホスト名>/api/edge

取得した JSON データの”updated_at”の時刻が、最大Heartbeat通信間隔の60分以上前ではないことを確認することでBackend上の各種サービスが稼働していることが確認できます。

なお、上記のICE CoreのHeartbeat通信を使用した監視ではNginxのファイルサーバ機能を使用しないため、Nginxのファイルサーバ機能が正常に稼働しているかは確認できません。 Nginxのファイルサーバ機能の監視を行う場合は、ファイルサーバディレクトリに適当なファイルを作成して、そのファイルが正常にダウンロードできるかを定期的が確認してください。

1.2.3. 起動プロセス

ICE Backendでは、下記コマンドラインのプロセスが起動します。

1.2.3.1. mq_serverのプロセス

  • Message Broker (RabbitMQ)

    /usr/lib64/erlang/erts-10.1.3/bin/beam.smp (some options) -sname rabbit@localhost (some options)
    

    (some options) の部分にはその他いくつかのオプション引数が並びます

  • Message Router

    bin/node --optimize_for_size bin/../main.js ice-msgrouter
    

1.2.3.2. db_serverのプロセス

  • Data Store (MongoDB)

    /usr/bin/mongod -f /etc/mongod.conf
    
    /opt/nec/pf/ice/mongo-express/bin/node app.js mongo-express
    

1.2.3.3. api_serverのプロセス

  • Backend API

    /opt/nec/pf/ice/backendapi/v1/bin/node app.js backendapi
    
  • File Server / Web Server (Nginx)

    nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
    
    nginx: worker process
    

    設定によっては複数のworker processが起動します

1.2.4. ICE Backend のバックアップ / リストア

ICE Backend のバックアップ/リストアについて説明します。

以降、ICE Backendのインストール先が/opt/nec/pf/iceであることを前提に説明します。

リストア時は、バックアップしたデータを使い、Ansibleによる再セットアップ、退避データによる置換、サービスの再起動を行ってください。

1.2.4.1. mq_server のバックアップ

  • Message Broker (RabbitMQ)

    次の設定ファイルをバックアップします。

    • /opt/nec/pf/ice/config/rabbitmq.config

    • /etc/rabbitmq/rabbitmq-env.conf

    • 証明書ファイル

      SSL/TLS通信を有効にしている場合には利用している証明書ファイルや秘密鍵のファイルをバックアップします。 ファイルのパスが不明な場合はrabbitmq.confgを確認してください。

    • 独自追加・変更したアカウント情報

      Ansilbeによるセットアップ後、 独自にRabbitMQのアカウント情報を変更している場合その内容を確認します。

  • Message Router

    次の設定ファイルをバックアップします。

    • /opt/nec/pf/ice/msgrouter_core/conf 配下全て

1.2.4.2. db_server のバックアップ

  • Data Store (MongoDB)

    次の設定ファイルをバックアップします。

    • /opt/nec/pf/ice/config/mongod.conf

    • /opt/nec/pf/ice/config/mongodb-keyfile

    • /opt/nec/pf/ice/config/mongo-express.config.js

    • 独自追加・変更したアカウント情報

      Ansilbeによるセットアップ後、 独自にMongoDBのアカウント情報を変更している場合その内容を確認します。

ICEは Data Storeを一時的なデータ格納場所として定義しおり、Data Store内のデータはバックアップ対象とはしていません。

例えば、ICE Coreからの接続情報がData Storeに格納されますが、 バックアップ/リストアの運用で接続情報が消えても、 ICE Coreからの定期的なハートビートにより更新されるためいずれ接続情報が復元されます。

これら情報に依存したアプリケーションによって、常に接続情報を維持したい場合は、 Data Store内のrawdataデータベースの情報をMongoDBのツールなどでバックアップしてください。

1.2.4.3. api_server のバックアップ

  • Backend API

    次の設定ファイルをバックアップします。

    • /opt/nec/pf/ice/config/backendapi1.config.json
    • /opt/nec/pf/ice/config/backendapi1.log4js.json
    • /opt/nec/pf/ice/backendapi/v1/config/default.yaml
  • File Server / Web Server (Nginx)

    次の設定ファイルをバックアップします。

    • /etc/nginx/nginx.conf

    • /etc/nginx/conf.d 配下全て

    • 証明書ファイル

      SSL/TLS通信を有効にしている場合には利用している証明書ファイルや秘密鍵のファイルをバックアップします。 ファイルのパスが不明な場合はnginx.confを確認してください。

    • 配布対象のアップロード済みファイル

      /var/www/html/deliver以下に格納されています。 これらのうち必要なものを退避します。

1.2.4.4. 共通

  • Ansibleセットアップ時の設定ファイル

    Ansibleによるセットアップを行った際の下記ファイルをバックアップします。

    • group_vars/ice.yml
    • group_vars/mq_servers.yml
    • group_vars/db_servers.yml
    • group_vars/api_servers.yml
    • group_vars/lb_servers.yml
    • group_vars/RedHat_7.yml
    • group_vars/CentOS_7.yml
    • hosts_inventory
  • Ansibleによるセットアップ後手動で追加・変更した設定

    Ansilbeによるセットアップ後、 下記設定を手動で変更している場合は、その設定を確認しておきます

    • ファイアウォール設定
    • kernelパラメータ
    • syslogのローテーション設定