ここまでのあらすじ
次のテクニックの活用により、Raspberry Pi 4Bをベクトルタイルサーバに使うアイディアを急速に実装しつつあるところです。
- ストレージ速度問題の克服のため、普通にext4でフォーマットしたHDDを接続する
- HTTP/2を使用する(ベクトルタイルのアクセスパターンだと、速度がかなり向上)
- 前項のために、Let's EncryptでSSL証明書をとる
- 前項のために、ドメイン optgeo.org を獲得運用する
- サーバはいわゆる自宅サーバ方式とし、動的 DNS に近い運用を Route 53 で追求することにする
- 監視メッセージは Slack に投げる
このあらすじの中で、外から見た IP アドレスのモニタリングと DNS レコードの動的更新は未実装ですが、ベクトルタイルサーバとしては概ね安定してきていると思います。
Unixらしい使い方をすることに躊躇しない、というアプローチをとったのが奏功しているように主観的には思っています。
運用デモ
直面している課題
ベクトルタイルサーバを維持しつつ、新たなベクトルタイルを生産していきたいと思っています。
ホストと生産は機体を分けたほうが良いはずなので、複数の Raspberry Pi 4B を集団使用することになります。
現在のところ、機体ごとに持たせているプロジェクトが違うという形になっていますが、これは非効率的です。そもそも、Raspberry Pi を immutable infrastructure のように使うというのが当初コンセプトでした。
そこで、ネットワーク・ストレージの使用について考慮することになります。
NFS使用の可能性についての初期的検討
- Raspberry Pi で NFS は使えるようです。
- NFS の速度は大体 10MB/s 程度になるようです。
- 通常、Raspberry Pi の SD カードストレージの速度は 50MB/s オーダーなのだそうです。
- NFSのバージョンを適切に選べば、sqliteのデータを置いても問題ないという情報があります。mbtilesファイルはsqliteのファイルなので、このことは考慮するべきと思っています。ただし、実際には、どのストレージに何を置くのか、というのは back pressure に関して考察した経験によって決めると思います。そうすると、mbtiles は少しでも速い方のストレージに置くのかもしれません。むしろ、ソースデータの一時置き場とかに NFS ストレージは有効かなと思います。
ということで、手隙の時間で試してみようと思っています。