Lvs+Keepalived工作原理

Posted 古巷威士忌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lvs+Keepalived工作原理相关的知识,希望对你有一定的参考价值。

当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 Lvs+Keepalived工作原理

Lvs+Keepalived工作原理


lvs+keepalived是什么?

keepalived工作原理

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

LVS简介与工作原理

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR),十种调度算法 
(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。

 LVS主要用于服务器集群的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术。它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。它易用,配置非常简单,且有多种负载均衡的方法。它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。另外可扩展性也非常好。

可以利用LVS技术实现高可伸缩的、高可用的网络服务,例如WWW服务、Cache服务、DNS服务、FTP服务、MAIL服务、视频/音频点播服务等等,有许多比较著名网站和组织都在使用LVS架设的集群系统,例如:Linux的门户网站(www.linux.com)、向RealPlayer提供音频视频服务而闻名的Real公司(www.real.com)、全球最大的开源网站(sourceforge.net)等。

(1)LVS是四层负载均衡,也就是说建立在OSI模型的第四层——传输层之上,传输层上有我们熟悉的TCP/UDP,LVS支持TCP/UDP的负载均衡。因为LVS是四层负载均衡,因此它相对于其它高层负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。

lvs+keepalived 
LVS提供负载均衡,keepalived提供健康检查,故障转移,提高系统的可用性!采用这样的架构以后,很容易对现有系统进行扩展,只要在后端添加或者减少realserver,更改lvs的 配置文件,就能实现无缝配置变更!

实战:lvs(DR模型)+keepalived实现高可用负载均衡

实验环境:

五台机器,两台后台WEB服务器,两台负载均衡调度服务器,分为一主一从,一台客户机做访问测试。 
负载均衡调度服务器 ip:主 172.18.24.26/16 从 172.18.24.6/16 
WEB服务器 ip:172.18.24.16/16     172.18.24.107/16 
客户机测主机 ip:172.18.24.17/16 

配置主调度服务器

Lvs+Keepalived工作原理

Lvs+Keepalived工作原理

Lvs+Keepalived工作原理


源码最下面复制粘贴


Lvs+Keepalived工作原理


配置从调度服务器

Lvs+Keepalived工作原理

Lvs+Keepalived工作原理

Lvs+Keepalived工作原理



配置两台WEB服务器


## lvs_dr_rs.sh 脚本用于节点服务器绑定 VIP ,并抑制响应 VIP 的 ARP 请求。## 这样做的目的是为了不让关于 VIP 的 ARP 广播时,节点服务器应答( 因为节点服务器都绑定了 VIP ,如果不做设置它们会应答,就会乱套 )


[root@varnish ~]#bash lvs_dr.sh start 

 #执行脚本The RS Server is Ready!



两台web服务器都要执行此脚本!

然后,在这两台服务器上安装Apache软件,开启httpd服务,并且设置好默认测试主页,比较简单,这里不再细讲。

测试 
我们设置的调度算法是加权轮询,权重是2:1 
在客户端主机172.18.24.46上测试

[root@localhost ~]#curl 172.18.24.46 real_srever1 107

[root@localhost ~]#curl 172.18.24.46 real_srever1 107

[root@localhost ~]#curl 172.18.24.46 real_srever2 16

[root@localhost ~]#curl 172.18.24.46 real_srever1 107

[root@localhost ~]#curl 172.18.24.46 real_srever1 107

[root@localhost ~]#curl 172.18.24.46 real_srever2 16

停掉主调度服务器的keepalived服务

[root@localhost ~]#server keepalived stop 

继续测试

[root@localhost ~]#curl 172.18.24.46 real_srever1 107

[root@localhost ~]#curl 172.18.24.46 real_srever1 107

[root@localhost ~]#curl 172.18.24.46 real_srever2 16

能正常工作。

从测试可看出,测试三次,两个调度到107主机上,一个调度上16上。当主调度服务器出故障后,从服务器能马上接替VIP,提供调度服务。

源码如下:


1.配置主调度服务器


[root@localhost ~]#vim /etc/keepalived/keepalived.conf! Configuration File for keepalived global_defs {        notification_email {                        root@localhost                        }        notification_email_from node1@localhost        smtp_server 127.0.0.1        smtp_connect_timeout 30        router_id node1        vrrp_mcast_group4 224.100.100.100        } vrrp_instance VI_1 {    state MASTER    interface eth0    virtual_router_id 88    priority 100    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        172.18.24.46    } } virtual_server 172.18.24.46 80 {    delay_loop 6    lb_algo wrr    lb_kind DR    nat_mask 255.255.255.0    persistence_timeout 50    protocol TCP    sorry_server 127.0.0.1 80    real_server 172.18.24.107 80 {        weight 2        HTTP_GET {            url {              path /index.html              status_code 200            }            connect_timeout 3            nb_get_retry 3            delay_before_retry 3        }    }    real_server 172.18.24.16 80 {        weight 1        HTTP_GET {            url {              path /index.html              status_code 200            }            connect_timeout 3            nb_get_retry 3            delay_before_retry 3        }    } } [root@localhost ~]#service keepalived start   #启动服务



2.配置从调度服务器



3.配置两台Web服务器


## lvs_dr_rs.sh 脚本用于节点服务器绑定 VIP ,并抑制响应 VIP 的 ARP 请求。## 这样做的目的是为了不让关于 VIP 的 ARP 广播时,节点服务器应答( 因为节点服务器都绑定了 VIP ,如果不做设置它们会应答,就会乱套 )


[root@localhost ~]#vim lvs_dr_rs.sh    #!/bin/bash    #Author:wangxiaochun    #Date:2017-08-13    vip=172.18.24.106    mask='255.255.255.255'    dev=lo:1    case $1 in    start)        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore        echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore        echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce        echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce        ifconfig $dev $vip netmask $mask broadcast $vip up        #route add -host $vip dev $dev        echo "The RS Server is Ready!"        ;;    stop)        ifconfig $dev down        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce        echo "The RS Server is Canceled!"        ;;    *)        echo "Usage: $(basename $0) start|stop"        exit 1        ;;    esac [root@varnish ~]#bash lvs_dr.sh start  

#执行脚本The RS Server is Ready!

以上是关于Lvs+Keepalived工作原理的主要内容,如果未能解决你的问题,请参考以下文章

Lvs+Keepalived工作原理

keepalived高可用部署

LVS+Keepalived 高可用群集实战部署

LVS负载均衡与keepalived架构

LVS+Keepalived 高可用群集的介绍和搭建步骤

高性能业务架构解决方案(LVS+Keepalived)