Bルートデータを保存する仕組み

日付:2017年10月11日 水曜日
テーマテクノロジー

IIJ 藤本です。今回の記事は少し毛色を変えて、スマートメーターから取得したBルートデータがどのように保存されるのか、サーバやシステムの面からお話ししたいと思います。
多分に技術的な内容を含みますが、どうぞお付き合いください。

システムの全体像

システムの全体像を紹介する前に、まずはこの図をご覧ください。

今回ご紹介するのは、図の中にある「メーターデータ管理システム(MDMS)」という部分になります。MDMSは文字通りBルートデータを収集し、それを皆様に提供しているシステムです。下はその全体像です。

サーバがたくさんあってややこしいですね(これでもかなり簡略化しているのです)。下に各サーバの役割などをまとめました。

種類 役割など
ロードバランサ
  • 一番最初にリクエストを受け取るサーバ
  • 何台もあるwebサーバに均等に仕事を割り振る役目を持つ
  • ロードバランサ1が何らかの理由で止まった場合は、自動的にロードバランサ2が仕事を引き継ぐ
webサーバ
  • MDMSの一番メインとなるサーバ
  • MDMSとして様々なデータを扱うプログラム(webアプリケーション)が動いている
  • ロードバランサから仕事を割り振られる
  • HTMLファイルも置かれている
  • 多くのリクエストを受け取って処理する必要があるため、複数台で負荷を分散している。
  • サーバを追加することで容易に処理能力を増やすことができる
データベースサーバ
  • Bルートデータを実際に保存している
  • mongoDB というデータベースを使用することで、大量のBルートデータを保存する仕組みを実現。
  • 3台で1セット
  • データベースサーバ1に保存されたデータは2と3にもほぼリアルタイムで同期される
  • 負荷が高くなった場合は3台セットを追加してデータを分散配置することができる

Bルートデータが送信されてきたり、皆様がBルート活用サービスの管理画面をブラウザで見たときは、

ロードバランサ ⇨ webサーバ ⇨ データベースサーバ

という流れでデータの保存や、グラフの表示が行われます。

メンテナンスをどのように行なっているか

Bルート活用サービスに何か新しい機能を追加したり、バグを修正するためには、webサーバを一度止めて動いているプログラムを更新する必要があります。
これは普段どのように行われているでしょうか。

実はロードバランサにはもう一つ重要な仕事があります。それは「webサーバから応答があることを常に確認する」という仕事です。
もしwebサーバから応答がなくなった場合、ロードバランサはそのwebサーバには仕事を割り振らないようにします。
これによりwebサーバが1台止まっていても他のwebサーバに仕事が割り振られるため、システムは問題なく動作することになります。

上記の仕組みがあるため、メンテナンスの際は

  1. webサーバ1を停止させてプログラムを更新
  2. webサーバ1を再起動
  3. webサーバ2を停止させて…

というようにwebサーバを順番に更新することで、MDMSを止めることなくメンテナンスを行っています。

障害からサービスを守る

サーバのハードウェアには高価な機器を使っていますが、それでも故障は必ず発生します。もしくはソフトウェアのバグで止まってしまうこともあるかもしれません。
そういった障害が発生してもサービスが止まらないように、各サーバは必ず複数台が連携して動作するような仕組みになっています。

上であげたメンテナンスの仕組みは、そのままwebサーバが故障した際にも当てはまります。
ロードバランサが常にwebサーバを監視しているため、全てのwebサーバが同時に止まらない限り、サービスは問題なく動作し続けます。

データベースについてはもう少し複雑で、1台が壊れてもデータの整合性を保ちつつ、データが消えないようにする仕組みが必要です。

Bルートデータはまず優先度の高いデータベースサーバ1に保存され、ほぼリアルタイムで他のサーバーに同期されます。
もしデータベースサーバ1が故障などで止まった場合、次に優先度の高いデータベースサーバ2が自動的にデータを受け付け始めます。
当然Bルートデータは既にデータベースサーバ2にも同期されているため、データが消える心配もありません。

このようにどこのサーバーで障害が発生しても、データを守りつつ、サービスを普段通りに使えるような仕組みが構築されています。

結び

分かりにくい部分もあったかと思いますが、いかがでしたでしょうか。
お客様のデータをどのように守っているか、サービスを停止させないためにどんな工夫をしているか、少しでもお伝えできていれば幸いです。

今後もお客様に安心してBルート活用サービスをお使いいただけるよう、開発者として最大限の努力をしていきたいと思います。