1.环境准备
由于公司的业务需要,tomcat单应用环境不足以支持用户需求,所以采用了nginx进行负载均衡,但本案例没有centos7的系统,所以再window开发机上模拟实现。首先去官网下载对应的nginx版本
之后解压出来,为了方便启动,我们写个批处理文件 start.bat
taskkill /f /t /im nginx.exe
start nginx.exe
差不多如下图:
进入conf文件,修改 nginx.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;
}
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;
upstream tomcats {
server localhost:8181 weight=1; # 可以配置多个
server localhost:8282 weight=1;
}
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcats; # 这里要和上面的别名一致
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; # 多重代理下的真实地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
配置完成后我们双击 start.bat;启动nginx ,去浏览器 localhost
接下来我们打开 idea开发工具, 新建一个 springboot项目 不懂的小伙伴可以看我的另一篇博客https://blog.csdn.net/Mr_xiatian/article/details/80151593 里面有详细的快速搭建流程
建完之后项目结构如下图:
我们 首先把 配置文件中的 server端口配置 8181,然后把控制器里面的根据 ID查询用户信息 写死 为1
启动项目,这就是模拟了 server1 ;启动完不管他,继续修改 端口8282, 把 ID查询改为2,模拟server2。具体如下图
至此,已经模拟好了 两台服务器。我们去浏览器里访问我们配置的 nginx : http://localhost/user/findOne/1 然后多刷新几次如下图:
数据库里我事先放了两条数据
我们发现查询的不一样了。 通过看控制台的日志我们也可以发现日志的输出也会不一样。 以上就完成了 nginx负载均衡的模拟,其实在生成环境中原理也差不多。