文章目录
一、服务器
操作系统
[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;
}
}