keepalived的原理、LVS负载均衡之DR模式+KeepAlived双机热备架构【原理和配置】

LVS负载均衡之DR模式+KeepAlived双机热备架构

一、keepalived双机热备

【1】keepalived含义

基于VRRP热备份协议,以软件的方式实现Linux服务器的多机热备份功能。是通过共有的虚拟IP地址(VIP)对外提供服务;每个热备组内只能有一个服务器提供服务,其他服务器处于冗余状态,若当前服务器失效后,则其他处于冗余状态的服务器将接替他的工作(优先级高的),以继续提供服务。

【2】keepalived原理图示

在这里插入图片描述

(1)keepalived的原理

1,至少需要两台服务器,其中一台为master始终提供服务,另外一台作为backup始终处于空闲状态,只有在主服务器挂掉的时候他就来帮忙了,这是典型的双击热备。2,能根据需求判断服务是否可用,在不可用的时候要即使切换。

(2)keepalived优缺点

1、优点:数据同步非常简单,不像负载均衡对数据一致性要求非常高,实现起来相对复杂维护也颇为不便,双机热备用rsync就可以实现了操作和维护非常简单。2、缺点:服务器有点浪费,始终有一台处于空闲状态。

【3】Keepalived双机热备的应用场景

(1)网站流量不高,压力不大,但是对服务器的可靠性要求极其高,例如实时在线OA系统,政府部门网站系统,医院实时报医系统,公安局在线报案系统,股市后台网站系统等等,他们的压力不是很大,但是对可靠性要求是非常高的。
(2)有钱没地方花的,典型的政府企业,公办学校等等。

二、LVS负载均衡之DR模式+KeepAlived双机热备架构配置

【1】lvs负载均衡之DR模式原理图示

在这里插入图片描述

【2】lvs负载均衡之DR模式转发过程

1)client发送请求到vip,real-server配置限制对vip应答arp,而lvs会对vip响应arp,因此client将请求发到LVS。
2)LVS机器收到发往vip的报文后,根据目的IP和目的port匹配ipvs规则,将报文目的mac改为real server的mac,同时将源mac改为LVS的mac后,发送到real server。
3)real server收到之后,mac/IP都是本机的,就将报文交由系统处理。
4)回程报文因real server收到的报文源IP就是client IP,real server直接将请求回给client。如果client和real server是同一个网段,响应报文直接通过二层透传发送给client,报文目的mac即为client mac;如果client和real server不是同一个网段,响应报文先发送到gateway,再走三层转发返回client。

【3】lvs负载均衡之DR+keepalived双机热备原理图示

在这里插入图片描述
在LVS负载均衡之DR的基础上增加双机热备解决LVS单点故障。

【4】lvs负载均衡之DR+keepalived双机热备配置
1、项目需求:四台节点+一台客户机

【1-2】DR负载均衡调度器两台,一主一备
192.168.60.80
192.168.60.90
【3-4】web网站服务器两台
192.168.60.50
192.168.60.70
【5】客户机作为访问虚拟地址
192.168.60.250

2、架构部署过程

在部署之前关闭所有服务器的防火防护

systemctl stop firewalld
setenforce 0
【1】DR负载均衡器配置(两台一模一样之配置)
yum install -y keepalived ipvsadm 

vim /etc/sysctl.conf
#开启路由功能
net.ipv4.ip_forward=1   
#proc响应关闭重定向功能
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects=0

sysctl -p   //生效命令

添加虚拟网卡

cp ifcfg-ens33 ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.60.250
NETMASK=255.255.255.0

ifup ens33:0

配置DR启动脚本

cd /etc/init.d/
——————————————————————————————————————————————————
vim dr.sh
#!/bin/bash
GW=192.168.60.1
VIP=192.168.60.250
WEB1IP=192.168.60.50
WEB2IP=192.168.60.70
case "$1" in
start)
  /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm
  systemctl start ipvsadm
  /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.0 broadcast $VIP up
  /sbin/route add -host $VIP dev ens33:0
  /sbin/ipvsadm -A -t $VIP:80 -s rr
  /sbin/ipvsadm -a -t $VIP:80 -r $WEB1IP:80 -g
  /sbin/ipvsadm -a -t $VIP:80 -r $WEB2IP:80 -g
  echo "ipvsadm starting .................[OK]"
  ;;
stop)
  /sbin/ipvsadm -C
  systemctl stop ipvsadm
  ifconfig ens33:0 down
  route delete $VIP 
  echo "ipvsadm stoped ............[OK]"
  ;;
status)
  if [ ! -e /var/lock/subsys/ipvsadm ];then
    echo "ipvsadm stoped"
    exit 1
  else
    echo "ipvsadm running"
  fi
  ;;
*)
  echo "Usage: $0 {start|stop|status}"
  exit 1
esac
exit 0
————————————————————————————————————————————————
chmod +x /etc/init.d/dr.sh
ifconfig   //查看IP地址是否存在,如果不存在使用
systemctl start NetworkManager
//开启成功之后关闭NetworkManager功能
systemctl stop NetworkManager
systemctl restart network
service dr.sh start
【2】Apache服务器配置(两台都一样,不同的会指出)
yum install -y httpd

cd /etc/sysconfig/network-scripts/
cp -p ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.60.10
NETMASK=255.255.255.0
ONBOOT=yes

cd /var/www/html
vim index.html
<h1>this is accp web2</h1>
在另一台web节点上面为了验证效果设置不同的网页
cd /var/www/html
vim index.html
<h1>this is kgc web</h1>

web节点arp过滤脚本配置

————————————————————————————————————————————————
vim /etc/init.d/web.sh
#!/bin/bash
VIP=192.168.60.250
case "$1" in
start)
  ifconfig lo:0 $VIP netmask 255.255.255.0 broadcast $VIP
  /sbin/route add -host $VIP dev lo:0
  echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
  echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
  echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
  echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
  sysctl -p > /dev/null 2>&1
  echo "realserver start ok"
  ;;
stop)
  ifconfig lo:0 down
  route delete $VIP /dev/null 2>&1
  echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
  echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
  echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
  echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
  echo "realserver stop ok"
  ;;
*)
  echo "Usage:$0 {start|stop}"
  exit 1
esac
exit 0
————————————————————————————————————————————————————————
chmod +x /etc/init.d/web/sh
ifconfig  //查看IP地址是否存在,如果不存在使用
systemctl start NetworkManager
//开启成功之后关闭NetworkManager功能
systemctl stop NetworkManager
systemctl restart network
service web.sh start
systemctl start httpd
【3】在调度服务器上面部署keepalived部署
vim /etc/keepalived/keepalived.conf

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
#指向自己本地
   smtp_server 127.0.0.1    
   smtp_connect_timeout 30
#指定lvs名称,主备不相同
   router_id LVS_01
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
#服务器类型master,如果是备份服务器则是BACKUP
    state MASTER
#接口网卡名称
    interface ens33
#组号,同一组组号相同(主备组号相同)
    virtual_router_id 51
#优先级越大越优先,备份服务器的优先级要小于主服务器
    priority 100
    advert_int 1
#认证,不建议修改,keepalived服务器所有都要相同
    authentication {
        auth_type PASS
        auth_pass 1111
    }
#虚拟IP地址
    virtual_ipaddress {
       192.168.60.250
    }
}

virtual_server 192.168.60.250 80 {
    delay_loop 6
#lvs算法--轮询
    lb_algo rr
#lvs模式DR
    lb_kind DR
    persistence_timeout 50
    protocol TCP
#web1服务器配置信息
    real_server 192.168.60.50 80 {
        weight 1
#tcp检查,健康自检
       TCP_CHECK {
            connect_timeout 3
#添加连接端口
            connect_port 80
            nb_get_retry 3
            delay_before_retry 3
        }
      }
#web2服务器的配置信息
        real_server 192.168.60.50 80 {
        weight 1
#tcp检查,健康自检
        TCP_CHECK {
            connect_timeout 3
#添加连接端口
            connect_port 80
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
————————————————————————
systemctl start keepalived

由于主备服务器的配置文件相似所以可以复制本机的配置文件到备份服务器上面去

scp /etc/keepalived/keepalived.conf root@192.168.60.90:/etc/keepalived/keepalived.conf
【4】客户机验证

在lvs服务器上面重启网卡

systemctl restart network

测试与漂移地址的连通性

ping 192.168.60.250 -t  //时间有点小长

多起几次网卡或者启用网络管理工具

systemctl start NetManager

在浏览器中访问web节点,192.168.60.250,刷新查看效果。
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值