このHowtoでは、Armadillo-IoT G3/G3L,Armadillo-X1(以下Armadilloと記載)にてネットワークの切断,瞬断に対して備えておきたいことをご紹介します。
Armadilloを使用した運用では、Ethernet,3G/LTE,wwanを用いてネットワークに接続し、データ通信を行うと思われます。
システム稼働中にネットワークが切断されると、データが送信できず消失する,管理者が状態を把握できなくなる などの問題が発生する可能性があります。
ネットワークの切断,瞬断は完全に防ぐことが困難であるため、その問題を想定した対策を予め設計する必要があります。
今回はネットワークが一時的に使用できなくなった場合に考慮すべき事をご紹介します。
データ送信不能時のデータ管理
Armadilloがクラウド等とネットワーク経由でデータ通信を行っている場合、当然ながらネットワークが切断されてしまうと通信は行えません。
実装によっては、ネットワークの状態関係なくセンサー等からArmadilloにデータが送られることも考えられます。
このとき最新より古いデータも必要である場合、保持方法を考慮する必要があります。
データのキャッシュ
キャッシュとは、データ等を一時的に保持することです。
取得したデータをキャッシュする処理を実装することで、ネットワーク切断時にもある程度のデータを貯めておくことができます。
以下に、定期的にlogファイルを送信するシステムのキャッシュ実装例を記載します。
- ファイル名に保存時刻を付け一時退避用のディレクトリに追加する。
- ディレクトリ内を確認し、時刻が古い順からデータを送信する。
- 送信完了したデータは逐次削除する。
ただし、長時間のネットワーク切断が発生すると一時データ量が多くなるため、キャッシュするデータの総数を制限するなどの対策が必要です。
ネットワーク接続状況監視
Armadilloの稼働状況を確認するために、ネットワーク接続状況の監視方法を考慮すると良いです。
これを行うことで、Armadilloの異常発生時にいち早く対応することが可能となります。
ネットワークの接続状況監視は、Armadillo自身または外部から監視することが可能です。
Armadillo自身から監視
Armadilloがデータ送受信を行う際の成否だけではなく、定期的にnmcliやnetstatを用いてネットワークが正常に接続されているか監視することができます。
Armadillo自身から監視することで、ネットワーク接続異常発生時にシステムの処理を変更する等対処が可能となります。
外部から監視
Armadilloの外部から監視を行うことで、遠方に設置したArmadilloが異常発生した際に対処することが可能です。
例として、Armadilloに対してPCから定期的にpingを送ることで、ネットワークと接続されているか確認することができます。
また、クラウド経由の遠隔監視・管理サービスnode-eyeを利用することで、ブラウザ上からArmadilloを監視することも可能です。
複数ネットワークの利用
Ethernetと3G/LTEまたはwwanを同時に利用できる環境であれば、Ethernetの通信ができなくなった場合に接続を切り替える といったシステムを設計することで通信不能を回避することも可能です。
ただし、切り替え時に接続が完了するまでの時間待つ必要があることを考慮したうえでシステム設計を行ってください。