Nginx负载均衡MYSQL数据库
[attach]1482[/attach]
默认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_tcp_proxy_module-master/README,也可以查看:https://github.com/yaoweibin/nginx_tcp_proxy_module 。