Nginx负载均衡MYSQL数据库_java


默认Nginx只支持http的反向代理,要想nginx支持tcp的反向代理,还需要在编译时增加tcp代理模块支持,即nginx_tcp_proxy_module,具体实现如下。
 

一、编译安装

添加nginx支持tcp_proxy模块,如需其他功能自动编译其他模块,例如:prce、gzip、ssl等功能。

cd /usr/local/src/
wget "https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zip"
mkdir -pv /data/ModulePlugin && unzip master.zip -d /data/ModulePlugin/
wget 'http://nginx.org/download/nginx-1.2.1.tar.gz'
tar -xzvf nginx-1.2.1.tar.gz
cd nginx-1.2.1/
patch -p1 < /data/ModulePlugin/nginx_tcp_proxy_module-master/tcp.patch 
./configure --prefix=/usr/local/nginx  --add-module=/data/ModulePlugin/nginx_tcp_proxy_module-master/ --with-http_stub_status_module --with-http_gzip_static_module
make
make install


 
 

二、添加配置

1、在主配置文件nginx.conf 中include 加载目录

user  nobody;
worker_processes  4;

error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    worker_connections  2048;
}

include /usr/local/nginx/conf/vhost/*.conf;

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    #gzip  on;

    server {
        listen       3306;
        server_name  udb.com;

        #charset utf-8;

        location / {
            root   html;
            index  index.html index.htm;
        }

	location /nginx_status {
	    stub_status on;
        access_log  logs/nginx_status.log;
	    allow 10.0.1.136;
	    deny all;
	}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

/usr/local/nginx/conf/vhost/proxy_mysql.conf 内容如下:

tcp {
    upstream mysqldb {
        server 10.0.1.138:3306;
        server 10.0.1.139:3306;
 
        check interval=3000 rise=2 fall=5 timeout=1000;
        #check interval=3000 rise=2 fall=5 timeout=1000
        #check interval=3000 rise=2 fall=5 timeout=1000
        #check_http_send "GET /HTTP/1.0\r\n\r\n";
        #check_http_expect_alive http_2xxhttp_3xx;
    }
 
    server {
        listen 3307;
        proxy_pass mysqldb;
    }
}

参数说明:
check interval 健康检查,单位是毫秒
rise 检查几次正常后,将reslserver加入以负载列表中
fall 检查几次失败后,摘除realserver
timeout 检查超时时间,单位许毫秒


Nginx负载均衡MYSQL数据库_java_02