负债均衡配置
负载均衡配置是应对高并发场景一种技术手段之一,在负载均衡配置的作用下,它根据负载均衡的算法可以将客户端的请求分别发送到不同的后端服务器,解决了单个服务器的性能瓶颈问题。
这里介绍nginx下负载均衡的配置,要配置nginx的负载均衡至少得3台服务器。
ip | 端口 | 说明 |
---|---|---|
192.168.88.81 | 80 | 主 |
192.168.88.82 | 8082 | 从 |
192.168.88.83 | 8083 | 从 |
192.168.88.82 绑定端口 8082
192.168.88.83 绑定端口 8083。
然后配置我们的主服务器。
1. 首先在 /etc/nginx/nginx.conf 文件中配置upstream。
http {
upstream yxjc{
server 192.168.88.82:8082 weight=5;
server 192.168.88.83:8083;
}
}
其中 yxjc
是别名,它是一个分组,其中包含 192.168.88.82:8082和192.168.88.83:8083两个服务器,其中第一个的访问权重更高。2. 然后配置我们的虚拟主机, /etc/nginx/conf.d/yxjc.conf ,路径在可以访问到这两个nginx服务器。
server {
location / {
proxy_pass http://yxjc;
}
}
3. 配置完成重启我们的nginx的服务即可。
以上便是负载均衡的最简单配置方法,它包含两个server,采用默认的轮询算法。以下介绍nginx的几个负载均衡算法。
Nginx负载均衡算法
1. 轮询。该算法是请求在多个服务器之间平均分配,权重的高的会优先访问,nginx负载均衡默认使用轮询算法。最开始的那个例子便是采用的轮询算法。
upstream yxjc {
# 默认采用轮询算法
server 192.168.88.82:8082;
server 192.168.88.83:8083;
}
2. 最少连接数。请求优先发送到最少连接数的服务,并考虑权重的高低。
upstream yxjc {
least_conn; #最少连接数
server 192.168.88.82:8082;
server 192.168.88.83:8083;
}
3. IP hash。用请求者的ip地址hash值来判断将请求发送到哪一个服务。
upstream yxjc {
ip_hash;
server 192.168.88.82:8082;
server 192.168.88.83:8083;
}
可以使用down参数来暂时从负载均衡的服务器中剔除,即暂时不将请求发送到该服务器。
upstream yxjc {
ip_hash;
server 192.168.88.82:8082;
server 192.168.88.83:8083;
server 192.168.88.84:8084;
}
4. 通用hash。可以自定义hash值的参数。可以是ip地址,端口 或者 uri。
upstream yxjc {
hash $request_uri consistent;
server 192.168.88.82:8082;
server 192.168.88.83:8083;
}
5. 最少相应时间。对于每个请求,Nginx 都会选择平均延迟最低和活动连接数最少的服务器。以下有三个评判标准来确认它的最少相应时间。- header:从服务器接收第一个字节的时间。
- last_byte:接受来自服务器的完整响应的时间。
- last_byte inflight:从服务器接收完整响应的时间,考虑到不完整的请求。
upstream yxjc {
least_time header;
server 192.168.88.82:8082;
server 192.168.88.83:8083;
}
6.随机算法。在这种方法中,每个请求都会被传递到一个随机选择的服务器。- Least_conn - 最少活动连接数。
- minimum_time=header - 从服务器接收响应头的最短平均时间。
- Least_time=last_byte - 从服务器接收完整响应的最短平均时间。
upstream yxjc {
random two least_time=last_byte;
server 192.168.88.82:8082;
server 192.168.88.83:8083;
server 192.168.88.84:8084;
server 192.168.88.85:8085;
}
服务权重
默认情况下,Nginx 使用权重通过 轮询的 方法在组内的服务器之间分配请求。 server 指令的 weight 参数用于设置服务器的权重。 默认权重为 1。权重越高,请求概率越高。
服务慢启动
当nginx启动过程中,会有连接访问该服务器,这可能导致服务标记为不可用或者失败,而慢启动正是为了解决这个问题。
upstream yxjc {
server 192.168.88.82:8082 slow_start=30s; #慢启动
server 192.168.88.83:8083;
server 192.168.88.84:8084;
}