• 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.zip
    unzip 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
    
    ";
            #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,很详细。

    转自

    nginx 实现mysql的负载均衡 - ---張榮---的个人空间
    https://my.oschina.net/ambari/blog/615203

  • 相关阅读:
    10-关于DOM的事件操作
    09-伪数组 arguments
    08-函数
    07-常用内置对象
    Django -- 2.http协议
    Django -- 1.web应用
    web前端 --- JavaScrip之BOM
    web前端 --- JavaScrip函数与对象
    web前端 --- JavaScrip基础
    web前端 --- CSS下篇
  • 原文地址:https://www.cnblogs.com/paul8339/p/6934266.html
Copyright © 2020-2023  润新知