记一次nginx负载均衡遇到的问题
记一次nginx负载均衡遇到的问题
每天多学一点点~
话不多说,这就开始吧…进击的爆裂无球
文章目录
- 记一次nginx负载均衡遇到的问题
- 1.前文
- 2.准备工作
- 3.nginx负载配置
- 4.nginx模块解析
- 5.总结
- 7.结语
1.前文
昨天因需求搭建了rabbitmq集群。因国网内部原因,只是在两台windows上机器搭建了一个镜像集群(有时间写一下windows以及docker搭建的过程),然后用nginx或者haproxy进行负载(之前写过 Haproxy安装及配置文件详解及mysql负载均衡 的博客)博主自认为nginx应该是很熟的,结果踩了半天坑也没负载起来,这里和大家分享一下,也顺便记录自己平时工作中遇到的一些问题。
2.准备工作
rabbitmq集群,搭建过程有时间再写博客。其实没有mq集群也没关系,用docker分别装两个,或者直接用mysql也可以。这里博主就用mysql试验一下,因为mysql更直观。
虚拟机mysql + 本地mysql
3.nginx负载配置
nginx官方文档 俗话说的好,不懂直接上官网看,博客毕竟好的太少,也不一定是正确的。
博主之前只用过 ngx_http_upstream_module 模块的负载均衡,并没有特别理解其意思,于是傻乎乎的用这个模块来配置呢。
自己的配置
http {
include mime.types;
default_type application/octet-stream;
# 负载均衡配置 配置在http模块
upstream mysql {
#最大失败2次 超时3秒 weight 权重大小 越大越优先 轮询
server 127.0.0.1:3306 max_fails=2 fail_timeout=3s weight=1; # 本机mysql
server 192.168.73.130:3306 max_fails=2 fail_timeout=3s weight=1; # 虚拟机mysql
}
server {
listen 5678 default;
server_name 192.168.73.130;
location / {
proxy_connect_timeout 1s;
proxy_pass http://mysql;
}
}
}
这段配置,咋一看是堆的,可是怎么也连不上。检查一下springboot代码
似乎也没错。。。百思不得其解。。。
于是去官网看了一下,换了配置,启用 ngx_stream_core_module 模块的负载配置
自己的配置
#user root;
worker_processes 1;
events {
worker_connections 1024;
}
stream {
upstream mysql {
#最大失败2次 超时3秒 weight 权重大小 越大越优先 轮询
server 127.0.0.1:3306 max_fails=2 fail_timeout=3s weight=1;
server 192.168.73.130:3306 max_fails=2 fail_timeout=3s weight=1;
}
server {
listen 9000;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass mysql;
}
}
用jmeter模拟10个线程测试一下,看看是否轮询写入了数据库。
4.nginx模块解析
那么上文说到,为何用 ngx_http_upstream_module 配置负载均衡不行,况且里面还有很多配置策略,如轮询,iphash等等,非常好,却只能用 ngx_stream_core_module 模块来配置呢?
博主上了官网,查找了资料,总结出以下几点,如有不对之处请指正,一起学习~
- ngx_http_upstream_module 模块是七层负载均衡,而ngx_stream_core_module是四层负载。
- ngx_http_upstream_module 针对的是http协议,而ngx_stream_core_module针对的是tcp协议。
- tomcat属于http,而mysql,rabbitmq等是用tcp进行传输的,所以网上一般博客会用ngx_http_upstream_module 来负载tomcat,用ngx_stream_core_module负载mysql或者rabbitmq,却没有说清楚为何。
- 老版本的nginx只支持http,从1.9.0开始新增stream模块,支持tcp
具体的各位也可以直接去官网看介绍,更加清楚详细~
nginx这是要抢haproxy的饭碗哦~
5.总结
之前只知道用,没想过那么多,这次因为工作需要用到了才知道自己是多么的肤浅。在这里记录下这个问题,愿看到的朋友们可以少走一些坑,一起学习,一起努力~
7.结语
世上无难事,只怕有心人,每天积累一点点,fighting!!!
还没有评论,来说两句吧...