1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Sonatype Nexus Repository: 安定運用のための重要ポイント

Posted at

Sonatype Nexus Repository とは

プロダクトで多数のnpmパッケージを使用しており、稀にネットワークエラーでCI/CDが失敗することがあったため、npmパッケージ等のキャッシュをローカルに持つために、Sonatype Nexus Repositoryを導入しました。
Sonatype Nexus Repositoryは、ビルドアーティファクトや依存関係を一元管理するためのリポジトリマネージャで、以下のような特徴があります。

  • アーティファクトの管理: ビルドプロセスで生成されたバイナリや依存関係を一元管理できます。
  • リポジトリの統合: Maven、npm、yumなど、複数のリポジトリ形式をサポートし、一箇所で管理が可能です。
  • キャッシュ機能: リモートリポジトリのキャッシュを保持し、ビルド時間の短縮やネットワーク負荷の軽減が可能です。

Sonatype Nexus Repository 運用時のポイント

つまづきや運用ポイントをまとめておきます。

ストレージに4GB以上の空き容量を確保することが必須

運用初期に以下のようなエラーが発生したことがあります。

com.orientechnologies.orient.core.exception.OLowDiskSpaceException: Error occurred while executing a write operation to database ‘component’ due to limited free space on the disk (4092 MB). The database is now working in read-only mode. Please close the database (or stop OrientDB), make room on your hard drive and then reopen the database. The minimal required space is 4096 MB. Required space is now set to 4096MB (you can change it by setting parameter storage.diskCache.diskFreeSpaceLimit)

Nexus で採用している OrientDB は空き容量が4096 MB必要とのこと。
枯渇するとDBへの書き込みが止まり、リポジトリからのファイル取得等できなくなります。

クリーンアップポリシーの設定

proxyを使う場合、日に日に増えていくリポジトリのサイズを抑えるために、クリーンアップポリシーを設定することが重要です。
Component Age(キャッシュしてからの経過日数)、Component Usage(最後に使われてからの経過日数)の2つのポリシーがあります。

個人的には、Component Usage を採用しています。

日数は30日程度で良いかなと思います。

Task にクリーンアップを設定

ポリシーを作ったらそのポリシーを実行するためのTaskを作成します。
毎日実行する必要も無いので、週に1回程度で十分かと思います。
以下のように設定し運用しています。

  • Task frequency:
    Weekly
  • Time to run this task:
    23:00
  • Days to run this task:
    Saturday

Task に Admin - Compact blob store を設定

最近気づいたのですが、クリーンアップのTaskを設定しただけではファイルは物理的に削除されません。
Nexus のドキュメントをみたところちゃんと書いてありました。
https://help.sonatype.com/en/cleanup-policies.html

A soft delete means that artifacts are only marked for removal and not yet deleted from the disk. Disk space is not reclaimed until the Admin - Compact blob store task runs.

ソフトデリートだから、ファイルは削除されていないと。
Admin - Compact blob store のTaskを作成し、実行することでファイルが削除されるということなので、これも設定しておきましょう。
ソフトデリートの後が良さそうなので、以下のように設定して運用しています。

  • Task frequency:
    Weekly
  • Time to run this task:
    01:00
  • Days to run this task:
    Sunday

まとめ

これらのポイントを押さえて運用すれば、Sonatype Nexus Repositoryを安定して効率的に運用することができます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?