CentOS 7 Nginx代理Tomcat负载均衡的常用方式

一、服务器

操作系统

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)
服务器 服务
192.168.1.170 nginx
192.168.1.171:8080 tomcat1
192.168.1.172:8080 tomcat2

二、nginx配置

官方文档

2.1 upstream name { … }

定义一组服务器,服务器可以在不同的端口上监听
示例:

upstream backend {
    server backend1.example.com weight=5;
    server 127.0.0.1:8080       max_fails=3 fail_timeout=30s;
    server unix:/tmp/backend3;
    server backup1.example.com  backup;
}

2.2 server address [parameters]

定义服务器地址和他的参数。
该地址可以指定为域名或IP地址,可选端口,如果未指定端口,则使用端口80。
解析为多个IP地址的域名,将会一次定义多个服务器。
参数:

参数 描述
weight=number 设置服务器的权重,默认情况下为1。
max_conns=number 限制代理服务器的同时活动连接的最大数量。默认值为零,表示没有限制。
max_fails=number 设置与服务器通信失败的最大尝试次数
fail_timeout=time 在指定次数的不成功尝试与服务器通信的时间范围内,应考虑服务器不可用;
backup 将服务器标记为备份服务器。当主服务器不可用时,将使用该服务器。
down 将服务器标记为永久不可用。

2.3 ip_hash

在该方法中,请求将基于客户端IP地址在服务器之间分配。该方法确保了来自同一客户端的请求将始终传递到同一服务器,除非该服务器不可用。
示例:

upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com down;
    server backend4.example.com;
}

三、配置案例

2.1 轮询(不带参数)

默认选项,当weight不指定时,各服务器weight相同, 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

upstream liuli {
	server 192.168.1.171:8080;
    server 192.168.1.172:8080;
    }
server {
	listen    80;
	server_name liulitest.com; # 没有域名的话,可以不加该参数
  	location / {
    	proxy_pass http://liuli;
        }
	}

2.2 权重

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
如果后端服务器down掉,能自动剔除。
比如下面配置,则171服务器的访问量为172服务器的两倍。

upstream liuli {
        server 192.168.1.171:8080 weight=2;
        server 192.168.1.172:8080 weight=1;
    }
server {
        listen    80;
        server_name liulitest.com; #没有域名的话,可以不加该参数
        location / {
        proxy_pass http://liuli;
        }
	}

2.3 ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session不能跨服务器的问题。
如果后端服务器down掉,要手工down掉。

upstream liuli {
        ip_hash;
        server 192.168.1.171:8080;
        server 192.168.1.172:8080;
    }
server {
        listen    80;
        server_name liulitest.com; #没有域名的话,可以不加该参数
        location / {
        proxy_pass http://liuli;
        }
	}
发布了149 篇原创文章 · 获赞 31 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_39680564/article/details/104647957