nginx下TCP负载均衡配置

本文介绍了如何在nginx中配置TCP负载均衡,包括安装nginx、编辑配置文件,以及讲解负载均衡的基础知识,如轮询算法和一致性哈希。通过设置监听端口、上游服务器和负载均衡策略,实现代理到多个后端服务器的目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

负载均衡基础与nginx下TCP负载均衡配置


安装nginx

  • 在服务器快速集群环境搭建中,都迫切需要一个能拿来即用的负载均衡器,nginx在1.9版本之前,只支持http协议web服务器的负载均衡,从1.9版本开始以后,nginx开始支持tcp的长连接负载均衡,但是nginx默认并没有编译tcp负载均衡模块,编写它时,需要加入--with-stream参数来激活这个模块。
  • nginx编译安装需要先安装pcre、openssl、zlib等库,也可以直接编译执行下面的configure命令,根据错误提示信息,安装相应缺少的库。
  1. 下载nginx安装包
    下载地址
  2. 解压缩安装包,执行以下操作
    ccc@ccc:~# sudo tar -zxvf nginx-1.12.2.tar.gz
    下面的make命令会向系统路径拷贝文件,需要在root用户下执行
    root@ccc:~/nginx-1.12.2# ./configure --with-stream
    root@ccc:~/nginx-1.12.2# make && make install
    编译完成后,默认安装在了/usr/local/nginx目录。
    root@ccc:~/nginx-1.12.2$ cd /usr/local/nginx/
    root@ccc:/usr/local/nginx$ ls
    conf html logs sbin
    可执行文件在sbin目录里面,配置文件在conf目录里面。
    
    以下命令均需在root用户下执行
    nginx -s reload 重新加载配置文件启动
    nginx -s stop 停止nginx服务
  3. nginx服务不识别问题
    ccc@ccc:~#sudo vim /etc/profile
    在环境变量文件末尾添加以下内容
    PATH=$PATH:/usr/local/nginx/sbin
    export PATH
    
    使环境变量生效
    ccc@ccc:~#source /etc/profile

编辑nginx配置文件

主要在conf目录里面配置nginx.conf文件,配置如下:

ccc@ccc:~$ whereis nginx
nginx: /usr/local/nginx /usr/local/nginx/sbin/nginx
ccc@ccc:~$ cd /usr/local/nginx/
ccc@ccc:/usr/local/nginx$ ls
client_body_temp  conf  fastcgi_temp  html  logs  proxy_temp  sbin  scgi_temp  uwsgi_temp
ccc@ccc:/usr/local/nginx$ cd conf
ccc@ccc:/usr/local/nginx/conf$ ls
fastcgi.conf          fastcgi_params          koi-utf  mime.types          nginx.conf          scgi_params          uwsgi_params          win-utf
fastcgi.conf.default  fastcgi_params.default  koi-win  mime.types.default  nginx.conf.default  scgi_params.default  uwsgi_params.default
ccc@ccc:/usr/local/nginx/conf$ sudo vim nginx.conf

请添加图片描述
http的上面增加代码如下

#nginx tcp loadbalance config
stream {
    upstream MyServer{
       hash $remote_addr consistent;
       server 127.0.0.1:6000 weight=1 max_fails=3 fail_timeout=30s;
       server 127.0.0.1:6002 weight=1 max_fails=3 fail_timeout=30s;
     }

     server {
     proxy_connect_timeout 1s;
     #proxy_timeout 3s;
     listen 8000;
     proxy_pass MyServer;
     tcp_nodelay on;
   }
}

代码解释:

  • listen 8000;这个是nginx会监听的一个端口号,也就是说,所有的客户端连接指定的8000端口就可以,所有客户端发过来的请求在配置文件中,人家就写好了,你都连8000,客户端发的请求如果都在8000端口上,nginx感应到,你要我完成反向代理的操作,也就是负载均衡的操作,nginx就按照既定的负载均衡算法把这些请求分发到不同的服务器上。
  • proxy pass MyServer 相当于一个标记。所有连接到8000端口的请求都连接到这个MyServer的信息里面负载均衡。
  • MyServer的这个upstream就是负载均衡模块,包含了几台机器呢?包含了2台:127.0.0.1:6000,127.0.0.1.6002,相当于起了2台服务器,一个运行在6000端口,一个运行在6002端口。如果要添加新的服务器,我们只需要在下面新增这台服务器的信息就可以了。weight=1,就是权重,这2个服务器的权重都是1,就是说按照轮询算法,轮着往配置的服务器发,转着圈发送,配置强的服务器,我们可以给它配置的权重大一些。
  • max_fails是在完成心跳机制,连续超过3次心跳失败,就认为服务器挂掉,fail_timeout,等心跳30秒。
  • proxy_timeout 3s;是指nginx只和后端的chatserver连接3秒就断开,我们不加这个了。
  • proxy_connect_timeout的意思是nginx得连接后台的server服务器,第一次连接的时候发现超过1秒的时间还没有握手成功就判定连接失败了
  • tcp_nodelay on就是配置TCP的参数
  • listen 8000是让客户端都往8000端口发送数据,8000端口可以给你负载均衡,往MyServer负载均衡配置里面进行负载均衡
  • hash remote addr是基于一致性哈希的负载算法,可注销掉,默认使用轮询算法。

配置完成后,nginx -s reload平滑重启。

负载均衡基础知识

常用的负载均衡算法分为以下两类:
静态负载均衡
动态负载均衡

常见的静态均衡算法:轮询法、随机法、源地址哈希法、一致性哈希法、加权轮询法、加权随机法。

常见的动态负载均衡算法:最小连接数法、最快响应速度法。

详情可参考链接:
对负载均衡的学习
一致性哈希算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清梦旅人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值