zoukankan      html  css  js  c++  java
  • 利用nginx做tcp负载均衡

      当前nginx-13.1已经支持tcp,ucp,unix域套接字三种负载均衡模式(http肯定支持,这个不用说)。最近有需求需要对后端服务做负载均衡,因此考虑使用nginx来做。

    1. 下载nginx,我下载的是nginx-release-1.13.1:

      https://github.com/nginx/nginx

    2. 编译,安装:

      ./auto/configure --prefix=/home/stars/support/nginx-release-1.13.1/install --with-threads --with-stream

      make && make install

    3. 编辑/home/stars/support/nginx-release-1.13.1/install/conf/nginx.conf:

      

      1 #user  nobody;
      2 worker_processes  1;
      3 
      4 #error_log  logs/error.log;
      5 #error_log  logs/error.log  notice;
      6 #error_log  logs/error.log  info;
      7 
      8 #pid        logs/nginx.pid;
      9 
     10 
     11 events {
     12     worker_connections  1024;
     13 }
     14 
     15 
     16 http {
     17     include       mime.types;
     18     default_type  application/octet-stream;
     19 
     20     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
     21     #                  '$status $body_bytes_sent "$http_referer" '
     22     #                  '"$http_user_agent" "$http_x_forwarded_for"';
     23 
     24     #access_log  logs/access.log  main;
     25 
     26     sendfile        on;
     27     #tcp_nopush     on;
     28 
     29     #keepalive_timeout  0;
     30     keepalive_timeout  65;
     31 
     32     #gzip  on;
     33 
     34     server {
     35         listen       12345;
     36         server_name  localhost;
     37 
     38         #charset koi8-r;
     39 
     40         #access_log  logs/host.access.log  main;
     41 
     42         location / {
     43             root   html;
     44             index  index.html index.htm;
     45         }
     46 
     47         #error_page  404              /404.html;
     48 
     49         # redirect server error pages to the static page /50x.html
     50         #
     51         error_page   500 502 503 504  /50x.html;
     52         location = /50x.html {
     53             root   html;
     54         }
     55 
     56         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
     57         #
     58         #location ~ .php$ {
     59         #    proxy_pass   http://127.0.0.1;
     60         #}
     61 
     62         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
     63         #
     64         #location ~ .php$ {
     65         #    root           html;
     66         #    fastcgi_pass   127.0.0.1:9000;
     67         #    fastcgi_index  index.php;
     68         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
     69         #    include        fastcgi_params;
     70         #}
     71 
     72         # deny access to .htaccess files, if Apache's document root
     73         # concurs with nginx's one
     74         #
     75         #location ~ /.ht {
     76         #    deny  all;
     77         #}
     78     }
     79 
     80 
     81     # another virtual host using mix of IP-, name-, and port-based configuration
     82     #
     83     #server {
     84     #    listen       8000;
     85     #    listen       somename:8080;
     86     #    server_name  somename  alias  another.alias;
     87 
     88     #    location / {
     89     #        root   html;
     90     #        index  index.html index.htm;
     91     #    }
     92     #}
     93 
     94 
     95     # HTTPS server
     96     #
     97     #server {
     98     #    listen       443 ssl;
     99     #    server_name  localhost;
    100 
    101     #    ssl_certificate      cert.pem;
    102     #    ssl_certificate_key  cert.key;
    103 
    104     #    ssl_session_cache    shared:SSL:1m;
    105     #    ssl_session_timeout  5m;
    106 
    107     #    ssl_ciphers  HIGH:!aNULL:!MD5;
    108     #    ssl_prefer_server_ciphers  on;
    109 
    110     #    location / {
    111     #        root   html;
    112     #        index  index.html index.htm;
    113     #    }
    114     #}
    115 
    116 }
    117 
    118 stream{
    119     upstream dds{
    120         least_conn;
    121         server 127.0.0.1:18890 weight=1;
    122         server 127.0.0.1:17088 weight=1;
    123     }
    124     server{
    125         listen 55055;
    126         proxy_pass dds;
    127     }
    128 }

      红颜色部分为新添加部分。

      当前负载均衡算法有三类:

      1)least_conn: 对于每个请求,nginx plus选择当前连接数最少的server来处理;

      2)least_time: 对于每个链接,nginx pluns 通过几点来选择server的;

      3)普通的hash算法:nginx plus选择这个server是通过user_defined 关键字,就是IP地址:$remote_addr;

    4. 参数说明:

      weight:权重

      max_conns:最大连接数

      max_fails:最大连接失败数

      fail_timout:在这个时间段中进行了多少次连接的尝试失败了,那么就认为是不可达了并标记不可达

  • 相关阅读:
    BackGroundWorker解决“线程间操作无效: 从不是创建控件的线程访问它”
    C#代码与javaScript函数的相互调用
    浅述WinForm多线程编程与Control.Invoke的应用
    web.config中appSettings配置节修改的函数
    迭代,递归的题目(转)
    一些计算机知识的总结(转)
    软件测试中条件覆盖,路径覆盖,语句覆盖,分支覆盖的区别
    在gridview的行绑定中应用AnimationExtender效果
    页头下拉广告,加了关闭按钮,不闪屏
    request.params
  • 原文地址:https://www.cnblogs.com/foreverstars/p/6958995.html
Copyright © 2011-2022 走看看