Nginxでセッションを見てロードバランシングさせる

投稿者: | 9月 12, 2016

Nginxの無印にはリバースプロキシとして使用する際の振り分け方法に、セッションを維持するものがありません。サードパーティのアドオンを追加してあげないといけないので、対応方法をメモする。

1.Nginxのソースコードを入手し解凍する

cd /tmp
wget http://nginx.org/download/nginx-1.10.1.tar.gz
tar xvfz nginx-1.10.1.tar.gz

2.nginx-sticky-module-ngモジュールのソースをダウンロードし解凍する

wget https://github.com/michaelneale/nginx-sticky-m odule/archive/master.zip
unzip master.zip

3.nginx-sticky-module-ngモジュールでzip提供されているものは1.9以降で互換性が無くて、エラーが出る。
/root/nginx-goodies-nginx-sticky-module-ng-1e96371de59f/ngx_http_sticky_module.c: In function ‘ngx_http_get_sticky_peer’: /tmp/nginx-goodies-nginx-sticky-module-ng-1e96371de59f/ngx_http_sticky_module.c:340:21: error: assignment makes pointer from integer without a cast [-Werror] iphp->rrp.current = iphp->selected_peer; ^ cc1: all warnings being treated as errors make[1]: [objs/addon/nginx-goodies-nginx-sticky-module-ng-1e96371de59f/ngx_http_sticky_module.o] Error 1 make[1]: Leaving directory `/tmp/nginx-1.9.0′ make: [build] Error 2

最新のコミットではすでに対応済みなので、zipじゃなくてソースコードをcloneするとはまらずに済む。zipの場合は、このコミットを参考に修正する。

3.モジュールをnginxフォルダ配下に移動させる。

cp -rp nginx-sticky-module-ng ./nginx

4.必要なモジュールをインストールする

yum -y install pcre-devel

4.Configureして、makeしてmake install する。

既存のnginxのConfigureオプションは次のコマンドで確認できる。

2>&1 nginx -V

それを参考にオプションを決定する。

./configure –prefix=/usr/share/nginx –sbin-path=/usr/sbin/nginx –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log –http-client-body-temp-path=/var/lib/nginx/tmp/client_body –http-proxy-temp-path=/var/lib/nginx/tmp/proxy –pid-path=/var/run/nginx.pid –lock-path=/var/lock/subsys/nginx –user=nginx –group=nginx –with-file-aio –with-http_ssl_module –with-http_realip_module –with-http_addition_module –with-http_xslt_module –with-http_sub_module –with-http_dav_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_random_index_module –with-http_secure_link_module –with-http_degradation_module –with-http_stub_status_module –with-pcre –with-debug –with-cc-opt=’-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m64 -mtune=generic’ –with-ld-opt=’ -Wl,-E’ –add-module=./nginx-sticky-module-master/
make
make install

5.nginx.confで設定する。

http {
  upstream app {
    sticky;
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
  }
}

これで、セッションを維持してロードバランシングできるようになった。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください