ã¨ã£ã¦ããããããªãã¼ã¹ãããã·Varnishã®ä½¿ãæ¹
Rubyã®ã¦ã§ãã¢ããªã±ã¼ã·ã§ã³ãã¬ã¼ã ã¯ã¼ã¯Ramazeãã¨ã£ã¦ãã¨ã£ã¦ãç´ æµãªã®ã§ããã ãã¾å®é¨ã¨ãã¦ããããªãã®ã使ãã¦ããã¾ããHTTPdã«ã¯ä»è©±é¡ã®thinã使ããããªãã¨æã£ã¦ããã®ã§ããããããªãã¨èããªããã°ãªããªãã®ããªãã¼ã¹ãããã·ã§ãããã"reverse proxy rails" ãããã§æ¤ç´¢ããã¨çã£å ã«apacheã®è¨å®æ¹æ³ãåºã¦ããããã§ããããªãã§ãapacheã¨ããã®ãã©ãããªãã¨æãã¾ãããè¨å®ãç ©éã«ãªãã¾ããããããã§ãªãã¼ã¹ãããã·ã§ãã varnish ã試ãã¦ã¿ã¾ãããvarnishã«é¢ããããã¥ã¡ã³ãã¯ãã¾ãå¤ããªãã®ã§ãããvarnish ã¯ã¨ã£ã¦ãç°¡åãªã®ã§ç´ æ´ããã¨æãã¾ãããã£ããã§ããããvarnishã«é¢ããè¨å®æ¹æ³ãªã©ãç°¡åã«ã¾ã¨ãã¦ããããã¨æãã¾ãããªããç§ã¯ãµã¼ãã§ãã£ã¦ã ubuntu ã使ã£ã¦ããã¾ãã®ã§ï¼ææãï¼ï¼ãubuntu以å¤ãã使ãã®æ¹ã¯ãã®ã¤ããã§é©æèªã¿æ¿ãã¦ã覧ä¸ããã
Varnish ã£ã¦ä½ï¼
varnish ã¯ãªãã¼ã¹ãããã·ãµã¼ãã§ãããªãã¼ã¹ã®æ¹åå°éã®ãµã¼ããªã®ã§ãæ®éã®ãã©ã¯ã¼ããããã·ã¨ãã¦ã®æ©è½ã¯æã¡ã¾ããããªãã¼ã¹ãããã·ã«é¢ãã¦ã¯livedoor ディレクター Blogããã®ãサーバの種類とDBサーバ超基礎入門ããã¨ã£ã¦ãã¨ã£ã¦ãåããæãã¦ç´ æµãªè³æã ãªãã¨æãã®ã§ãã¡ããã覧ä¸ããã
ãªãã§Squidã使ããªãã®ï¼
å®ç¸¾ã¨ä¿¡é ¼ã®ãããã·ãµã¼ãSquidã¯å½ç¶ãªãã¼ã¹ãããã·ã¨ãã¦ãè¨å®ã§ããããã§ãããç§ã®ç®çã§ã¯ãã©ã¯ã¼ããããã·ã¯ä¸è¦ã§ãã以ä¸ãè¨å®ãééãã¦ãã²ãã¼ï¼ã¿ãããªäºã«ãªããªãããã«Squidã¯é¿ãããã¨æãã¾ããããã®ãããvarnishã§ãããã¾ãã«è¨å®ãã¡ã¤ã«ã®æ§æãç°¡åã¨ããå©ç¹ãããã¾ãã
ãªãã¼ã¹æ¹åã®ãããã·ãµã¼ãã¨ãã¦ã¯ä»ã«ãSwitchFlow, Perlbal, Nginx, YXORP ãªã©ãããããã§ãããvarnishãä¸çªã·ã³ãã«ãªããã«è¦ãã¾ããã®ã§é¸æãã¾ãããSwitchFlowã¯ã¡ã³ããã³ã¹ããã¦ããã®ãããåãããªãç¹ãä¸å®ã§ããPerlbalã¯perlã®æ¹ã«ã¯è¯ãã®ã ããã¨æãã¾ãããç§ã¯æè¿ã¯ãã£ããperlã使ã£ã¦ããªãã®ã§è²ã ã¨æ¬é ããããªãã¨æãã¾ãããNginxã¯ç´ æµãªé°å²æ°ã§ãããHTTPdã®æ©è½ã¯ä¸è¦ã§ãã®ã§é¸æè¢ã«å ¥ãã¾ããã§ãããYXORPã¯ãªããªãè¯ãããã§ãããã¨ã£ã¦ã夿©è½ãªãããªã®ã§ä»åã¯é¿ãã¾ãããç¹ã«"Multiple listeners: one YXORP can monitor several TCP ports and process incoming traffic"ã¨ã®ãã¨ãªã®ã§å¤§å¤ã«ä¾¿å©ããã§ããããã使ã£ã¦ã¿ããã¨æãã¾ãã
ã¤ã³ã¹ãã¼ã«
ãã¡ãã aptitude ã§ã¤ã³ã¹ãã¼ã«ã§ãã¾ãã
sudo aptitude install varnish
ããã§ã¤ã³ã¹ãã¼ã«ã¯å®äºã§ããã¨ã£ã¦ã楽ãã³ï¼
è¨å®
ç§ã®ç®ç㯠port 80 ã§ãªãã¼ã¹ãããã·ããã«è²ã æ¯ãåãã¦ããããã¨ã§ããã¾ããport 80 ã§ãµã¼ããèµ·åããããã«è¨å®ãã¦ããã¾ããã¾ãã¯çããã®å¤§å¥½ã㪠jed ã§ /etc/default/varnish ãç·¨éãã¾ãã
sudo jed /etc/default/varnish
ããã§æ¸ãæããªããã°ãªããªãã®ã¯ VARNISH_LISTEN_PORT ã§ãã以ä¸ã®ããã«80ãæå®ãã¾ãã
VARNISH_LISTEN_PORT=80
ãã¨ãå¿ è¦ãããã°ãã£ãã·ã¥ãµã¤ãºã夿´ãã¦ããã¨è¯ããã¨æãã¾ãã
VARNISH_BACKEND_STORAGE_SIZE=20480000
ãªã varnish 㯠ubuntu æ¨æºã§ã¯ management port ã¨ã㦠port 6082 ãããã§å¾ ã¡æ§ãã¾ãã®ã§ããã®ç¹ååã«ã注æä¸ãããæ¸ç· ãç¨å¿ã®ãã以ä¸ã®ããã« /etc/init.d/varnish ãæ¸ãæãã¦ãããã¨ããªã¹ã¹ã¡ãã¾ãã
# -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \ # ã®è¡ãæ¶ãã¾ãã DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \ -h ${VARNISH_HASHOPTION} \ -f ${VARNISH_VCL_CONF} \ -t ${VARNISH_TTL} \ -w ${VARNISH_MIN_WORKER_THREADS},${VARNISH_MAX_WORKER_THREADS},${VARNISH_WORKER_THREAD_TIMEOUT} \ -s ${VARNISH_BACKEND_STORAGE}"
/etc/init.d/varnish ãç·¨éããã®ã¯ã¨ã£ã¦ãè¡åãæªããããªæ°ããã¾ããã/etc/default/varnish ã§ VARNISH_ADMIN_LISTEN_ADDRESS, VARNISH_ADMIN_LISTEN_PORT ãã³ã¡ã³ãã¢ã¦ããã¦ã tcp6 ã§ãã¼ããéãã¦ãããããã¾ãã®ã§ãæ²¹æãªãããªãããã«ã
ã§ã¯æ¬¡ã« /etc/varnish/vcl.conf ãç·¨éãã¾ããä¾ãã° subdomain.example.com ã«å¯¾ããã¢ã¯ã»ã¹ã localhost ã® port 8000 ã«æ¯ãåãã¦æ¬²ããå ´åã¯ãã¾ãbackend è¨å®ã追å ãã¾ãã
backend subdomain { set backend.host = "127.0.0.1"; set backend.port = "8000"; }
backendè¨å®ã®æ¬¡ã«ã¯ vcl_recv å ã§ãªã¯ã¨ã¹ãå 容ã«ãã£ã¦ããã backend subdomain ã«æ¯ãåããããã«æå®ãã¾ãã
sub vcl_recv { if (req.http.host == "subdomain.example.com") { set req.backend = subdomain; } # 以ä¸ç¥
ãã®æ¯ãåãã®è¨å®ã«ã¯"=="ã ãã§ãªãã "~"ãç¨ãã¦æ£è¦è¡¨ç¾ã«ãã£ã¦æ¯ãåãããã¨ãåºæ¥ã¾ãã®ã§è²ã ã¨æè»ãªè¨å®ãåºæ¥ã¾ããã¨ã£ã¦ãç°¡åã§ä¾¿å©ã§ããï¼ vcl.conf ã®è¨æ³ãæå³ã®è©³ç´°ã¯ man 7 vcl ã§ã覧ä¸ããã
ãµã¼ãã®èµ·å
è¨å®ãæ´ãã¾ããã®ã§ãæ´ãã¦ãµã¼ããèµ·åãã¦ã¿ã¾ãããã
/etc/init.d/varnish start # æ¢ã«èµ·åãã¦ããã° restart
ãã©ã¦ã¶ã§subdomain.example.comã«ã¢ã¯ã»ã¹ããport 8000 ã§åãã¦ãããµã¼ãããã®å 容ã表示ãããã°OK!
varnishdã®ç®¡ç
åãã¦ãã varnishd ããã¨è²ã ã¨å¯è«ãããæã«ã¯ã以ä¸ã®ããã« telnet ãéãã¦èªãæãã¾ãã
telnet 127.0.0.1 6082
help ããã¨ã³ãã³ããªã¹ãã表示ããã¾ããããã«å¾ã£ã¦é©åã«è²ã ãã£ã¦ä¸ãããä¾ãã°ãã£ãã·ã¥ã®æ¶å»ã¯
url.purge *
ã¿ãããªæãã§ããã ããããèªè¨¼ãä¸åãªããã§ããã©ããã®ï¼ãã¸ã§ï¼ãããä¸è¬ã¦ã¼ã¶ãvarnishdãä¸æåæ¢åºæ¥ã¡ãã£ããããããã§ããããã¨ãªããè²ã ããã¨è½ã¨ãã¡ãã£ããã§ãããã§ããã©ãã©ããªã®ï¼ï¼ã¡ãªã¿ã« ubuntu ã® varnishd 㯠1.0.3 ã¨ã¡ãã£ã¨å¤ããªã®ã§ããã®ããããç¥ãã¾ããã
ã¨ããããã§ããããä¿¡é ¼ã§ããªãã¦ã¼ã¶ãåå¨ããå ´åã«ã¯ã念ã®çºã« management port ãéãã¦ããã®ããããããã¨æãã¾ãã
ææ³
varnishãã¨ã£ã¦ãç°¡åã§ããï¼management port ã®è¨å®ã«å¤å°æ³¨æãå¿ è¦ãªã®ãé¢åã£ã¡ãæãã§ãããããã§ããã®è¨å®ã®åããæãã¨ç°¡åãã¯å¤§å¤ã«ç´ æ´ããããã¨ã ã¨æãã¾ãããããªããã§çæ§ãvarnish è¯ãã¨æãã¾ãã使ãã¾ãããã