LVS+Keepalived之DR模式配置

理论基础

LVS直接配置DR模式,会存在一个问题,LVS负载均衡器是单点,容易发生单点故障,这样就会造成所有的服务都无法访问,这是不能容忍的。

解决单点故障的方法当然是一变多!但是入口的IP地址只能有一个,怎么变多?怎么实现多点?有2种形式:

  • 主备模型:备用机要以最快的速度接管原来的VIP(virtual IP),只有主机对外提供服务,只有主机挂了的时候,备机才顶上去。
  • 主主模型:所有的LVS都是主,现在要借用其他形式搞定只有一个的入口IP地址,比如动态DNS。主和主之间是协作的形式。

这里我们主要讨论主备模型,有两个点需要考虑:方向性、效率性。

怎么知道主机挂没挂?

  1. 可以由备机按照一定的时间间隔轮询主机,但是这样会对主或多或少造成一些压力。
  2. 可以由主机发广播到所有的备机,但是网络是不可靠的,所以有一种重试机制。

如果已经确定主机挂了,谁来作为新的主机?使用加权重的方式,为每个备设置不同的权重,当主挂了以后,权重大的备机成为新的主。

如果后台的某一个Real Server挂掉了,负载均衡服务器无法感知,还会对这台转发包,这样就会造成一部分人的业务请求异常,另一部分人的业务正常。

那么怎么知道Real Server挂了?可以用ping吗?不可以用ping命令,ping命令基于网络层的ICMP协议,只能检验网络能不能通,而web服务是位于应用层的,能ping通不能代表web服务正常可用。那怎么知道Real Server挂没挂?最简单的方式是“访问一下”,“访问一下”这个操作,它的底层验证的是应用层的HTTP协议,你发一个请求,返回的是200ok,就说明是可用的。

LVS内核中有模块:ipvs负载均衡模块。你想要检测各个RS是否可用的话,可以直接去修改模块的源码,也可以使用第三方实现。第三方可以是人,也可以是自动化(也就有了自动化运维)。

这个自动化的程序就是keepalived!它可以代替人工,实现自动运维。解决LVS单点故障,实现HA。

keepalived要干的活:

  1. 监控自己的LVS服务
  2. 处于Master角色的路由器会一直发送VRRP(Vritrual Router Redundancy Protocol)数据包,处于BACKUP角色的路由器只会接受Master角色发送过来的报文信息,用来监控Master运行状态,如果Master挂了,一堆Backup推举选出一个新的Master。
  3. 不需要再手动配置VIP,添加LVS(ipvs模块)配置,只需要写到配置文件中即可。
  4. 对后端的Real Server做健康检查,及时剔除不可用的节点。

最后,keepalived不仅仅用来解决LVS单点故障问题,它是一个通用的环境,主要作为linux上的HA的实现。例如,当你并发量不大的时候,nginx可以作为公司的负载均衡来使用,此时nginx成为了单点故障,这个问题也可以用keepalived来解决。

实验配置

服务器IP及部署角色如下:

  • node01:192.168.252.10,负载均衡器MASTER。
  • node04:192.168.252.14,负载均衡器BACKUP。
  • node02:192.168.252.11,Real Server,上面部署httpd,对外提供服务。
  • node03:192.168.252.12,Real Server,上面部署httpd,对外提供服务。

  1. node02和node03的配置如下,并启动httpd服务。
#!/bin/bashVIP=192.168.252.100echo 1 > /proc/sys/net/ipv4/conf/ens32/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/ens32/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announceifconfig lo:1 $VIP netmask 255.255.255.255
  1. node01和node04安装keepalived,yum install -y keepalived

修改/etc/keepalived/keepalived.conf配置文件内容如下:

! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr# 严格遵守VRRP协议。下列情况将会阻止启动Keepalived:1. 没有VIP地址。2. 单播邻居。3. 在VRRP版本2中有IPv6地址#vrrp_strict # 这里一定要注释,否则keepalived会无法启动vrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTER # node04这里改为BACKUPinterface ens32 # 网卡设置virtual_router_id 51priority 100 # 权重,node04设置为50,如果有多个备,要设置为不同的权重,当主挂了后,权重大的成功为主advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.252.100/24 brd 192.168.252.255 dev ens32  label ens32:1  # VIP}
}# ipvsadm -A -t 192.168.252.100:80 -s rr
virtual_server 192.168.252.100 80 {delay_loop 6lb_algo rrlb_kind DRpersistence_timeout 0protocol TCP# ipvsadm -a -t 192.168.252.100:80 -r 192.168.252.11real_server 192.168.252.11 80 {weight 1HTTP_GET {url { # keepalived监控http://192.168.252.11:80,返回状态码200说明keepalived还存活path /status_code 200}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.252.12 80 {weight 1HTTP_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 3delay_before_retry 3}}}

验证步骤:

  1. 关闭node01的网络,这样lvs就不能提供服务,验证node04是否成为新的主机,ifconfig ens32 down
  2. 启动node01的网络,这样lvs又能提供服务了,这时会发现node01又成为主了。
  3. 关闭node02中的httpd,这样会发现ipvsadm中关于node02的Real Server记录会被删除,所有的请求都会转发到node03。
  4. 启动node02中的httpd,ipvsadm中又有node02的Real Server记录,请求也能成功转发到node02。

LVS+Keepalived之DR模式配置相关推荐

  1. 运维企业专题(5)LVS高可用与负载均衡中篇——VS/DR模式配置详解

    实验准备 1.下面的实验使用的是rhel6系列(rhel6.5)的虚拟机,因此你需要有对应的镜像和yum源 2.准备三台虚拟机,为了区分主机名与IP分别为 server1 172.25.6.1 ser ...

  2. LVS+Keepalived+httpd安装及配置

    LVS+Keepalived+httpd安装及配置 原文:http://blog.csdn.net/yanpenglei/article/details/53838354 环境 操作系统 CentOS ...

  3. php lvs,LVS(四)LVS集群DR模式

    LVS集群DR模式 系统:CentOS-7-x86_64-Minimal-1611.iso 三台虚拟机网络规划: Director (桥接网卡) enp0s3DIP:192.168.43.201 19 ...

  4. LVS负载均衡DR模式实现

    LVS负载均衡之DR模式配置 DR 模式架构图: 操作步骤 实验环境准备:(centos7平台) 所有服务器上配置 # systemctl stop firewalld //关闭防火墙 # sed - ...

  5. LVS负载均衡DR模式+keepalived

    实验拓扑: 实验准备: CentOS6.5-x86-64 node1 10.0.0.11    软件:ipvsadm+keepalived    角色:Director1 node2 10.0.0.1 ...

  6. LVS负载均衡DR模式安装和配置过程详解

    ===============================为什么使用LVS负载均衡============================= **nginx反向代理** 用作负载均衡优点: 工作在 ...

  7. lvs中dr模式配置脚本

    1 dr模式介绍 1.1 lvs的安装 安装具体解释:http://blog.csdn.net/CleverCode/article/details/50586957. 1.2 lvs模式 lvs有三 ...

  8. LVS的DR模式配置

    做之前需要把ipvsadm的规则和iptables的nat规则清空: ipvsadm -C iptables -t nat -F 将rs1和rs2的网关还原,并关闭dir的外网ip: ifdown e ...

  9. lvs负载均衡—DR模式

    lvs介绍: 1 . LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好 ...

最新文章

  1. 禁用页面缓存的几种方法(静态和动态)
  2. python导入数据画多列直方图_在python datafram中使用两列(值、计数)绘制直方图...
  3. acwing算法题--多重背包问题二
  4. 以太坊智能合约开发第七篇:智能合约与网页交互
  5. 【错误记录】Android Studio Logcat 报错 ( read: unexpected EOF! )
  6. tensorflow随笔-新的计算图
  7. json 和 table控件
  8. 计算机网络(二)-性能指标
  9. FineReport 11.0 全新大屏模式,打开3D视界,大屏制作更快
  10. 3分钟创建一个游戏类容器应用【华为云分享】
  11. 故宫4天门票已售罄 五一假期大家都去哪儿“看一看”了?
  12. 编译单元为什么只能有一个public类
  13. 硬知识来袭,一文读懂Wi-SUN的前世今生
  14. linux or msys2设置网络代理
  15. 访客登记无需排队-智能访客登记系统-从线上预约到室内导航寻车-为企事业单位提高更便利的人员访问服务
  16. 微信小程序java装修家装系统
  17. 如何在spss结果输出页面显示命令/运行代码
  18. 传美云商系统软件方案详解
  19. 【报错解决】为Blender构建Python模块
  20. 像素、分辨率及PPI各自含义与区别及目前主流手机的分辨率介绍

热门文章

  1. 硬盘的读写原理(图文详解)
  2. Linux常用命令速查手册——嘎嘎管用
  3. JavaScript 实现textarea限制输入字数, 输入框字数实时统计更新,输入框实时字数计算移动端bug解决...
  4. 思考总结:REID实践 罗浩郑哲东 bag of tricks for person reid baseline运行记录
  5. 从零到万的粉丝:抖音的推荐算法到底是怎样的?
  6. 计算机常用软件英文读音,学习英文在线发音的软件有哪些?宝妈推荐的这些超级实用...
  7. 一建报名条件是什么?
  8. MySql基础之面试查询语句
  9. sap采购申请自动转采购订单
  10. android 字符转double,Android String类型转换为float、double和int的工具类方法