debiancdn

AWS, Content Delivery Network and Debian

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

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でも.

オソのWAN accelerator

WAN accelerator でオソのやつを調べてみる.圧縮するくらいのはいくらでも頭にうかぶのであるが.

http://blog.internetnews.com/skerner/2010/05/riverbed-and-the-open-source-f.htmlのRiverbed and the Open Source Flameboxという記事がおもしろい.

We also talked about the open source model and how it applies to a proprietary networking vendor like Riverbed.Yes, Riverbed in some ways leverages open source and also contributes some testing components back. One of their bigger open source projects is something that internally carries the codename of ‘Flamebox’

WindowControlとかFECはあまりないように見える.特許とか山ほどあるからムリムリな気もするけどラストリゾートかね.

NTT R&Dフォーラム

本日は大学の研究室で共同研究している関係で,NTT R&Dフォーラム.1日説明員をしていた.厳密には3人で交代してたので.4割くらいの時間か.

ユーザの曖昧な行動情報を自動収集するアプリケーション(PDF)というものです.

(自分たちは「撮影禁止」だったため写真ありません.ぜひリンク先を見てください)

この方もおっしゃっていますが「象印のインターネットポット」の知名度はすごい.象印さんとの違いは

  • 家電製品を選ばない
  • 電源on/offだけではなく,どう使っているかがわかる.(わかる波形もある)
  • 使い方は自由!
  • twitterにもなげられる http://twitter.com/ims_demo08 <– こんな感じです.
  • 実はNGN/IMSを使っている(w

話を聞いてくれた方々,今後ともよろしくおねがいします.

とりあえずラヴ・ざ・わーるどという方のblogでしか,自分たちの発表はふれられていないようです..

これもPDFではわかりづらいが、みはりほっとラインと言う象印の電気ポットが有る。親が遠隔地にいてポットの使用状態をメールで送り、安否を確認出来るという製品である。

このコンセプトを汎用化したのがこの仕組みである。テレビや電子レンジや扇風機などの電源の波形を分析し、何がオンになり何がオフになったかを調べることが出来る。デモでは、ドライヤーの電源オン/電源オフの状態をとらえ、twitterに書き込んでいた。

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から使っていたのだが手元で動いてたアドオンもそのままうごいたし.気持メモリ消費が少ない気がする.

CDNをつくりましょうというネタ

Let’s make your CDN with RUBYというネタでrubykaigiのLTで話をしました.rubyのgemは頭がいいのでここまでの仕組みはいらないんですが.
このスライドを見て,興味を持った方がいらっしゃったら,いっしょにいじっていけると嬉しいです.

rubyKaigiたいへんいいイベントでした.そしてustがものすごくクオリティ高い.パラで見れなかったセッションを見ようかと思ったが,会場にいるのと遜色ないレベル.ustチームありがとうございます.

macportsのPortfileをいじってsocks問題解決

macportsのtsocksをいじったらDNSも無事引けるようになった.

経緯としては,次の一連の流れをmacportsのconfigureで指定してやればokというだけのことでした.

  1. クライアントでDNSのUDPクエリ
  2. tsocksで TCPに変換
  3. socksサーバにTCPでといあわせ
 cd /opt/local/var/macports/sources/rsync.macports.org/release/ports/net/tsocks
 more Portfile 

すると

以下のように二行追加してやる.あとは port install tsocks

configure.args   --with-conf=${prefix}/etc/tsocks.conf \
                 --libdir=${prefix}/lib \
                 --enable-socksdns \             <-- 追加
                 --disable-tordns \                <-- 追加
                 --mandir=${prefix}/share/man

最初は configで tordnsを無効にして,enable-socksdnsだけを追加してcompileしてたんだけど,それでは駄目でした.

socks生活version up

やんごとなき理由によりsocks環境を更新することになった.
というのも,そのやんごとなきsocks環境がいろいろ変わったことが問題.

port 22を転送しなくなったのとDNSが引けないというか返さないのが問題だった.

  • すくなくともmacosxからだとtsocksでserver_typeを4にしても,tordns_enableをtrueにしても全くだめ.tsock ssh hostname -p 22じゃないポートではつながらない.tsocks ssh IPアドレス -p22じゃないポート ではok.
  • firefoxではok.
  • danteのsocksifyはそもそもちゃんと動いてない.

いろいろあったのだが,今回のsocks生活変更点

  • sshのsocks機能を(最近はやりだし)使ってみる.ssh -D 1080 IPアドレス -p ポート とした.
  • まあ,そのssh自体もsocks越えをしないといけないので,connectコマンドを使うことで,tsocksを頭につけなくてもいいようにしてみた.connect.cをコンパイルして,.ssh/configのホストに “ProxyCommand connect -S やんごとなきsocksのIPアドレス -4 %h %p” を書けばいいだけ.

そして意外だったのは,firefoxのproxyもそのlocalのsocksにしたら,directよりだいぶ速くなったような気がするなんでだろ.まあ気のせいかな.

SIPやらXCAPやらのテストtoolのSeagull

Seagullは大変便利なtoolなのだが,CRLFが変ではまったのでメモ.

seagull 1.8.0.1での話.(svnのtrunkでもおなじ).

シナリオ記述のところで

       <set-value name="call-id" 
                  format="$(callid-counter)@255.255.255.255"></set-value>
       <set-value name="from" 
                  format="<sip:bob@example.jp>;tag=$(callid-counter)"></set-value>
       <set-value name="cseq" 
                  format="$(callid-counter) SUBSCRIBE"></set-value>
     </action>
     <message>
     <!-- header -->
     <![CDATA[SUBSCRIBE sip:xdms.example.jp SIP/2.0
         Call-Id: $(call_id)
         CSeq: $(cseq)
         From: $(from)

とかすると,

"Call-Id: 1@255.255.255.255"
"CSeq: 1 SUBSCRIBE\nFrom: <sip:bob@example.jp>;tag=1\nTo: <sip:alice@example.jp>"

といった具合で,CRLFにならずに,LFだけがはいったものが送信されてしまう.

解答

むりやり "\r" を指定する

       <set-value name="cseq" 
                  format="$(callid-counter) SUBSCRIBE\r"></set-value>

ついでなので,その他気がついたこと

あたらしいヘッダフィールドを追加するには

fielddefで定義する

もどってくるmessageなんわからん

<receive></receive>の内側に<message />を書かなければok. というか -msgcheck をつけて起動しない限り,ノーチェック

<send />中のContent-Lengthなんてわからん

適当な数字をいれておけばかってにつけて送信するようだ.