<服务>Keepalived+Ngixn
目录:
keepalived负载均衡
环境准备
两台nginx提供web服务,两台keepalive+nginx提供高可用负载均衡
IP | 服务 | 主机名 |
---|---|---|
192.168.0.201 | keepalived+nginx | why-1 |
192.168.0.202 | nginx | why-2 |
192.168.0.203 | nginx | why-3 |
192.168.0.130 | keepalived+nginx | why |
测试web服务
用不同的web页面用于区分负载均衡服务
[root@why nginx-1.6.3]# curl 192.168.0.203
ip 192.168.0.203
[root@why nginx-1.6.3]# curl 192.168.0.202
ip 192.168.0.202
负载均衡配置
以下配置加入nginx.conf到http标签中,或者写一个配置文件,通过include配置文件加入到http标签下
upstream blog_real_servers { #被代理服务器
server 192.168.0.202 weight=5;
server 192.168.0.203 weight=10;
}
server {
listen 80;
server_name www.why.com; #解析域名
location / {
proxy_pass http://blog_real_servers; #反向代理
}
}
我是通过在conf目录下添加一个配置文件upstream01.conf,然后在nginx.conf中include upstream01.conf;实现配置的。
keepalived配置
参考<服务>Keepalived服务的keepalived配置文件(单实例)
验证
curl vip测试
[root@why nginx-1.6.3]# curl 192.168.0.204
ip 192.168.0.202
[root@why nginx-1.6.3]# curl 192.168.0.204
ip 192.168.0.203
[root@why nginx-1.6.3]# curl 192.168.0.204
ip 192.168.0.203
[root@why nginx-1.6.3]# curl 192.168.0.204
ip 192.168.0.202
[root@why nginx-1.6.3]# curl 192.168.0.204
ip 192.168.0.203
[root@why nginx-1.6.3]# curl 192.168.0.204
ip 192.168.0.203
可以看到通过nginx负载均衡达到了访问202和203的比例为1:2,对应权重5:10。
关闭202的nginx
[root@why-2 html]# ../sbin/nginx -s stop
[root@why nginx-1.6.3]# curl 192.168.0.204
ip 192.168.0.203
[root@why nginx-1.6.3]# curl 192.168.0.204
ip 192.168.0.203
[root@why nginx-1.6.3]# curl 192.168.0.204
ip 192.168.0.203
[root@why nginx-1.6.3]# curl 192.168.0.204
ip 192.168.0.203
可以看到关闭了202节点后,请求都抛给203节点。
关闭203的nginx
[root@why-3 html]# ../sbin/nginx -s stop
[root@why nginx-1.6.3]# curl 192.168.0.204
<html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx</center>
</body>
</html>
[root@why nginx-1.6.3]# curl 192.168.0.204
<html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx</center>
</body>
</html>
可以看到关闭了203节点后,没有web服务运行,会返回502错误。
也可以看出,nginx做负载均衡时自动检查后端webserver的状态。
关闭keepalived测试
[root@why-1 keepalived]# /etc/init.d/keepalived stop
停止 keepalived: [确定]
[root@why-3 html]# curl 192.168.0.204
ip 192.168.0.202
[root@why-3 html]# curl 192.168.0.204
ip 192.168.0.203
[root@why-3 html]# curl 192.168.0.204
ip 192.168.0.203
[root@why-3 html]# curl 192.168.0.204
ip 192.168.0.202
[root@why-3 html]# curl 192.168.0.204
ip 192.168.0.203
可以看到高可用nginx负载均衡实现,另外我们还可以在nginx前加LVS负载均衡。
负载均衡四种情况
- 访问量大,但是只是要求简单转发,通过LVS负载均衡即可;
- 访问量大,并且需求高(根据URL做转发,动静分离等),就需要LVS负载均衡,Nginx根据业务反向代理,由后端Nginx或Apache提供服务;
- 访问量小,但是只是要求简单转发,通过Nginx负载均衡即可;
- 访问量小,并且需求高(根据URL做转发,动静分离等),可以考虑前端nginx负载,后端Nginx反向代理,由后端Nginx或Apache提供服务。
互联网上的四层负载即LVS实现,而七层负载就要通过LVS+Nginx,前者实现负载均衡,后者实现反向代理。