nginx负载均衡的实现

1、 安装nginx

https://blog.csdn.net/qq_50247813/article/details/126550316

2、 修改配置文件,配置后端服务器
2.1、有3台后端服务需要实现负载均衡

172.17.0.2:80
172.17.0.3:80
172.17.0.4:80

2.2、修改配置文件,使用代理的方式实现负载均衡(默认轮询)

upstream myweb {
    server 172.17.0.2:80;
    server 172.17.0.3:80;
    server 172.17.0.4:80;
}
server {
    listem  80;
    server_name 192.168.92.20;		# 本机ip或者域名

    location / {
        proxy_pass http://myweb;
    }
}

设置代理名字为myweb,代理到myweb实现负载

3、 负载模式的介绍

nginx默认采用轮询的方式进行负载均衡

1、 加权轮询

weight代表权重默认为1,权重越高被分配的客户端越多。指定轮询几率,weight权重大小和访问比率成正比。

upstream myweb {
    		server 172.17.0.2:80 weight=1;
    		server 172.17.0.3:80 weight=5;
    		server 172.17.0.4:80 weight=2;
}

2、 hash负载均衡

每个请求按访问的ip的hash结果分配,这样每个访客固定访问一个后端服务器 好处:使用nginx +
ip_hash这种策略代理,很好解决了同一用户访问同一个应用,session不共享的问题,实现了session共享的问题

不能把后台服务器直接移除,只能标记down

  • 不能把后台服务器直接移除,只能标记down

3、 url_hash

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效

upstream myweb {
	ip_hash
    server 172.17.0.2:80;
    server 172.17.0.3:80;
    server 172.17.0.4:80;
	hash $request_uri;
	hash_method crc32;
}

4、 fair

按后端服务器的响应时间来分配请求,响应时间短的优先分配

upstream myweb {
	ip_hash
    server 172.17.0.2:80;
    server 172.17.0.3:80;
    server 172.17.0.4:80;
	fair
}

5、 least_conn(最小连接负载均衡)

1、 选取活跃连接数与权重weight的比值最小者为下一个处理请求的server。当然,上一次已选的server和以达到最大连接数的server照例不在选择的范围内
2、 假如上一个请求选择了第二台172.17.0.3,下一个请求到来时,通过比较剩下可用的server的conns/weight值来决定选哪一台。
3、如果172.17.0.2连接数为 100,172.17.0.2连接数为80,应为权重分别为2和1,因此计算结果100/2=50,80/1=80。应为50<80所以选择第一台而不是第二台,尽管连接数第一台要大于第三台。

upstream myweb {
	  	least_conn;
   		server 172.17.0.2:80 weight 2;
    	server 172.17.0.3:80 weight 1;
   		server 172.17.0.4:80 weight 1;
}

4、 upstream指令参数

max_conns: 限制最大同时连接数1.11.5版本只能用于商用版
down:禁止访问
backup:备用机 只有在其他服务器无法访问的时间才能访问到,不适用与hash负载均衡、随机负载均衡
max_fails:表示失败几次,则标记server已宕机,剔除上游默认值1
fail_timeout:表示失败的重试时间默认值10

你可能感兴趣的:(nginx,linux,nginx)