※obniz2台以上にアプリをインストールし、obnizの近くにLogtta CO2を配置してください。
また、Amazon EC2でインスタンスを作成しておいてください。
masterのみを使用する場合
Amazon EC2にSSH接続します。
$ ssh ec2-user@{EC2のアドレス} -i ~/.ssh/{key}
チュートリアル: Amazon EC2 インスタンスでの Node.js のセットアップの手順通りに行います。
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
$ . ~/.nvm/nvm.sh
$ nvm install 16.13.0
$ node -e "console.log('Running Node.js ' + process.version)"
https://github.com/obniz/obniz-app-sdk_logtta-co2_demo をcloneし、環境変数を設定しながら実行します。
ts-nodeを用いてTypescriptファイルをNode.jsとして直接実行しています。
$ sudo yum install git
$ git clone https://github.com/obniz/obniz-app-sdk_logtta-co2_demo.git
$ cd obniz-app-sdk_logtta-co2_demo
$ npm ci
$ APP_TOKEN={アプリトークン} LOGTTA_CO2_ADDRESS={Logtta CO2のMACアドレス} npx ts-node src/index.ts
"アプリトークン"は、アプリの実装方法にて、obniz CloudでHosted Appを作成した際のトークンです。
master/slaveを使用した負荷分散
IPアドレス構成(LAN)
master: 172.31.40.186
slave: 172.31.35.144
masterのみの構成をもう一台作り、masterにRedisを導入します。
Amazon ElastiCacheなどを使用しても構いませんが、説明簡略化の為masterにインストールします。
# masterサーバー
$ sudo amazon-linux-extras install redis6
$ redis-server --protected-mode no # 簡略化の為セキュリティレベルを下げて起動(起動中にsshを切断するとRedisも終了します)
masterのセキュリティグループを編集し、slaveからアクセスできるようにします。

slave起動
# slaveサーバー
$ git checkout scaling
$ INSTANCE_TYPE=slave REDIS_URL=redis://172.31.40.186:6379 APP_TOKEN={アプリトークン} LOGTTA_CO2_ADDRESS={Logtta CO2のMACアドレス} npx ts-node src/index.ts
master起動
# masterサーバー
$ git checkout scaling
$ INSTANCE_TYPE=master APP_TOKEN={アプリトークン} LOGTTA_CO2_ADDRESS={Logtta CO2のMACアドレス} npx ts-node src/index.ts
# ここまででslaveとmaster両方にobnizが割り当てられ、負荷分散しているのを確認できます
⚠先にslaveを起動しないとmasterが内包しているslaveに取られてしまうので注意してください。
master, slaveにてworkerが動作中にslaveが終了した場合、自動的に他のslaveに割り当てられます。
今回の例ではmasterが内包しているslaveに割り当てられます。