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

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

経験がなく、ただsquidプロキシだけを設定しました。唯一の目的は、すべてのLinuxシステム(openSUSE)がインターネットからアップデートをダウンロードするのを防ぐことです。

openSUSEアップデートツール用にエージェントを簡単に設定できます。tcpdumpエージェントにアクセスする他のシステムと、リポジトリにアクセスするエージェントを表示します。

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

このaccess.logショーは成功と失敗を共有しました。奇妙な理由で、Linuxシステムが他のサーバーにアクセスしても(どのようなDNS不透明リダイレクトがありますか?)、プロキシストアは少なくとも最大ダウンロードサイズと同じくらい大きいと予想されます。

リポジトリはですが、httpそうではないため、httpsプロキシに問題があってはなりません。

問題発見

このリンク存在するこの回答イカが正しく機能しない理由についての情報はここにあります。

パッケージは複数のミラーに分散された分割ダウンロードを介してダウンロードされるため、Squidが広範なキャッシュを実行するのを防ぎます。

ベストアンサー1

このチュートリアルを見つけました。Squidを使用してopenSUSEリポジトリをキャッシュする方法

抜粋

openSUSEリポジトリとopenSUSEネットワークインストールプロセスでローカルSquid Webキャッシュを使用する方法。完全に自律的なローカルオンデマンドストレージミラーを実際に実行する方法。高速ADSLインターネット接続を使用しても、最大60%まで簡単に節約できます。

以下は記事の段階的な詳細です。

段階的に

  1. イカ

    Squid Webプロキシはこの設定の重要な要素であるため、有効なSquidインストールは前提条件です。 Squidの設定はビューほど複雑ではありませんが、Squidドキュメントを参照する必要があり、このドキュメントの範囲外です。 http_proxyのような環境変数を使って直接アクセスを好むか、(私のように)透過的なプロキシを実行することを好むかどうかは実際には重要ではありません。

    メモ:ここの設定はSquid 2.7用です。 Storeurl_rewrite 機能は Squid 3.x ではまだ実装されていないようです。

  2. ジェスレッド

    jesredはURLリライトです。かなり成熟しながらも完璧に機能します。 (元のWebページ)。完全に互換性があるようにいくつかの変更が必要でした。イカ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/jesred storeurl_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に追加します。これは、最大帯域幅が1MByte / secのローカルホスト(fetcher206がwgetを実行する場所)からのみアクセスできる遅延プールを定義します。

    localhostからの別のhttp / proxyトラフィックがある場合は、別の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. イカを再装填する

    ここまで来たら、Squidwardを再ロードする時間です。

    squid -k reconfigure
    
  8. ゲッター206

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

    fetcher206にはまだシステムサービスユニットやLSB初期化スクリプトはありません。今は次から始めてください。

    startproc -s -q /usr/bin/fetcher206
    

引用する

おすすめ記事