自分で作ったり提供したりするものは、まず自分自身で使ってみろろということです。自分じゃ使わないものなら人はいくらでも無責任にも無思考にもなれる。そういう投げやりな「サービス」やら「プロダクツ」なんて、だれだってイヤだ。自分が作り手と同時に利用者の立場になれば、ちゃんと使えるレベルのものを提供しようとします。

2012年9月21日金曜日

HAProxy+Apache+pound+varnish

HAProxy+Apache+poundで負荷分散ウェブシステムを作る例です。

○Apache
sudo nano -wci /etc/apache2/apache2.conf
...
%h -> %{X-Forwarded-For}i
...
説明:ログに記録するIPアドレスはLBアドレスではなく、クライアントIPを記録する

sudo nano -wci /var/www/check.txt

sudo nano -wci /etc/apache2/sites-available/default
...
SetEnvIf Request_URI "^/check\.txt$" dontlog
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog
...
説明:check.txtチェックをログに残さない

○HAProxy
sudo apt-get install haproxy

sudo nano -wci /etc/haproxy/haproxy.cfg
...
listen www 0.0.0.0:80
    mode    http
    stats   enable
    stats   auth admin:admin
    balance roundrobin
    cookie  JSESSIONID prefix
    option  httpclose
    option  forwardfor
    option  httpchk GET /check.txt HTTP/1.0
    option  log-health-checks
    server  web1 192.168.1.1:80 cookie A check inter 2000 fall 3
    server  web2 192.168.1.2:80 cookie B check inter 2000 fall 3
...

sudo nano -wci /etc/sysctl.conf
...
net.ipv4.ip_nonlocal_bind=1
...
説明:仮想IPにバンディングできるように設定する(この例は仮想IPが使わないです)

sysctl -p

sudo nano -wci /etc/default/haproxy
ENABLED=1
説明:OS起動時にHAProxyが自動起動する

○pound(ssl)
HAProxy現バージョンはSSLをサポートしていないため、poundを利用してSSL負荷分散にする

sudo apt-get install pound

sudo nano -wci /etc/default/pound
...
startup=1
...

sudo nano -wci /etc/pound/pound.cfg
...
ListenHTTP
        Address 192.168.1.1
        Port    80
        Service
                Redirect "https://www.testdomain.com"
        End
End

ListenHTTPS
        Address 192.168.1.1
        Port    443
        Cert    "/etc/pound/sslkey/pound.pem"
        Client  30
        Service
                BackEnd
                        Address 192.168.1.2
                        Port    80
                End
                BackEnd
                        Address 192.168.1.3
                        Port    80
                End
                Session
                        Type    Cookie
                        ID      "JSESSIONID"
#                        Type    IP
                        TTL     180
                End
        End
End
...

メモ:
pound.pemはCRTとPRIKEY両方が必要です。
例:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----

○varnish(HTTPアクセラレータ)
sudo apt-get install varnish

sudo nano -wci /etc/default/varnish
...
#DAEMON_OPTS="-a :6081 \
DAEMON_OPTS="-a :8080 \
...

sudo nano -wci /etc/varnish/default.vcl
...
backend default {
    .host = "127.0.0.1";
    .port = "80";
}
...

■varnishlog
sudo nano -wci /etc/default/varnishlog
...
VARNISHLOG_ENABLED=1
...

■varnishncsa
sudo nano -wci /etc/default/varnishncsa
...
VARNISHNCSA_ENABLED=1
...

sudo service varnish restart
sudo service varnishlog restart
sudo service varnishncsa restart

0 件のコメント:

コメントを投稿

ホームページ