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域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。

(2)LVS的转发主要通过修改IP地址(NAT模式,分为源地址修改SNAT和目标地址修改DNAT)、修改目标MAC(DR模式)来实现。

①NAT模式:网络地址转换
  NAT(Network Address Translation)是一种外网和内网地址映射的技术。NAT模式下,网络数据报的进出都要经过LVS的处理。LVS需要作为RS(真实服务器)的网关。当包到达LVS时,LVS做目标地址转换(DNAT),将目标IP改为RS的IP。RS接收到包以后,仿佛是客户端直接发给它的一样。RS处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP。这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,这样,这个包对客户端看起来就仿佛是LVS直接返回给它的。客户端无法感知到后端RS的存在。

②DR模式:直接路由
  DR模式下需要LVS和RS集群绑定同一个VIP(RS通过将VIP绑定在loopback实现),但与NAT的不同点在于:请求由LVS接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过LVS。详细来看,一个请求过来时,LVS只需要将网络帧的MAC地址修改为某一台RS的MAC,该包就会被转发到相应的RS处理,注意此时的源IP和目标IP都没变,LVS只是做了一下移花接木。RS收到LVS转发来的包时,链路层发现MAC是自己的,到上面的网络层,发现IP也是自己的,于是这个包被合法地接受,RS感知不到前面有LVS的存在。而当RS返回响应时,只要直接向源IP(即用户的IP)返回即可,不再经过LVS。

(3)DR负载均衡模式数据分发过程中不修改IP地址,只修改mac地址,由于实际处理请求的真实物理IP地址和数据请求目的IP地址一致,所以不需要通过负载均衡服务器进行地址转换,可将响应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽成为瓶颈。因此,DR模式具有较好的性能,也是目前大型网站使用最广泛的一种负载均衡手段。

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
配置主调度服务器

[root@localhost ~]#vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {notification_email {root@localhost}notification_email_from node1@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id node1vrrp_mcast_group4 224.100.100.100}
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 88priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.18.24.46}
}
virtual_server 172.18.24.46 80 {delay_loop 6lb_algo wrrlb_kind DRnat_mask 255.255.255.0persistence_timeout 50protocol TCPsorry_server 127.0.0.1 80real_server 172.18.24.107 80 {weight 2HTTP_GET {url {path /index.htmlstatus_code 200}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 172.18.24.16 80 {weight 1HTTP_GET {url {path /index.htmlstatus_code 200}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
[root@localhost ~]#service keepalived start   #启动服务

配置从调度服务器

[root@localhost ~]#vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {notification_email {root@localhost}notification_email_from node1@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id node1vrrp_mcast_group4 224.100.100.100}
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 88priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}
virtual_ipaddress {172.18.24.46}
}
virtual_server 172.18.24.46 80 {delay_loop 6lb_algo wrrlb_kind DRnat_mask 255.255.255.0persistence_timeout 50protocol TCPsorry_server 127.0.0.1 80real_server 172.18.24.107 80 {weight 2HTTP_GET {url {path /index.htmlstatus_code 200}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 172.18.24.16 80 {weight 1HTTP_GET {url {path /index.htmlstatus_code 200}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
[root@localhost ~]#service keepalived start   #启动服务
#主服务器启动后,从服务器虽然启动服务,但是也还是获取不到VIP地址,只有当主调度服务器出故障后,从服务器才能获取到VIP地址。

配置两台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-13vip=172.18.24.106mask='255.255.255.255'dev=lo:1case $1 instart)echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announceecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceifconfig $dev $vip netmask $mask broadcast $vip up#route add -host $vip dev $devecho "The RS Server is Ready!";;stop)ifconfig $dev downecho 0 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/all/arp_announceecho 0 > /proc/sys/net/ipv4/conf/lo/arp_announceecho "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!

两台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,提供调度服务。

Linux下部署lvs+keepalived实现高可用负载均衡相关推荐

  1. LVS+Keepalived实现高可用负载均衡

    本文来说下如何使用LVS+Keepalived 实现高可用负载均衡 文章目录 概述 LVS与Keepalived 相关术语 本文小结 概述 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的.此时 ...

  2. LVS+Keepalived 实现高可用负载均衡

    一.Keepalived介绍 keepalived是在Linux系统下的一个轻量级的高可用解决方案,是使用C语言编写的,在 Keepalived 中实现了一组检查器,可以根据服务集群中服务器的健康状态 ...

  3. LVS + Keepalived 实现高可用负载均衡

    前言 本文以DR模式来进行实验! 首先这次研究这个LVS的前景,是因为公司要给客户的Master服务器做一个虚拟IP来提供访问,是在一个局域网下.想通过虚拟IP访问正式的环境,通过Master本身的I ...

  4. LVS(DR)+keepalived实现高可用负载均衡

    一.lvs+keepalived 1.lvs LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将 ...

  5. 在Linux下用LVS和Ipvsadm做Web负载均衡

    在Linux下用LVS和Ipvsadm做Web负载均衡,如果想对负载均衡有一个全面.宏观上的理解,可以看:服务器负载均衡技术的原理及应用. 一.简介及环境配置 在Linux下用 LVS和Ipvsadm ...

  6. 搭建Keepalived+Nginx高可用负载均衡服务器

    一.服务器搭建策略 单机模式: 只有一台应用服务器,组成一个单机模式 优点:简单方便(搭建.运营.维护) 缺点:不能出故障(停电.断网.系统崩溃.硬件老化.性能瓶颈) 应用场景:小型项目(几十个人) ...

  7. L8.1 lvs+heartbeat-ldirectord实现高可用负载均衡

    lvs+heartbeat-ldirectord实现高可用负载均衡 拓扑: IPVS规则与heartbeat ipvs规则不再使用ipvsadm配置,而是依靠heartbeat的包工具ldirecto ...

  8. haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群

    概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...

  9. IPVS-DR+keepalived实现高可用负载均衡集群

    IPVS-DR+keepalived高可用负载均衡集群方案前端的负载调度器采用双机热备方式,Keepalived主要用来监测RealServer的健康状态以及主负载均衡器和备份负载均衡器之间的故障转移 ...

最新文章

  1. FCKeditor如何升级CKEditor及使用方法
  2. python 一个列表转字典_python基础语法:列表和字典
  3. 怎么用python做战斗机_关于python文件操作
  4. Android RecyclerView(五)封装Holder与Adapter(Android 5.0 新特性)
  5. java缓存技术redis原理_Java架构师-5分钟带你深入理解Redis的持久化方式及其原理...
  6. 介绍for-of循环
  7. Linux基础——Linux 基本指令 nano 和 cat
  8. [转载] 重新抛出异常与 public Throwable fillInStackTrace()
  9. python 抓取百度音乐
  10. 动态规划 杭电1257
  11. 【深度学习笔记】深度学习用于图片的分类和检测总结
  12. “领跑者”计划倒逼光伏产业升级效果显现
  13. Multisim14 语言设置
  14. 计算机测色的基本原理,计算机测色和配色.doc
  15. 创建LV报错/dev/vgdata/data: not found: device not cleared Aborting. Failed to wipe start of new LV.
  16. html游戏代码20行,js贪吃蛇源代码 20行js代码实现的贪吃蛇大战?
  17. 【17.12.22.B】
  18. 美联邦调查局 FBI 网站被黑,数千特工信息泄露
  19. 武汉大学计算机学院中国排名,2019年全国高校排行_19中国大学排名1200强公布,浙江大学第5,武汉大学第...
  20. BasicVSR论文阅读笔记

热门文章

  1. 【IOS账号分享】《返校》
  2. 海量图片的分布式存储及负载均衡研究(浅析)
  3. 图论,专为迷途少年而生
  4. mongo shell教程
  5. 解决YOLOv5训练自己的数据集出现No labels in path\train.cache问题
  6. Fedora9 下搭建Qt Creator的ARM开发环境并移植Qt4.6.3-books到mini2440
  7. cad批量打印快捷键_[效率]CAD批量打印和批量合并PDF
  8. 你想要的宏基因组-微生物组知识全在这(2023.8)
  9. 计算机网络机房管理制度,计算机网络机房安全运维管理制度
  10. PHP 网易云盾短信验证码