(1).Varnish概要
ワニスは、高性能オープンソースで、HTTPアクセラレータ効果的にアクセス速度を向上させるためのウェブサーバーの負荷を軽減することができます。公式声明によると、ニスキャッシュは、HTTPリバースプロキシのタイプです。
ニスの著者ポール・ヘンイング・カンプはFreeBSDカーネルの開発者の1、彼はに比べて、現在のコンピュータと信じている1975年には多くの複雑なを持っています。で1975、記憶媒体の2つだけ種類:メモリとハードディスクドライブ。しかし、コンピュータシステムのメインメモリのメモリに加えて、も含むCPU内のL1、偶数のL2、L3キャッシュ。デバイスはまた、そう、あなたのハードディスク上に独自のキャッシュを持っているイカキャッシュオブジェクトは、このような状況が行う最適化することはできません、自分の代わりのアーキテクチャを扱うが、オペレーティングシステムは、これらの例を学ぶことができるので、作業のこの部分は、操作を手渡しする必要がありますある処理システム、ニスキャッシュ設計アーキテクチャ。
ときワニスの展開は、Webリクエストを処理するいくつかの変更となります。クライアントの要求は、最初のワニスは受け入れられます。ニスは、受信した要求を分析し、バックエンドのWebサーバーに転送します。バックエンドWebサーバーの要求処理ルーチン、およびワニスを順次処理結果を返します。
しかし、ワニス機能はこれに限定されるものではありません。ワニスのコア機能は、キャッシュされたバックエンドのWebサーバーが返すの結果、同じ要求に従うことを見つけた場合、ワニスは、Webサーバに要求を転送しますが、結果キャッシュを返しません。これは、効果的になり、応答速度を向上するために、Webサーバの負荷を軽減し、毎秒多くの要求を応答することができます。ニスが速いもう一つの大きな理由は、そのキャッシュメモリが全てであり、ディスク上よりもはるかに高速です。だから想像を絶するスピードニスのような、対応する最適化の措置。重複コンテンツのキャッシュを回避しながら、手動でキャッシュ容量の制限を設定する必要があるので、しかし、考慮に入れて、実際のシステムメモリは、通常、限定されています。
注文処理キャッシュ:受信した要求 - (あなたのURLの解析、あなたの最初の解析部)解析を要求 - ハッシュを計算する - キャッシュを探す - ソースに新鮮検出--- ---キャッシュされたアクセス - 確立応答メッセージを - と応答を記録します。
ポートリスニング6081を、管理プロセスの管理は、子が処理し子供/キャッシュ、公式サイトhttps://www.varnish-cache.org/を。
比較例(2).Varnish特徴とイカ
ニス特徴:
メモリベースのキャッシュ、データは再起動後に消えます。
仮想メモリ・モード、良いI / Oパフォーマンスの使用。
サポートキャッシュは0〜60秒以内に正確な時間を設定します。
VCL(ワニス自分フィールド固有の言語であるフルネームワニス設定言語)構成管理より柔軟。
32ビットマシン上のキャッシュファイルのサイズは最大2Gです。
それは、そのようなので、上のトップ、STAT、管理者、リストととして強力な経営能力を持っています。
ステートマシン設計巧妙な、明確な構造。
正の目的を達成するため、削除、バイナリヒープ管理キャッシュファイルを使用してください。
ニスやイカの比較:
同じポイント:
これは、リバースプロキシサーバであり、
両方のオープンソースソフトウェア。
のイカ利点と比較してニス:
ワニスの高い安定性は、両方のイカの使用は、常に再起動する必要があるため、ニスよりも同じ、イカサーバ障害の作業負荷を完了するためのチャンスに、
ワニスのアクセスを高速化、ワニスは、「ビジュアルページキャッシュ」技術を採用しましたイカは、ハードディスクから読み取られている間のすべてのデータには、ワニスの高速なアクセス速度、キャッシュメモリから直接読み取ることができ、
ワニスは、より多くの同時接続をサポートすることができ、イカ速くよりのでニスTCPコネクションの解放、そう;非常に同時接続でより多くのTCP接続をサポートすることができ
、管理ポートを使用してワニスいくつかのキャッシュボリュームをクリアするために正規表現を使用し、イカを行うことができません。
イカは、シングルコアCPUを使用して、単一のプロセスに属しているが、ワニスがあります行うためのフォーク形状により、マルチプロセス処理を開き、対応する要求を処理するために、すべてのコアを使用するのが妥当です。
イカの欠点と比較ニス:
ハイ状態の同時CPUでニス、I / Oとメモリリソースがオーバーヘッドイカよりも高くなっている。
ワニスプロセス一度ハング(保留)、クラッシュ(クラッシュ)または再起動、キャッシュデータが完全にメモリから解放され、その後、すべてのリクエスト高い同時実行の下で、それが大きなストレスのバックエンドサーバの原因となります、バックエンドサーバーに送信され、
単一HA / F5(負荷分散)によって要求URLが、ある場合にワニスワニスに異なるサーバに各リクエストを使用バックエンドサーバへのワニスの要求が浸透され、同じ要求を複数のサーバにキャッシュされます、また、ワニスをキャッシュするリソースの無駄を引き起こす可能性があり、また、パフォーマンスの低下を引き起こす可能性があります。
(3)ワニスをインストールします。
1)設置環境
ソースパッケージのインストールyouxi1 192.168.1.6
youxi2 192.168.1.7 yumの例をインストールすると、Webバックエンド
youxi3 192.168.1.8のWebバックエンド
2)インストール
youxi1ソースインストールvarnish6.2.0(推奨インストール)
//安装依赖包 #yumを-yのautoconf automakeにするのlibedit-develののlibtoolのncurses-develののPCRE-develのpkgconfigののpython3-のdocutilsののpython3-スフィンクスgraphvizの作るインストール[youxi1〜@ルート] [ルート@のyouxi1〜]#タールXFワニス-6.2。 0.tgz -Cは/ usr / local / srcに/ [ルート@のyouxi1〜]#のCD /usr/local/src/varnish-6.2.0/ [youxi1ワニス-6.2.0 @ルート]#./configureを--prefix =は/ usr / local /ニス 作る&& make installを#[youxi1ワニス-6.2.0 @ルート] #エコー$ [youxi1ワニス-6.2.0 @ルート]を? 0 #のCDは/ usr / local /ニス/ [youxi1ニス-6.2.0 @ルート] #ます。mkdirなど[youxi1ワニス@ルート] [ルートyouxi1ワニス@]#cpはシェア/ DOC /ニス/ example.vclなど/デフォルト。 VCL //生成VCL配置文件
yumをyouxi2に(理解するのは簡単)ワニスをインストール
[ルート@のyouxi2〜]#vimの/etc/yum.repos.d/varnishcache_varnish62.repo [varnishcache_varnish62] 名= varnishcache_varnish62 BASEURL = HTTPS://packagecloud.io/varnishcache/varnish62/el/7/$basearch repo_gpgcheck = 1 gpgcheck = 0 = 1有効 //packagecloud.io/varnishcache/varnish62/gpgkey:gpgkey = HTTPS sslverify = 1 sslcacert =の/ etc / PKI / TLS /本命/ CA-bundle.crt metadata_expire = 300 [varnishcache_varnish62ソース] 名= varnishcache_varnish62 -source BASEURL = HTTPS://packagecloud.io/varnishcache/varnish62/el/7/SRPMS repo_gpgcheck = 1 gpgcheck = 0 有効= 1 gpgkey = HTTPS://packagecloud.io/varnishcache/varnish62/gpgkey sslverify = 1 = sslcacertの/ etc / PKI / TLS /本命/ CA-bundle.crt metadata_expire = 300 [youxi2ルート@〜]#yumのキャッシュyumをyumをすべて&& //クリアリストをきれいにし、再生成 yumの[ルート@ youxi2〜]#を - yのワニスをインストール
3)設定youxi1上のニスキャッシュyouxi2上のサイトを
youxi1コンフィギュレーションファイルのVCLを変更
#のVimの/usr/local/varnish/etc/default.vclの[youxi1〜@ルート] バックエンドのデフォルト{〜16 //最初の行19 .host = "192.168.1.7"; //は、WebサイトのバックエンドのIPアドレスを変更します 。ポート=「80」;バックエンドの//レビューWebサイトのポート番号 } サブvcl_deliver {線35開始//キャッシュはここでヒット IF(obj.hits> 0){ SET =キャッシュresp.http.X「ヒットキャッシュ"; } {他 SETはCache- = resp.http.X"キャッシュミス「; } }
設定の環境変数
[ルート@ youxi1〜]#Vimの/etc/profile.d/varnish.sh エクスポートPATH =は/ usr / local /ニス/ binに:は/ usr / local /ニス/ sbinに:$ PATH #1 / [ルート@〜youxi1]。など/のprofile.d / varnish.sh //負荷環境変数
スタートワニス
[ルート@ youxi1〜]#varnishd -a 192.168.1.6:80,HTTP -f /usr/local/varnish/etc/default.vcl デバッグ:バージョン:b14a3d38dbe918ad50d3838b11aa596f42179b54ワニス-6.2.0リビジョン デバッグ:プラットフォーム:Linuxでは、3.10。 0-957.el7.x86_64、x86_64版、-jnone、-sdefault、-sdefault、-hcritbit デバッグ:子供(18374)開始 [ルート@ youxi1〜]#psのの補助| グレップのvarnishd ルート18364 0.0 0.0 22188 1532?SL 22:59午後十二時00 varnishd -a 192.168.1.6:80,HTTP -f /usr/local/varnish/etc/default.vcl ルート18374 1.8 4.4 1029912 89468?SLL 22:59午後十二時00 varnishd -a 192.168.1.6:80,HTTP -f /usr/local/varnish/etc/default.vcl ルート18593 0.0 0.0 112724 992 PTS / 0 S +午後11時00分0:00はgrep -色=自動varnishd [ルート@ youxi1〜]#ファイアウォール-CMD --permanent --zone =パブリック- -add-ポート= 80 / tcpの&&ファイアウォール-CMD --reload 成功 成功
バックエンドのWeb youxi2のテストアップ
[ルート@ youxi2〜]#yumを-yのhttpdをインストールし ます。[root @ youxi2〜]#エコーyouxi2> /var/www/html/index.html [ルート@ youxi2〜]#は、httpdの起動systemctl [ルート@ youxi2〜]#ファイアウォールを-cmd --permanent --zone =公共--add-ポート= 80 / tcpの&&ファイアウォール-CMD --reload 成功 成功
最後のテスト
そして、キャッシュヒットテスト、情報のみのHTTPレスポンスヘッダを取るために-Iオプションを作るためにcurlコマンドを使用して、Webコンテンツを取ることはありません
[ルート@ youxi1〜]#カール-I 192.168.1.7 //这是直接访问youxi2 HTTP / 1.1 200 OK 日:日、2019年8月4日午前15時14分16秒GMTの サーバー:Apacheの/ 2.4.6(CentOSの) 直前に入って更新:日、2019年8月4日14時56分47秒GMTの ETagを: "7-58f4bccfca680" のAccept-範囲は:バイト 7:コンテンツ長 のContent-Type:text / htmlのを。文字セット= UTF-8 [ルート@ youxi1〜]#カール-I 192.168.1.6 //第一次访问youxi1 HTTP / 1.1 200 OK 日:日、2019年8月4日夜03時14分19秒GMTの サーバー:Apacheの/ 2.4.6 (CentOSの) のLast-Modified:日、2019年8月4日14時56分47秒GMTの ETagを: "7-58f4bccfca680" のContent-Length:7 のContent-Type:text / htmlの。文字セット= UTF-8 X-ワニス:12 年齢:0 のVia:1.1ワニス(ワニス/ 6.2) X-キャッシュ:ミス・キャッシュ//これはヒットしなかった のAccept-範囲は:バイト 接続:キープアライブ [ルート@ youxi1〜]#-I 192.168.1.6 // 2番目の訪問カールyouxi1 HTTP / 1.1 200 OK 日:日、2019年8月4日15時16分39秒GMTの サーバー:Apacheの/ 2.4.6(CentOSの) のLast-Modified:日、2019年8月4日14時56分47秒GMT のETag: "7-58f4bccfca680" のContent-Length:7 のContentタイプ:テキスト/ HTML;のcharset = UTF 8 X-Varnish-:15 32773 年齢:2 ビア:1.1ワニス(ワニス/ 6.2) X -キャッシュ:キャッシュ//ヒットは、キャッシュヒット今回 のAccept-範囲を:バイト 接続:キープ-alive
キャッシュの短い時間、あなたはhttpdの長いリンク機能の設定(設定プロファイルしようとすることができ、キープアライブにし、その後、再起動します)
4)設定ニスキャッシュ複数のサイト(youxi1、youxi1上youxi2)
youxi1コンフィギュレーションファイルのVCLを変更
[ルート@ youxi1〜]#Vimの/usr/local/varnish/etc/default.vcl バックエンドyouxi2 {元のデフォルトの//ホスト名 .host = "192.168.1.7"; .port = "80"; } バックエンドyouxi3 {//マルチ作成 .host = "192.168.1.8"; .port = "80"; } サブvcl_recvを{//でvcl_recvを追加する 場合(req.http.host〜「^(WWW )を使用。?。 CN "){//正規マッチング SETのreq.http.host =" www.you.cn "; SET req.backend_hint = youxi2; //点youxi2リア } ELSIF(req.http.host〜" ^ bbs.you .CN「){//正規整合 セットreq.backend_hint = youxi3; //点youxi3リア } }
再起動ワニスは、あなたがパッケージpsmiscのをインストールするには、killallをコマンドを使用する必要があります
[ルート@ youxi1〜]#yumを-y psmiscのをインストールし ます。[root @ youxi1〜]#killallをvarnishd [ルート@ youxi1〜]#varnishd -a 192.168.1.6:80,HTTP -fは/ usr / local /ワニスは、/ etc / default .vcl デバッグ:バージョン:b14a3d38dbe918ad50d3838b11aa596f42179b54ワニス-6.2.0リビジョン デバッグ:プラットフォーム:Linuxでは、3.10.0-957.el7.x86_64、x86_64版、-jnone、-sdefault、-sdefault、-hcritbit デバッグ:開始チャイルド(19017)
バックエンドのWeb youxi3のテストアップ
[ルート@ youxi3〜]#yumを-yのhttpdをインストールし ます。[root @ youxi3〜]#エコーyouxi3> /var/www/html/index.html [ルート@ youxi3〜]#は、httpdの起動systemctl [ルート@ youxi3〜]#ファイアウォールを-cmd --permanent --zone =公共--add-ポート= 80 / tcpの&&ファイアウォール-CMD --reload 成功 成功
youxi1編集/ etc / hostsファイル
[ルート@のyouxi1〜]#のvimの/ etc / hostsの 192.168.1.6 www.you.cn 192.168.1.6 bbs.you.cn
テスト
[ルート@ youxi1〜]#カール www.you.cn // 最初の訪問、あなたがポイントですyouxi2見ることができます youxi2 -I www.you.cnに[ルート@のyouxi1〜]#カール// 2番目の訪問を、ちょうどHTTPレスポンスヘッダを取り、キャッシュヒットがあることが分かる HTTP / 1.1 200 OKがある 日、04 - 2019年8月16時09分19秒GMTの:日 サーバー:Apacheの/ 2.4.6(CentOSのは) のLast-Modified:日、04 - 2019年8月GMT午後2時56分47秒 のETag: "7-58f4bccfca680" のContent-Length :. 7 のContent-Type:テキスト/ HTML;のcharset = UTF 8。 X-Varnish-:32772. 5 年齢:12である ビア:1.1ワニス(ワニス/ 6.2) X- -cache:キャッシュヒット//キャッシュヒット のAccept-範囲:バイト 接続:キープアライブ [ルート@ youxi1〜]#カールbbs.you.cn //最初の訪問は、あなたがyouxi3時点見ることができます youxi3 [ルート-I bbs.you.cnカール@ youxi1〜]# // 第二の訪問、単にHTTPレスポンスヘッダを取り、あなたはキャッシュヒットを見ることができます HTTP / 1.1 200 OK 日:日、2019年8月4日午前16時09分49秒GMTの サーバー:Apacheの/ 2.4.6(CentOSの) のLast-Modified:日、2019年8月4日16時07分43秒GMTの ETagを: "7-58f4ccaa0e583" コンテンツの長さ:7 のContent-Type:text / htmlの。文字セット= UTF-8 X-ニス:32774 8 年齢:6 経由:1.1ワニス(ワニス/ 6.2) X-キャッシュ:HITキャッシュ のAccept-範囲:バイト 接続:キープアライブ
(4)拡張
1)なぜキャッシュを使用します。
アクセスされるデータは、複数の訪問で、再びホットデータをアクセスすることができます。
データは、アクセスされた後、彼にもう一度最も近いをご覧いただくか、クライアントに近いでしょう。
2)キャッシュ、高速、読まれるための最良の方法については、すべてのメモリ内にあります。
コモンメモリデータベース、memcachedの、Redisの、HANA。
しかし、ページのために、あまりにも非現実的、メモリーにキャッシュを格納するために、ディスクキャッシュメモリ+の道を全体を置きます。
キー値、メモリに格納されたキー、値記憶ディスク。
3)データ形式:キー値
キー:キーのメモリに格納されたアクセス・パス、URL、特定の機能、計算されたハッシュ結果、。
値:ページ本体、ユーザーの皆様は、一般的に、高速のハードドライブに保存され、実際のコンテンツを取得します。
メモリ、高速ハードディスクドライブ:4)すべてのキャッシュバッファに関連付けられた、二つの物体と不可分です。
5)一般的な用語:
ヒット:それは、あなたのキャッシュサーバは、ほとんどのフロントエンドサーバーのいずれかになり、ウェブサイトであれば、キャッシュからデータを削除します。
ヒット率:ヒット数/(非ヒット数のヒット+数)。
熱データ:データが頻繁にアクセスされます。
宇宙メモリキャッシュ、ディスクキャッシュ容量。
クリーンアップ:定期的な清掃、LRU(一般的に使用されていない、削除するデータのクラスの最も古い)、定期的に更新(パージ)。
Cacheオブジェクト:ユーザー情報、クッキー、トランザクション情報、ページメモリ、オブジェクトのすべての理解。
参考:https://www.oschina.net/translate/speed-your-web-site-varnish?print