debiancdn

AWS, Content Delivery Network and Debian

カテゴリーアーカイブ: web

tokyo.vclで発表してきた。varnish+squid混在ネタで。

Varnish3のリリースパーティーも兼ねたTokyo.vclのためにクックパッドさんへ。

その時の様子はtogetterに。はじめての人が集う集会はいろいろむずかしいですなあ。

なぜかイカが表示されないslideshareの資料もつけとく。

CentOSにvarnishをinstallする

特にむずかしいことは何もないが、dependの解決が微妙にいいかげんなので、2行目でdependしているpackageをいれている。

 rpm --nosignature -i http://repo.varnish-cache.org/redhat/el5/noarch/varnish-release-2.1-1.noarch.rpm
 yum install  logrotate libgomp gcc cpp binutils kernel-headers glibc-headers glibc-devel expect -y
 yum install varnish -y

Squid27のpurgeを有効にする2つの方法:aclに書いてしまう

禁止URLをこんなかんじでsquid.confにでも追記すればok.

aclに

acl cacheclear00 url_regex ^http://www.araki.net/tmp/24.html$
acl cacheclear00 url_regex ^http://www.araki.net/tmp/25.html$
no_cache deny cacheclear00

この時点で,このfileはキャッシュされなくなる.

アクセスはできるので,DIRECT または sibling で取りにいくことになる.

この行を追加した時点でcacheは消えているので、PURGEコマンドの代替としても使える。

Squid27のpurgeを有効にする2つの方法:PURGEコマンド

purgeができないと実際の運用ではやってらんない。

ひとつめの方法はPURGEコマンドを使う方法。

purge.conf

acl PURGE method PURGE
http_access allow PURGE localhost
http_access allow PURGE localnet
http_access deny PURGE

とかを作っておいて,includeする.purgeするときはsquidclientを使う.

 squidclient -m PURGE http://www.araki.net/tmp/24.html

リモートホストのcacheを消すなら,-h でホスト名を指定する.

 squidclient -h squid2 -m PURGE http://www.araki.net/tmp/24.html

squidのsibling設定

「お前のcacheはおれのもの、俺のcacheも俺の物」これがsquidのsiblingの基本。

squidはsiblingの設定をしていると、次のように動作する。

  1. 自分のcacheを確認。あったらクライアントに返す。
  2. なかったらsiblingに問い合わせ。あったら自分にcacheして、クライアントに返す。
  3. それでもなかったらoriginに問い合わせ。あったら自分にcacheして、クライアントに返す。

つまりsiblingのcacheは自分のcacheのように使える。

http://www.flickr.com/photos/ediblexart/1557458575/ Siblings by EdiblexArt, on Flickr

二台hostがあったとして、それぞれのhostには自分のsiblingを書いてやりさえすればok

1.2.3.7の/etc/squid/sibling.confには

 cache_peer 1.2.3.6 sibling 3128 3130

1.2.3.6の/etc/squid/sibling.confには

 cache_peer 1.2.3.7 sibling 3128 3130

とでも書いて、include /etc/squid/sibling.conf してやればいい。

おまけ。

 refresh_pattern .               0       100%      20160

としているが,20160は,最大cache時間が20160分(=14日)という意味.

結局のところ、/etc/squid/squid.conf

acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 443         # https
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 3128
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
refresh_pattern .               0       100%      20160
coredump_dir /var/spool/squid
include /etc/squid/sibling.conf

squid 2.7 on CentOS

Squidをreverse proxyで使う話。

Squid Twister by Articulate Matter, on Flickr

いまどきsquidってナイヨナーという気もするのですが、

  • 昔おせわになった
  • siblingやらparentやらをつかうとoriginへの負担が小さくすむ
  • メモリが小さくてもそれなりに動く

というような理由で使うことも多い。

squidは2.xと3.xがあるが、何を使うべきなのかといえば、俺の答えは「squid2.7を使う」である。理由としては

  • 3.xはまだまだ枯れていない。http://wiki.squid-cache.org/RoadMap/Squid3あたりをみると、まだまだこれから感。
  • とはいえ,2.xは古すぎる。特に今時のマシンに適した中身になっていない。
  • ところが、2.7では、3.xで導入されたマルチコア対応の機能が使えるなど、http://wiki.squid-cache.org/RoadMap/Squid2 perfomace改善に必要な改善はなされている。

以下,インストールの話。

  • debianならapt-get install squidで済む(2.7.STABLE9-2.1あたりがはいる)
  • CentOSやRHEL 5 ならhttp://people.redhat.com/jskala/squid/squid-2.7.STABLE9-1.el5/x86_64/squid-2.7.STABLE9-1.el5.x86_64.rpmからとってくる.
yum install perl perl-URI
rpm -i squid-2.7.STABLE9-1.el5.x86_64.rpm
mkdir -p /var/log/squid/run

/etc/init.d/squidがまちがってるので修正.

--- squid.dist  2010-11-22 06:07:05.000000000 +0900
+++ squid       2010-11-22 06:08:03.000000000 +0900
@@ -9,7 +9,7 @@
 #      requesting site than to the source. Web browsers can then use the \
 #      local Squid cache as a proxy HTTP server, reducing access time as \
 #      well as bandwidth consumption.
-# pidfile: /var/run/squid.pid
+# pidfile: /var/log/squid/run/squid.pid
 # config: /etc/squid/squid.conf
 
 PATH=/usr/bin:/sbin:/bin:/usr/sbin
@@ -63,7 +63,7 @@
     if [ $RETVAL -eq 0 ]; then 
        timeout=0;
        while : ; do
-          [ ! -f /var/run/squid.pid ] || break
+          [ ! -f /var/log/squid/run/squid.pid ] || break
          if [ $timeout -ge $SQUID_PIDFILE_TIMEOUT ]; then
             RETVAL=1
             break
@@ -88,7 +88,7 @@
        rm -f /var/lock/subsys/$SQUID
        timeout=0
        while : ; do
-               [ -f /var/run/squid.pid ] || break
+               [ -f /var/log/squid/run/squid.pid ] || break
                if [ $timeout -ge $SQUID_SHUTDOWN_TIMEOUT ]; then
                    echo
                    return 1

最後に

 chkconfig squid on

もわすれずにしておく。

FirefoxかChromeかというのはなんか不毛な気がする

Debian的には特に不毛.なぜなら..DebianにはIceweaselだから.

まあそれは置いておくにしても,Chromeとfirefoxを行き来してるとどっちもいいなあと思うのは俺だけじゃないはず.そして,その行ききの方法なり,使い分けの方法なりを自分なりに最適化すればいいだけじゃないのかと思う.

言うだけだとあアレなので,自分で整理してみる.

Firefoxをよろしくするもの.

  • Fireboot: windowsのみ.windowsでfirefoxがおせえ,とブータレルまえに一度は試すべき.言語ファイルを削ることによる高速化.
  • SQLite Optimizer: SQLiteを最適化してくれる.

FirefoxとChromeの行き来を楽にするもの.

  • LastPass:これでFirefox, Chrome, Opera, IE, Safariはパスワード共有が問題なし.
  • Xmarks: Firefox, Chrome, IE, Safariのブックマーク共有.ただ,たまにおかしい.chrome-devとかfirefox-devつかってるせいなんだけど.

あとはオンラインサービスを使えばいいんだよね.はてなでも,deliciousでも.

addonつかいまくりのFirefoxユーザがgoogle chromeにのりかえるためにやったことの一例

先日もGoogle Chromeへの乗り換えを考えていると書いたけど,だいぶ安定してきたのでまとめておく.

必須extension

自分には便利なextension

まあいれてるものextension

  • Go Up は ひとつ上のdirに移動するものなのだが,いまいち使いにくい
  • Google Similar Pages beta (by Google)いれてはみたものの,似たpageというのがべつに気持よくないというか..出現しないことも多い.
  • Del.icio.us ToolsFFのdelicious addonのような決定版がでるまでのつなぎだろうか..
  • Hatena Bookmark GoogleChrome extension自分はhatenaにしろdeliciousにしろbookmarkするためにはtaberarelooをつかっているので,あまり意味はないが,どのように新機能が加わっていくのかを見たくていれているかんじ.
  • RSS Subscription Extension (by Google)
  • Google reader RSS Subscriberどうせgoogle readerをつかうなら,上のRSS subscription extension (by Google)よりよくできてると思う.ワンクリックでいけるので楽.
  • Youtube Auto HD

Shiretoko

Releases – MozillaWiki
Index of /pub/mozilla.org/firefox/nightly
をみていたら,Firefox-3.5.5preがいれたくなったのでいれた.

わりと調子いい.3.5.4はtestから使っていたのだが手元で動いてたアドオンもそのままうごいたし.気持メモリ消費が少ない気がする.

Adsweep.orgを試してみる.

http://www.adsweep.org/ はどんなもんかとおもって,ff3.5b4 on macosx(intel)で試してみる.

  • ぐりもんのscriptなので,chrome,ff,opera,そのへん何でも動く.そのメモ.1.5.31.2の話.
  • なぜかホワイトリストにsmart.fm, mapa.btsearch.plがはいってる.
  • リストを超絶がんばっている(特に外部dbをつかっているとかではない)
  • 日経とかで使うと,広告が一瞬表示されてから消える,といった動きをする. あまり速度が速いとかいう印象は受けない.
  • そういう意味ではadblockがわりとしっかりしてるffで使う意味はないかもしれない.