プロジェクト

全般

プロフィール

機能 #430

完了

Minio の運用検討 (TrueNAS からの移動)

nop_thread さんが4ヶ月前に追加. 3ヶ月前に更新.

ステータス:
終了
優先度:
通常
担当者:
開始日:
期日:
進捗率:

100%

一時中断:
いいえ
pinned:
いいえ
確認予定日:
前回確認日:
2024/07/22
管理外残件あり:
いいえ

説明

機能 #429: kanade をメイン NAS にするための移行作業 でまたしても Minio の運用を再考する羽目になった。
今回は TrueNAS 上で動かす以外の選択肢を考える。


関連するチケット 1 (1件未完了0件完了)

次のチケットをブロック 鯖缶 - 機能 #429: kanade をメイン NAS にするための移行作業待機中nop_thread

操作

nop_thread さんが4ヶ月前に更新

  • 次のチケットをブロック 機能 #429: kanade をメイン NAS にするための移行作業 を追加

nop_thread さんが4ヶ月前に更新 · 編集済み

minio のユーザ:

  • Gitea
    • 旧インスタンスを利用
    • 止めてよい
    • そもそも有効に使っていないしセットアップも古いので、サーバごと消して良い
    • サイズは Git LFS の利用状況次第
      • そもそも Gitea の LFS がいまひとつ信用しきれない (それゆえ利用も避けている) ところがあるので、使うのをやめてしまっても良い
      • アバター画像に使われているようなのでひょっとするとコメントに添付したメディアとかにも使われるのかもしれないが、自分用インスタンスなら関係ない
  • Thanos
    • 新インスタンスを利用
    • 短時間なら止めてよい
    • 今後も使うつもり
    • サイズはなかなかのもの
      • 2024-05-21 〜 2024-07-16 の2ヶ月弱で 1.8 GiB に到達している。ざっと 1 GiB/mo. くらいか
      • 監視対象 (あるいはメトリクスの詳細度) が増えればもちろん増加ペースも増える。数倍ペースも想定した方が良いかもしれない
      • どうしようもなくなったら古いものを消していけば良いので、破滅的な結果になる前に手は打てる
  • Ryot
    • 旧インスタンスを利用
    • 止めてよい
    • 今後も使うつもり
    • 何故か minio が使われていない
      • 設定では S3-compatible なストレージを設定してあるはずだが、オブジェクトが置かれていない。 postgresql のデータも (du コマンドによれば) 28 MiB なので、そちらにメディアがあるとも思えない
      • カバー画像などの類は anilist や tmdb の画像が直接参照されている
    • object storage を使わないこともできるので、一旦 Minio を使う設定は削除して良いかもしれない

nop_thread さんが4ヶ月前に更新

重要な利用は Thanos だけ。

Thanos はマイクロサービス群なので、「Thanos コンテナに Minio も同居させる」のようなことは考えず、共有の Minio サーバを用意するか専用の Minio サーバを用意するかのどちらかになる。

nop_thread さんが4ヶ月前に更新

Ryot で何故か object storage が使われていない件、どうも Minio サーバの名前解決に失敗しているようだった……

nop_thread さんが4ヶ月前に更新

Ryot の object storage 設定は削除した。

nop_thread さんが4ヶ月前に更新

Gitea も潰して良いものとして、であれば新インスタンスだけどうにか移行できれば良いということになる。
まあ1つも2つも大差ないような気はするが。

nop_thread さんが4ヶ月前に更新

  • ステータス新規 から 進行中 に変更
  • 優先度通常 から 高め に変更
  • 前回確認日2024/07/16 にセット

nop_thread さんが4ヶ月前に更新 · 編集済み

nop_thread さんは #note-2 で書きました:

  • 2024-05-21 〜 2024-07-16 の2ヶ月弱で 1.8 GiB に到達している。ざっと 1 GiB/mo. くらいか
  • 監視対象 (あるいはメトリクスの詳細度) が増えればもちろん増加ペースも増える。数倍ペースも想定した方が良いかもしれない

10倍して 10 GiB/mo. としても 1 TB まで8年程度かかるので、クラスタ全体としては今のところ恐れるほどのサイズではないはず。
(10倍で済むかはしらないが……)

PVE のノードや Ceph 等に直接置くには十分嫌なサイズだが、 NAS を Minio コンテナにマウントして使わせるような方向であれば通信コストは全然問題にならないと考えて良いと思われる。
特に Thanos は15秒ごととかにメトリクスを置くだけだし、なんなら直近のメトリクスは Prometheus 側で持っているはずなので Thanos に上がるのはもっと低い頻度かもしれないし、そもそも通信の頻度もそう高くなさそう。
Querier のレスポンスは遅くなるかもしれないが、まあ許容範囲だろう。いざとなればキャッシュをどうにか挟んでやればよい (可能かは知らないが……)
通信の頻度の低さとサイズのコンスタントな増加を考えると、 Thanos 用の minio は他の用途と共有せず独立したコンテナで用意してやるのが良さそうか。

nop_thread さんが4ヶ月前に更新

どうせ Thanos 用に持つなら、 Wasabi に置いてある過去の Prometheus メトリクスも撤収して良いかもしれない。
Wasabi の web UI から確認すると、今の時点で thanos-20211020 bucket が 5.01 GB、thanos-20231208 bucket が 6.42 GB となっている。

ただ、どうせこいつらは完全にコールドで当面活用の予定のないデータなので、 S3 の API からアクセスできるようにするのは完全に無駄で、アーカイブして強く圧縮をかけておくのが正解な気はする。

何にせよ Wasabi の active storage を 1TB も使っていないので、まったく急ぎではない。

nop_thread さんが4ヶ月前に更新

  • 前回確認日2024/07/16 から 2024/07/18 に変更

nop_thread さんが4ヶ月前に更新

  • 進捗率0 から 70 に変更

Thanos 専用の minio コンテナを chuable に立てた。
ディレクトリは仮想ディスク等ではなくホストの mount を使っている (サイズの拡張が楽なため)。

nop_thread さんが4ヶ月前に更新 · 編集済み

作業:

  • Thanos の compactor と store を止める
    • querier とかは objstore に直接アクセスせず thanos-store と prometheus を経由しているので無関係。
  • mc mirror で旧 minio サーバから新サーバへ同期
  • Thanos の objstore 設定を、新サーバを使うよう更新
  • 旧サーバを潰す

nop_thread さんが4ヶ月前に更新 · 編集済み

Jul 21 20:56:38 thanos-bucket-web thanos[95]: ts=2024-07-21T11:56:38.089158588Z caller=runutil.go:117 level=error msg="function failed. Retrying in next tick" err="BaseFetcher: iter bucket: Get \"https://<new-minio-host>/<bucket>/?delimiter=%2F&encoding-type=url&fetch-owner=true&list-type=2&prefix=\": tls: failed to verify certificate: x509: certificate signed by unknown authority"

おっと。
Caddy の設定がうまくいっていないか?

compactor と store を再起動する前に thanos bucket web で確認しておくべきだった。

nop_thread さんが4ヶ月前に更新

nop_thread さんは #note-13 で書きました:

Jul 21 20:56:38 thanos-bucket-web thanos[95]: ts=2024-07-21T11:56:38.089158588Z caller=runutil.go:117 level=error msg="function failed. Retrying in next tick" err="BaseFetcher: iter bucket: Get \"https://<new-minio-host>/<bucket>/?delimiter=%2F&encoding-type=url&fetch-owner=true&list-type=2&prefix=\": tls: failed to verify certificate: x509: certificate signed by unknown authority"

おっと。
Caddy の設定がうまくいっていないか?

> メ ッ セ ー ジ を 読 め <

自前 CA のルート証明書をインストールしていないせいだった。
store と compactor と bucket web に導入。

web UI 上でのエラーは出なくなったが、今度は "No blocks found." と言われているし、 systemd journal を確認するとやっぱり "certificate signed by unknown authority" と言われている。

nop_thread さんが4ヶ月前に更新

S3 の設定に http_config.tls_config.ca_file を追加したところ、問題なく動作するようになった。

type: S3
config:
  bucket: <bucket>
  endpoint: <endpoint>
  region: <region>
  insecure: false
  access_key: <access-key>
  secret_key: <secret-key>
  http_config:
    tls_config:
      ca_file: <ca-file>.crt  # ←これ!

nop_thread さんが4ヶ月前に更新

  • ステータス進行中 から 終了 に変更
  • 優先度高め から 通常 に変更
  • 進捗率70 から 100 に変更
  • 前回確認日2024/07/18 から 2024/07/22 に変更

Thanos sidecar から問題なくアップロードされている様子を確認した。
完了。

nop_thread さんが3ヶ月前に更新

  • 管理外残件ありいいえ にセット

nop_thread さんは #note-2 で書きました:

  • Ryot
    • 何故か minio が使われていない

公式ドキュメントを確認したところ、データのエクスポートでのみ使われる様子だった。

You need to have S3 configured in order to export your data. You can find the necessary configuration parameters under the FileStorageConfig section.

Exporting - Ryot Documentation

道理で使われていなかったわけだ。

他の形式にエクスポート: Atom PDF