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のローテーション設定