当前位置: 首页 > news >正文

nginx配置集群服务器中的tcp负载均衡器

文章目录

  • 前言
  • 1. Ubuntu下nginx安装
  • 2. nginx的tcp负载配置


前言

假设一台机器支持两万的并发量,现在我们需要保证八万的并发量。首先想到的是升级服务器的配置,比如提高 CPU 执行频率,加大内存等提高机器的物理性能来解决此问题。但是单台机器的性能毕竟是有限的。

这个时候我们就可以增加服务器的数量,将用户请求分发到不同的服务器上分担压力,这就是负载均衡。那我们就需要有一个第三方组件充当负载均衡器,由它负责将不同的请求分发到不同的服务器上。这里介绍 Nginx 的负载均衡功能。
在这里插入图片描述
Nginx作为 tcp 负载均衡模块的原因:

  1. client的请求按照负载算法分发到具体的业务服务器ChatServer
  2. 能够ChantServer保持心跳机制,检测ChatServer故障
  3. 能够发现新添加的ChatServer设备,方便扩展服务器数量

1. Ubuntu下nginx安装

在服务器快速集群环境搭建中,都迫切需要一个能拿来即用的负载均衡器,nginx在1.9版本之前,只支持http协议web服务器的负载均衡,从1.9版本开始以后,nginx开始支持tcp的长连接负载均衡,但是nginx默认并没有编译tcp负载均衡模块,编写它时,需要加入–with-stream参数来激活这个模块。
nginx编译加入–with-stream参数激活tcp负载均衡块

1、安装包下载
地址:https://nginx.org/download/

2、上传至Ubuntu中并解压缩
tar -zxvf nginx-1.16.1.tar.gz

nginx编译安装需要先安装pcre、openssl、zlib等库。也可以直接编译执行下面的configure命令,
根据错误提示信息,安装相应缺少的库即可。

下面的make命令会向系统路径拷贝文件,需要在root用户下执行

sudo ./configure -with-stream
sudo make && make install

编译完成后,默认安装在了/usr/local/aginx目录。

cd /usr/local/nginx

在这里插入图片描述

可执行文件在sbin目录里面,配置文件在conf日录里面。

sudo vim ./conf/nginx.conf
sudo ./sbin/nginx -s reload#重读conf
sudo ./sbin/nginx#启动

2. nginx的tcp负载配置

在bash中使用

sudo netstat -tanp

查看当前tcp连接情况
在这里插入图片描述
安装的nginx默认会启动监听,要注意一下他们的端口位置
在events与http之间添加tcp的配置,如下:


#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;
}# nginx tcp loadbalance config
stream {upstream MyServer {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 8080;proxy_pass MyServer;tcp_nodelay on;}
}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       90;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}#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;}}

其中,tcp部分为

# nginx tcp loadbalance config
stream { #这里的端口指向的是服务器端口upstream MyServer { #要添加多少个服务器,就在下面开放多少个端口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 8080;	#监听端口,客户端连接此端口即可,nginx自动处理分配消息给服务器proxy_pass MyServer;	#代理的名字tcp_nodelay on;	}
}

客户端只需连接nginx配置的监听端口,即可与服务器进行通信
在这里插入图片描述

在这里插入图片描述

相关文章:

  • 中国飞机迎来历史性窗口,航空装备研制不断突破,智能化升级成为核心驱动力
  • nginx核心功能
  • 微服务开发中的应用生命周期管理
  • Javscript 字符串的常用方法有哪些?
  • k8s 学习记录 (六)_Pod 污点和容忍性详解
  • 20250429 垂直地表发射激光测量偏转可以验证相对性原理吗
  • Lua 第14部分 数据结构
  • 【论文阅读】PEEKABOO: Interactive Video Generation via Masked-Diffusion
  • Educational Codeforces Round 178 (Rated for Div. 2)
  • 在yolo中Ultralytics是什么意思呢?超越分析的智能
  • 【专题五】位运算(1):常见位运算操作总结
  • 【Java学习】Java的CGLIB动态代理:通俗解释与使用指南
  • 短视频矩阵批量剪辑与场景剪辑功能 OEM 定制开发
  • deepseek_ai_ida_plugin开源插件,用于使用 DeepSeekAI 将函数反编译并重命名为人类可读的视图。该插件仅在 ida9 上进行了测试
  • 【开源项目】基于sherpa-onnx的实时语音识别系统 - LiveASR
  • 从Windows开发迁移到信创开发的指南:国产替代背景下的技术路径与实践
  • swagger2升级至openapi3的利器--swagger2openapi
  • 跨平台项目部署全攻略:Windows后端+Mac前端在服务器的协同实战
  • 基于Spring Boot+Vue 网上书城管理系统设计与实现(源码+文档+部署讲解)
  • jupyter已经安装但是无法通过命令行启动
  • 域名注册好了怎么做网站/网络软文发布平台
  • 要建一个网站该怎么做/网站注册
  • 用asp做网站的流程/it培训机构排行榜
  • 昆山品牌网站/网站推广软件免费
  • 学生组织网站建设/网站分析培训班
  • 制作和维系一个网站的费用/网络营销策略都有哪些