负载均衡分为四层负载均衡与七层负载均衡
所谓四层负载均衡就是指在OSI参考模型中的传输层,主要是基于ip + port方式的负载均衡
实现四层负载均衡方式:
硬件:F5,BIG-IP,EADWARE
软件:lvs,nginx,hayproxy
所谓七层负载均衡指的是OSI参考模型中的应用层,主要是基于URL或主机ip的负载均衡
实现七层负载均衡的方式:
软件:nginx,hayproxy等
四层负载均衡与七层负载均衡的区别:
- 四层负载均衡是将数据包在底层进行了分发,而七层这是数据包在顶层,所以四层负载均衡效率要比七层要高
- 四层负载均衡不能识别域名,而七层负载均衡可以识别域名
处理四层和七层以外还有其他层的方式,二层与三层负载。二层是数据链路层基于mac地址来实现负载均衡,三层是在网络层一般采用虚拟网络ip地址来实现负载均衡
实际采用模式= 四层(lvs)+七层(nginx)
一:七层proxy_upstream 负载均衡
来实现代理多个相同内容的服务器
环境:
name | ip | 作用 |
---|---|---|
ecs-node-0001 | 114.115.239.76 | nginx代理服务器 |
ecs-node-0002 | 114.115.213.208 | 模拟三台被代理的服务器 |
被代理主机:由于资源有限现用三个不同的端口来模拟三台服务器
[root@ecs-node-0002 ~]# vi /etc/nginx/nginx.conf
......
server {
listen 9001; #用三个不同的端口来模拟三台主机,切换到三台主机时效果一样
server_name localhost;
default_type text/html;
location / {
return 200 '<p>9001</p>'; #用户访问到看到的内容,为了让验证效果明显所以三个端口访问到的数字不同
}
}
server {
listen 9002;
server_name localhost;
default_type text/html;
location / {
return 200 "<p>9002</p>" ;
}
}
server {
listen 9003;
server_name localhost;
default_type text/html;
location / {
return 200 "<p>9003</p>";
}
}
代理主机:
[root@ecs-node-0001 ~]# vim /etc/nginx/nginx.conf
......#upstream是把相同服务器以组的方式放在一起进行访问
upstream backend {
server 114.115.213.208:9001;
server 114.115.213.208:9002;
server 114.115.213.208:9003;
}
server {
listen 8080; #暴露的端口
server_name localhost;
location / {
proxy_pass http://backend; #此处的名称要与upstream名称相同
} #proxy_pass反向代理,将将访问代理服务器时分发到upstream中
}
通过浏览器进行访问node1测试,代理服务器暴的是8080端口所以通过8080端口进行访问
如下所示通过刷新浏览器可查看到
二:代理服务器状态
代理服务器在负载调度负载调度中状态有以下几个:
down | 当前的server暂时不参与负载均衡 |
---|---|
backup | 预留备份服务器 |
max_fails | 允许最大请求失败次数 |
fails_timeout | 经过max_fails失败后服务暂停时间 |
max_conns | 限制最大链接数 |
1. down状态
name | ip | 作用 |
---|---|---|
ecs-node-0001 | 114.115.239.76 | nginx代理服务器 |
ecs-node-0002 | 114.115.213.208 | 模拟三台被代理的服务器 |