Litestream
RDB 使いたいケチケチ構成のときに
基本
起動時に litestream restore ...
litestream replicate -exec /start/app ... して変更を反映
注意
デフォルトの設定は /etc/litestream.yml (.yaml は読まない)
複数のクライアントで同時に実行しない
仕組みを想像すれば当然だけど、max_instance=1 だし複数から参照すると書き込みが競合する可能性がある
だいたい起動オプションでよいが書かないと設定できないもの
litestream restore -o PATH REPLICA_URL で path かけるし
litestream replicate -exec CMD PATH REPLICA_URL で同期してアプリケーション起動もできる
config に書かないとだめなやつ
addr :9090 prometheus 用のメトリックエンドポイント、localhost:9090/metrics が立つ
replicate タイミングで立つ(要出典)ので、restore → replicate していたら probe で参照するのに便利
retention や sync 周りの interval 設定
logging 設定、type: json にしておくと Cloud Logging で快適
GCS なら KEY 不要
ローカルならマウントすればいい
コンテナの時
docker run ... -v ~/.config/gcloud/application_default_credentials.json:/gc/adc.json -e GOOGLE_APPLICATION_CREDENTIALS=/gc/adc.json ...
Google Cloud 上なら何もせんでいい
retention
アプリケーション起動から一定時間ごとなら短くしておきたいな(挙動まだわかってない)
retention-check-interval は起動から、retention は Storage 上の保持ウィンドウかな
コピペ Docker ステップ
code:Dockerfile
# USER root
ENV LITESTREAM_VERSION=v0.3.13
RUN ARCH=$(case $(uname -m) in x86_64) echo 'amd64';; aarch64) echo 'arm64';; *) echo 'unsupported' && exit 1;; esac) \
--output /tmp/litestream.deb \
&& dpkg -i /tmp/litestream.deb \
&& rm /tmp/litestream.deb