Nginx实现七层负载均衡


Nginx实现七层负载均衡

1.负载均衡的作用

1.解决web服务器的单点故障,让web服务器做成一个集群
2.将请求平均下发给后端的web服务器

2.负载均衡的各种叫法

LB(Load Balance)
阿里云:SLB(Server Load Balance)
腾讯云:CLB
青云:LB
ucloud:ULB
AWS:ELB

3.负载均衡产品

软件:
	Nginx
	HAproxy
	LVS
硬件
	F5

4.四层负载均衡和七层负载均衡的区别

1.四层负载在传输层,七层负载在应用层
2.四层负载传输速度比七层负载快
3.四层负载无法识别域名,七层负载可以识别域名

5.负载均衡实现场景

	Nginx要实现负载均衡需要用到 proxy_pass 代理模块配置。
	Nginx负载均衡与Nginx代理不同地方在于,Nginx的一个 location仅能代理一台服务器,而Nginx负载均衡则是将客户端请求代理转发至一组upstream虚拟服务池

Nginx实现七层负载均衡

6.负载均衡配置语法

Syntax:	upstream name { ... }
Default:	—
Context:	http 

upstream name {
	server xxx; 
	server xxx; 
}

配置负载均衡

环境准备

主机名 WanIP LanIP 角色 安装应用
lb01 10.0.0.5 172.16.1.5 负载均衡 nginx
web01 10.0.0.7 172.16.1.7 web网站 nginx
web02 10.0.0.8 172.16.1.8 web网站 nginx

编写nginx配置文件(web01,web02)

[root@web01 ~]# vim /etc/nginx/conf.d/www.jl.com.conf

server{
        listen 8000;
        server_name www.jl.com;
        root /code;
        index index.html;
}
[root@web02 ~]# vim /etc/nginx/conf.d/www.jl.com.conf

server{
        listen 8000;
        server_name www.jl.com;
        root /code;
        index index.html;
}
2.创建站点目录
[root@web02 ~]# mkdir /code
3.将测试内容写进index.html文件中
[root@web01 ~]# echo 'web01 测试' > /code/index.html
[root@web02 ~]# echo 'web02 测试' > /code/index.html
4.启动nginx
systemctl start nginx

配置负载均衡(lb01)

1.配置nginx配置文件
[root@lb01 ~]# vim /etc/nginx/conf.d/lb.jl.com.conf
# 模块名 后端主机池名字(根据网站域名来起名) 
upstream www.jl.com {
        server 172.16.1.7:8000;
        server 172.16.1.8:8000;
}
server{
        listen 80;
        server_name www.jl.com;

        location /{
                proxy_pass http://www.jl.com;
                # 遇到如下状态码的机器跳过请求的下发,直接下发到其他正常的服务器
                proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
                include proxy_params;
        }
}
## 如果后台服务连接超时,Nginx是本身是有机制的,如果出现一个节点down掉的时候,Nginx会更据你具体负载均衡的设置,将请求转移到其他的节点上,但是,如果后台服务连接没有down掉,但是返回错误异常码如:504、502、500,这个时候你需要加一个负载均衡的设置,如上:proxy_next_upstream http_500 | http_502 | http_503| http_504 |http_404;意思是,当其中一台返回错误码404,500...等错误时,可以分配到下一台服务器程序继续处理,提高平台访问成功率。
2.在windows中解析域名
10.0.0.5 www.jl.com
3.浏览器访问

Nginx实现七层负载均衡

Nginx实现七层负载均衡

7.负载均衡调度算法

调度算法 概述
轮询(rr) nginx做负载默认使用轮询的调度算法,将请求平均下发到后端的服务器上
加权轮询(wrr) 增加权重,根据服务器的配置给轮询加上权重
源IP(ip_hash) 根据用户的ip,将同一ip地址的请求下发到同一web服务器上
源url(url_hash) 根据用户访问的URL,将同一URL的请求下发到同一的web服务器上
最小连接数(least_conn) 哪台服务器的连接数量最少,那么就将请求下发到该web服务器上

原创文章,作者:sunnyman218,如若转载,请注明出处:https://blog.ytso.com/268119.html

(0)
上一篇 2022年6月19日
下一篇 2022年6月19日

相关推荐

发表回复

登录后才能评论