Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

go-apt-cacher/mirror

10,805 views

Published on

Aptレポジトリに特化したキャッシュプロキシ go-apt-cacher とミラーリングツール go-apt-mirror の紹介です。

https://github.com/cybozu-go/aptutil

Published in: Technology
  • Be the first to comment

go-apt-cacher/mirror

  1. 1. go-apt-cacher/mirror 2016/07/16 @第141回東京エリアDebian勉強会 サイボウズ株式会社 湯谷啓明 1
  2. 2. go-apt-cacher/go-apt-mirrorとは •Aptレポジトリに特化したキャッシュプロキシ/ ミラーリングツール •ハッシュの一致をチェックするので壊れない! •Go製 https://github.com/cybozu-go/aptutil 2
  3. 3. CybozuとDebian •サーバはUbuntu •サービスに必要なコンポーネントはdebパッ ケージ化してAptレポジトリ(JFrog Artifactory)で 集中管理 参考: 社内利用のための deb パッケージング入門 http://blog.cybozu.io/entry/2016/05/16/111500 3
  4. 4. CybozuとDebian 4 Apt レポジトリ Data Center 1 Data Center 2 Data Center 3 キャッシュ ミラー
  5. 5. JFrog Artifactory •アーティファクト管理ツール •OSS 版は Maven レポジトリ機能のみ •商用版は apt, yum, npm, PyPI, … と多種 •REST API で CI/CD ツールと連携できる •リモートレポジトリのミラーはできない •リバースプロキシ兼キャッシュはできる 5
  6. 6. キャッシュ/ミラーが必要な理由 •Artifactoryの負荷を減らしたい •パッケージダウンロードを速くしたい 更新頻度が高く、ファイルが少ない → 必要なものだけキャッシュ 更新頻度が低く、ファイルが多い → (レポジトリの一部を)まるごとミラー 6
  7. 7. go-apt-cacherの特徴 • ReleaseやPackagesからチェックサム情報を抽出 • ダウンロードしたファイルのチェックサムが合わなければ 破棄 • Release は定期的にチェックし、チェックサムが更新され たファイルのキャッシュは自動破棄 • HTTP ヘッダは無視 • キャッシュした Release を定期的に自動更新 • 他のファイルは上記チェックサム変更の自動破棄で対応 • Go なので速い • 同時 1,000 クライアントも余裕 • キャッシュ済みファイルは 1ms 以下で処理 7
  8. 8. go-apt-mirrorの特徴 • 部分的ミラー • Suite, Section, Architecture, Source を指定 • 必要なものだけミラー • rsync より高速な更新 • インデックスを先に処理してファイルのチェックサム情報を入手 • 以前と変化がなければローカルファイルシステム上で再利用 • 不完全なミラーは決して作らない • インデックスおよびファイルのチェックサムはすべてチェック • 正しいセットが作れない場合、ロールバック • ミラーの更新がアトミック • 更新中の状態は決して見せない 8
  9. 9. 実装で大変だったところ 9 •Debian Control Fileのパース •存在しないファイルがRelease/Packagesに 記載されている •ファイルはひとつのインデックスだけに書 かれているとは限らない •ファイルが存在しないと違うフォーマット のファイルを返してくる …
  10. 10. Feedbacks are welcome!! 昨日リリースしたばかりなのでバグもあると思 いますが、よければ使ってみてください ※弊社での必要性に応じて作られたツールで、 既存のツールを置き換えるものではありません 10

×