Nginx负载均衡
# Nginx负载均衡
# 负载均衡算法
源地址哈希法:
根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。轮询法:
将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。随机法:
通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。加权轮询法:
不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。加权随机法:
与加权轮询法一样,加权随机法也根据后端机器的配置,系统的负载分配不同的权重。不同的是,它是按照权重随机请求后端服务器,而非顺序。最小连接数法:
由于后端服务器的配置不尽相同,对于请求的处理有快有慢,最小连接数法根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。
# 负载均衡的方式
# 1.默认轮询
upstream myserver {
server 192.168.0.135:8080;
server 192.168.0.135:8081;
}
# 2.weight
根据权重分配,权重越高的分配的次数越多
upstream myserver {
server 192.168.0.135:8080 weight=1;
server 192.168.0.135:8081 weight=1;
}
# 3.ip_hash
每个请求按照访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream myserver {
ip_hash;
server 192.168.0.135:8080;
server 192.168.0.135:8081;
}
# 4.fair(第三方)
按照后端服务器响应时间来分配,响应时间越短的优先分配。
upstream myserver {
server 192.168.0.135:8080;
server 192.168.0.135:8081;
fair;
}
# Nginx配置实例-负载均衡
# 实现效果
浏览器地址栏输入地址 http://192.168.0.135/edu/a.html ,实现负载均衡,平均8080和8081端口中
# 准备工作
准备两台tomcat服务器,一台8080,一台8081
在两台tomcat里面webapps目录中,创建名称是edu的文件夹,在edu文件夹中创建页面a.html,用于测试,可以使用之前的反向代理的环境
# 1、修改Nginx配置文件
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
upstream myserver { # 添加两个端口
server 192.168.0.135:8080 weight=5; # 设置权重5和10 权重越高 分配越多
server 192.168.0.135:8081 weight=10;
}
server {
listen 80;
server_name 192.168.0.135;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://myserver; # 添加负载均衡
proxy_connect_timeout 10;
root html;
index index.html index.htm;
}
[root@nginx conf]# /usr/local/nginx/sbin/nginx -s reload
上次更新: 2023/11/28, 22:03:59