web-dev-qa-db-ja.com

予期しないイカの動作(openSUSEアップデートのキャッシュ)

これまでの経験がないので、squidプロキシを設定しました。その唯一の目的は、すべてのLinuxシステム(openSUSE)がインターネットから更新をダウンロードしないようにすることです。

OpenSUSEアップデートツール用にプロキシを簡単に設定できます。 tcpdumpは、他のシステムがプロキシにアクセスし、プロキシがリポジトリにアクセスすることを示しています。

わからないこと:ディストリビューションのアップグレード後、最初のオンラインアップデートは400MiBから700MiBになるはずです(これは、アップデートを開始する前にYaSTが言っていることです)。ただし、squidストレージディレクトリには約80MiBのデータしか含まれていません。

access.logはヒットとミスの両方を示します。なんらかの奇妙な理由でLinuxシステムが異なるサーバーにアクセスする場合でも(DNSに透過しないリダイレクトのようなものはありますか?)、プロキシストレージは少なくとも最大のダウンロードと同じ大きさになると思います。

リポジトリはhttpではなくhttpsであるため、プロキシに問題はないはずです。

問題が見つかりました

このリンク in この回答 ここでイカがうまく機能しない理由についての情報を提供します:

パッケージは、複数のミラーに分散されたセグメント化されたダウンロードを使用してダウンロードされます。これにより、squidは多くのキャッシュを実行できなくなります。

2
Hauke Laging

私はこのチュートリアルを見つけました: SquidでopenSUSEリポジトリをキャッシュする方法

抜粋

ローカルのSquidWebキャッシュをopenSUSEリポジトリおよびopenSUSEネットワークインストールプロセスで機能させる方法。事実上、完全に自律的なローカルのオンデマンドリポジトリミラーを実行する方法。高速ADSLインターネット接続でも、最大60%の節約を簡単に実現できます。

以下は、その記事のステップバイステップの詳細です。

ステップバイステップ

  1. いか

    Squid Webプロキシはこのセットアップの重要な要素であるため、Squidのインストールが機能していることが前提条件です。 Squidの設定は、見た目ほど複雑ではありませんが、squidのドキュメントを参照する必要があります。これは、この記事の範囲外です。環境変数http_proxyet alを使用してアクセスを指示することを好むか、または(私のように)透過プロキシを実行するかどうかは、それほど重要ではありません。

    注:ここでの設定はSquid 2.7で機能しますが、storeurl_rewrite機能はまだSquid3.xに実装されていないと思います。

  2. jesred

    jesredはURLリライタです。それはかなり成熟していますが、完全に機能しています。 ( 元のウェブページ )。 squid 2.7 と完全に互換性を持たせるために、いくつかの変更を加える必要がありました。

    現時点では、パッケージ化されていないため、最初から作成する必要があります。

    tar xzvf <tarball>
    cd jesred-1.3
    make
    

    インストール:完了したら、バイナリjesredを/usr/local/binまたは自分のバイナリの任意の場所にコピーします。

    Jesredの設定ファイル:/etc/squid/jesred.conf

    allow = /etc/squid/redirector.acl
    rules = /etc/squid/opensuse-redirect.rules
    redirect_log = /var/log/squid/redirect.log
    rewrite_log = /var/log/squid/rewrite.log
    

    /etc/squid/redirector.aclを使用すると、リライターが処理するクライアントのリクエストを制御できますが、実際にはSquidのACLとstoreurl_accessディレクティブを使用すると制御が簡単であることがわかったため、すべてのクライアントに対して有効にします。

    # rewrite all URLs from
    0.0.0.0/0
    
  3. /etc/squid/squid.conf

    構成:次の行を/etc/squid/squid.conf storeurl_rewrite_program/usr/bin/jesredstoreurl_rewrite_childrenに追加します5

    acl metalink req_mime_type application/metalink4+xml
    storeurl_access deny metalink 
    
    storeurl_access allow localnet
    storeurl_access allow localhost
    
    acl localhost src 127.0.0.0/8
    acl localnet src 192.168.0.0/16
    
  4. fetcher206ログファイル

    /etc/squid/squid./confを次のように修正します。

    logformat f206 %{%Y-%m-%dT%H:%M:%S}tl %Ss/%03Hs %rm %ru %mt
    access_log /var/log/squid/fetch206.log f206
    

    このログはfetcher206によって読み取られます。

    大きくなりすぎないようにするには、/etc/logrotate.d/に次を追加します。

    /var/log/squid/fetch206.log {
       compress
       dateext
       maxage 365
       rotate 5
       size=+4M
       notifempty
       missingok
       create 640 squid root
       sharedscripts
       postrotate
        /etc/init.d/squid reload
       endscript
    }
    
  5. イカの遅延プール

    これはオプションの手順です。使用可能なダウンストリーム帯域幅に応じて、リポジトリファイルを取得するためにfetcher206が使用するものを制限することができます。これは防止します

    • 現在のインストールを遅くし、
    • インターネット接続の乱用
    delay_pools 1
    delay_class 1 1
    delay_access 1 allow localhost
    delay_parameters 1 1000000/1000000
    

    上記を/etc/squid/squid.confに追加します。これは1つのdelay_poolを定義し、最大帯域幅が1MByte/secのlocalhost(fetcher206がwgetを実行する場所)からのみアクセスできます。

    ローカルホストから発信された他のhttp /プロキシトラフィックがある場合は、別の127.0.0.xアドレスを追加し、それを特にfetcher206に使用できます。

  6. ミラーデータベース

    利用可能なopenSUSEミラーの現在のリストが必要です。これはmirrors.opensuse.orgから取得できます。とりあえず、XSLを使ってHTMLページを解析しますが、MirrorBrainから直接適切な形式のリストに移動したいと思っています。

    mkdir -p /var/lib/fetcher206
    cp tarball/Makefile.mirrors /var/lib/fetcher206/Makefile
    cp tarball/extract* /var/lib/fetcher206/
    make -C /var/lib/fetcher206
    cp tarball/opensuse_mirrors.cron /etc/cron.d/opensuse_mirrors
    
  7. イカをリロード

    ここまで来たら、イカをリロードします。

    squid -k reconfigure
    
  8. fetcher206

    fetcher206は、当面の間、PHPスクリプトです。/usr/binにコピーするだけでインストールできます。同時に実行するwgetの数など、ハードコードされたオプションがいくつかあります。 、ログファイルの名前など。

    fetcher206には、systemdサービスユニットもLSBinit-scriptもまだありません。当分の間、あなたは単にそれを以下から始めます:

    startproc -s -q /usr/bin/fetcher206
    

参考文献

2
slm