欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用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

使用nginx实现负载均衡
使用nginx实现负载均衡
使用nginx实现负载均衡