nginx實現MySQL負載均衡


默認Nginx只支持http的反向代理,要想nginx支持tcp的反向代理,還需要在編譯時增加tcp代理模塊支持,即nginx_tcp_proxy_module

下面操作步驟只讓nginx支持tcp_proxy,沒有加入prce、gzip、ssl等功能,如需要,可自行在編譯時加上相關參數。

wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zipunzip master  tar -zxvf nginx-1.6.3.tar.gz  cd nginx-1.6.3 patch -p1 < ../nginx_tcp_proxy_module-master/tcp.patch  ./configure --add-module=../nginx_tcp_proxy_module-master --prefix=/usr/local/nginx-1.6.3 --with-http_stub_status_module --with-http_gzip_static_module make make install


nginx.conf主配置文件中增加如下配置配置:(也可以在主配置文件中配置include,包含tcp轉發的配置文件include /usr/local/nginx-1.6.3/conf/tcp_proxy.conf;)

user  nobody; worker_processes  1; #error_log  logs/error.log; #error_log  logs/error.log  notice; error_log  logs/error.log  info; #pid        logs/nginx.pid; events {     worker_connections  1024; } include /usr/local/nginx-1.6.3/conf/tcp_proxy.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  0;     keepalive_timeout  65;     #gzip  on;     server {         listen       3306;         server_name  localhost;         #charset koi8-r;         #access_log  logs/host.access.log  main;         location / {             root   html;             index  index.html index.htm;         } location /nginx_status {     stub_status on;             access_log  logs/nginx_status.log;     allow 10.195.197.124;     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;         }     } }

include /usr/local/nginx-1.6.3/conf/tcp_proxy.conf;

tcp {     upstream mysql {         server 10.207.238.66:3306;         server 10.207.238.67: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 mysql;     } }

說明:
check interval 健康檢查,單位是毫秒
rise 檢查幾次正常后,將reslserver加入以負載列表中
fall 檢查幾次失敗后,摘除realserver
timeout 檢查超時時間,單位許毫秒
具體可查看nginx_tcp_proxy_module-master/README,很詳細。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM