<服务>Keepalived+Ngixn

时间:Jan. 19, 2017 分类:

目录:

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负载均衡。

负载均衡四种情况

  1. 访问量大,但是只是要求简单转发,通过LVS负载均衡即可;
  2. 访问量大,并且需求高(根据URL做转发,动静分离等),就需要LVS负载均衡,Nginx根据业务反向代理,由后端Nginx或Apache提供服务;
  3. 访问量小,但是只是要求简单转发,通过Nginx负载均衡即可;
  4. 访问量小,并且需求高(根据URL做转发,动静分离等),可以考虑前端nginx负载,后端Nginx反向代理,由后端Nginx或Apache提供服务。

互联网上的四层负载即LVS实现,而七层负载就要通过LVS+Nginx,前者实现负载均衡,后者实现反向代理。