使用nginx实现负载均衡
程序员文章站
2022-05-31 19:01:37
...
1.随便创建一个项目,提供一个test接口,但是要能区分出访问的是哪个服务
我这边随手创建了一个springboot项目,和一个测试接口,使用请求端口号来区分是否实现负载均衡
*************************************************************************************
@RestController
public class TestController {
@Value("${server.port}")
private String port;
@RequestMapping("")
public String hello() {
System.out.println("call me " + port);
return "i am " + port;
}
}
*************************************************************************************
创建完后将项目打成jar包,都到这儿了,怎么打包就不多赘述了
2.将项目运行在服务器上
我这边准备了两台服务器,在其中一个服务器上运行了两次
1号服务器 8001 and 8002
2号服务器 8003
linux运行jar包: java -jar test.jar --server.port=8001/8002/8003
确保程序正常运行就好
3.从docker下载nginx镜像并启动
具体请参照我的博客 << 阿里云服务器构架java生产环境-9:docker安装nginx >>
4.找到负载均衡服务器的nginx目录,配置服务器地址及端口
编辑nginx的配置文件 vim nginx.conf
新增负载均衡的配置
----------------------------------------------------------------------------------
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
upstream upstream_name{
server 39.100.151.236:8003 weight=3;
server 39.98.63.4:8001 weight=2;
server 39.98.63.4:8002 weight=1;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://upstream_name;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
----------------------------------------------------------------------------------
5.启动docker的nginx容器,进行测试
启动容器 docker start nginx
测试 curl:localhost:8088(我的nginx端口号是8088,多次请求就会发现已经实现负载均衡了)
详情请参照图3