Hatena::Grouphimotech

HimoTech::rAdio このページをアンテナに追加 RSSフィード

2011,9,17

(nginxで)PHPをFastCGIで動かす

| (nginxで)PHPをFastCGIで動かす - HimoTech::rAdio を含むブックマーク はてなブックマーク - (nginxで)PHPをFastCGIで動かす - HimoTech::rAdio (nginxで)PHPをFastCGIで動かす - HimoTech::rAdio のブックマークコメント

よくある構成だけど、nginxでPHPを動かす際の各種手法に、一体どんな違いがあるのか気になったので調査中…。

環境

OS

CentOS 5.5

PHP
バージョン
5.3.3
nginx
バージョン
1.0.6
spawn-fcgi
バージョン
1.6.3
php-fpm

未導入

  • CentOS Updateのphp53に合わせたいのだけど、ちょうど良いパッケージ(バージョン5.3.3のphp53-fpm)がない
    • IUSは最新のみみたいだし…。

nginx + PHP を動かす手法

  1. SysVinitを利用してphp-cgiを直接起動
  2. spawn-fcgiを利用
  3. php-fpmを利用

知りたいこと

  • SysVinitを利用してphp-cgiを直接起動してnginxから呼べば、間に何も噛んでないから一番シンプルで良さげなんだけど、spawn-fcgiphp-fpmを間に噛ますことで、どんなメリットが生じるのか?

リニューアルしたQiitaにも質問を投げてみた。

nginx + PHP を動かす際に、spawn-fcgiを使うのと、使わずにSysVinit(init.d)でphp-cgiを直接起動するのとでは、一体何が違うのでしょうか? 何らかのパフォーマンス的な違いがあるのでしょうか? #FastCGI #Linux #PHP #nginx - Qiita
http://qiita.com/items/104/chunk

参考資料

php-cgiデーモンスクリプト
RedHatPHPFCGIInitScript
http://wiki.nginx.org/RedHatPHPFCGIInitScript
nginx, PHP 5.3 and FastCGI on CentOS 5.5, Fedora 13, Red Hat RHEL 5.5/6
http://www.if-not-true-then-false.com/2009/install-nginx-php-5-3-and-fastcgi-on-centos-fedora-red-hat-rhel/
  • RedHatPHPFCGIInitScriptにspawn-fcgiを噛ましたやつ
SysVinitって何だろう…?
/etc/init.d/functions を読む - tashenの日記
http://d.hatena.ne.jp/tashen/20081124/1227548098
PHPFastCGIで動かすって、どういうこと?
PHP: Lighttpd 1.4 (Unix システム用) - Manual
http://php.net/manual/ja/install.unix.lighttpd-14.php
CentOSで新しめphpyumで入れる
CentOS 5.6 で PHP 5.3.6 にアップグレード | 複眼中心
http://rewse.jp/blog/p/3467
CentOSPHPが5.1で困っているときの代替策 - 近況
http://d.hatena.ne.jp/pekeq/20100706/p1
  • 4系まで揃えろとは言わんけど、5系ぐらいは全バージョンのパッケージがあって欲しいところ…
トラックバック - http://himotech.g.hatena.ne.jp/rAdio/20110917

2011,7,24

LVS-TUNについて調査中

| LVS-TUNについて調査中 - HimoTech::rAdio を含むブックマーク はてなブックマーク - LVS-TUNについて調査中 - HimoTech::rAdio LVS-TUNについて調査中 - HimoTech::rAdio のブックマークコメント

さくらVPSを複数台利用してLVSによるhttp振り分けを実現したかったのだけど、LVSとリアルサーバが異なるネットワークセグメントになってるみたいで、LVS-DSRだと振り分けできないっぽい。

keepalivedを使って起動させてるんだけど、ipvsadmの起動と、ヘルスチェックまでは上手くいってるものの、別サーバからcurlなどでアクセス確認すると、「ipvsadm -L」ではInActConnのカウントが増えるが、リアルサーバへは到達していないもよう。

DSRではなくTUNならいけるかも、ということで調査中。

NATやDSRは、そのものズバリのHowTo記事が多いんだけれども、TUNはその片鱗しか見えてこない。

やりたいこと

環境

  • CentOS 5.6 x86_64
  • keepalivedもipvsadmもIPVS v1.2.1環境下での再ビルドを実施
    • keepalivedは1.2.1のソースからrpmbuildして入れた。
      • kernelバージョン(2.6.18-238.12.1)だと、1.2.1ならコンパイルできるが、1.2.2だと古いためできない、とのことだった。
    • ipvsadmは1.24のCentOSSRPMをrpmbuildして入れた。

調査資料スタック

Rackspace Cloud Computing & Hosting
http://www.rackspace.com/cloud/blog/2010/09/22/installing-and-configuring-lvs-tun/
LVS/TUN without iptables : blog.nomadscafe.jp
http://blog.nomadscafe.jp/archives/000727.html
ARP problem in LVS/TUN and LVS/DR
http://jlvs.infoscience.co.jp/arp.html
Virtual server via IP tunneling
http://jlvs.infoscience.co.jp/VS-IPTunneling.html
Yet Another Diary: 少しだけ気合いを入れてkeepalived, lighttpdを試してみた
http://yasu-2.blogspot.com/2010/02/keepalived-lighttpd.html
LVSトラブル対応 | へっぽこSE奮闘記
http://fine.ap.teacup.com/hepo/4.html
[lvs-users] keepalived+lvs
http://archive.linuxvirtualserver.org/html/lvs-users/2011-03/msg00015.html
LVS over Internet / client director and realserver at different networks
http://archive.linuxvirtualserver.org/html/lvs-users/2005-09/msg00164.html
LVS - defiantの日記
http://d.hatena.ne.jp/defiant/20070406/1175847800
LVS - Nginx - NodeJS - MongoDB - Cluster Setup on RackSpace
http://boj.github.com/blog/2011/01/14/lvs-nginx-nodejs-mongodb-cluster-setup-on-rackspace/
kazeburo : day : 2006/10/30
http://webcache.googleusercontent.com/search?q=cache:femo.jp/kazeburo/2006/10/30
Linux Virtual Server Tutorial- LVSトンネル
http://ultramonkey.sourceforge.jp/papers/lvs_tutorial/html/#SECTION00026000000000000000
ipvsadm + keepalived で 別セグメントへロードバランス - Linux Square - @IT
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=45841&forum=10

さくらインターネットのサポートから回答があった。

キュリティ上、仮想IPなどの「指定されているネットワーク情報以外のIP」を付与した場合、通信ができなくなる、とのことだった。

しかしながら、以下のように、LVSではないとはいえ、仮想IPさくらVPSに適用させて運用している例はあるらしいので、本当にそうなのか、LVS-TUNを実際に構築してこの目で確かめる必要がある。

さくらVPSiPhone用の野良WiFi通信傍受対策のL2TP/IPsec(VPN)を設定したメモ - nori_no のメモ
http://d.hatena.ne.jp/nori_no/20100919/1284889388
さくらVPSVyattaを入れて、Amazon VPCVPN接続 - kikumotoのメモ帳
http://d.hatena.ne.jp/kikumoto/20110430/1304173204
140台以上の「さくらVPS」を自在に操る! 仮想化の鉄人が語るVPS使いこなし術 | Think IT
http://thinkit.co.jp/story/2011/07/15/2185

仮想IPを利用せず、LVS-TUNが構築できるのであれば、下図のような感じで実現可能な気がするんだけどなぁ…。

           ┌──────┐
           │ LVS-Serv.  │
           └─[ eth0 ]─┘
                  │
        ┌────┴────┐
        │                  │
┌─[ tunl0 ] ─┐  ┌─[ tunl0 ] ─┐
│  Real-Serv.1 │  │  Real-Serv.2 │
└──[ eth0 ]─┘  └──[ eth0 ]─┘

qiitaに質問を投稿した。

さくらVPS」を利用した異なるネットワークセグメントにあるサーバ間でのLVS構成に関する情報をお持ちの方はいらっしゃいますでしょうか。LVS-TUN構成なら構築可能だと考えて、様々な設定を試みているのですが、リアルサーバまでパケットが到達せず困っております。 - Qiita
http://qiita.com/questions/82
トラックバック - http://himotech.g.hatena.ne.jp/rAdio/20110724