lvs负载均衡集群——DR+keepalived

一、DR特性

1、Director Server和Real Server必须在同一个物理网络中。
2、Real Server可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接访问。
3、Director Server作为群集的访问入口,但不作为网关使用。
所有的请求报文经由Director Server,但回复响应报文不能经过Director Server。
4、Real Server的网关不允许指向Director Server IP,即Real Server发送的数据包不允许经过Director Server。
5、Real Server上的l0接口配置VIP的IP地址。

二、Keepalived

一、概述

1、Keepalived支持故障自动切换(Failover)
2、Keepalived支持节点健康状态检查(Health Checking)
3、判断LVS负载调度器、节点服务器的可用性,当master主机出现故障及时切换到backup节点保证业务正常,当master故障主机恢复后将其重新加入群集并且业务重新切换回master节点(优先级)。

二、实现原理剖析

1、keepalived采用VRRP热备份协议实现Linux 服务器的多机热备功能。
2、VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案。
3、由多台路由器组成一个热备份组,通过共用的虚拟IP地址对外提供服务。
4、每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态。
5、若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务。

二、实例

实例配置
lvs1:ens33:192.168.238.150 
	ens33:0192.168.238.20
lvs2:ens33:192.168.238.133
	ens33:0192.168.238.20
web1:ens33:192.168.238.100
	lo:0192.168.238.20
web2:ens33:192.168.238.99
	lo:0192.168.238.20
client:192.168.238.60

lvs服务器(主/备)

[root@localhost ~]# hostnamectl set-hostname lvs1
[root@localhost ~]# su
[root@lvs1 ~]# ntpdate ntp.aliyun.com
[root@lvs1 ~]# yum -y install ipvsadm keepalived
[root@lvs1 ~]# modprobe ip_vs 
[root@lvs1 ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

配置lvs服务器虚拟网卡

[root@lvs1 ~]# cd /etc/sysconfig/network-scripts/
[root@lvs1 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0
[root@lvs1 network-scripts]# vim ifcfg-ens33:0

在这里插入图片描述

[root@lvs1 network-scripts]# ifup ens33:0 #开启虚拟网卡
ps:lvs从服务器无法在使用ifup开启,可以使用systemctl restart network重启网卡
[root@lvs1 network-scripts]# ifconfig ens33:0 #查看ens33:0网卡信息
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.238.20  netmask 255.255.255.255  broadcast 192.168.238.20
        ether 00:0c:29:88:a2:0a  txqueuelen 1000  (Ethernet)
[root@lvs1 network-scripts]# vim /etc/sysctl.conf #调整内核参数
net.ipv4.ip_forward = 0 #关闭路由转发
net.ipv4.conf.all.send_redirects = 0 # 关闭所有重定向
net.ipv4.conf.default.send_redirects = 0 #关闭默认重定向
net.ipv4.conf.ens33.send_redirects = 0 #关闭ens33网卡重定向

在这里插入图片描述

[root@lvs1 network-scripts]# sysctl -p #刷新内核文件
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@lvs1 network-scripts]# ipvsadm-save > /etc/sysconfig/ipvsadm #启动负载均衡策略
[root@lvs1 network-scripts]# systemctl start ipvsadm #开启服务
[root@lvs1 network-scripts]# cd /opt
[root@lvs1 opt]# vim dr.sh #配置负载均衡分配策略

在这里插入图片描述

[root@lvs1 opt]# bash dr.sh #执行策略脚本
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  lvs1:http rr
  -> 192.168.238.99:http          Route   1      0          0         
  -> 192.168.238.100:http         Route   1      0          0

配置keepalive

[root@lvs1 opt]# yum install -y keepalived
[root@lvs1 opt]# cd /etc/keepalived/
[root@lvs1 keepalived]# vim keepalived.conf
global_defs {             #定义全局参数
      router_id lvs1           #热备组内的设备名称不能一致,备设为lvs2
}
vrrp_instance vi_1 {       #定义VRRP热备实例参数
      state MASTER         #指定热备状态,主为master,备为backup
      interface ens33      #指定承载vip地址的物理接口
      virtual_router_id 51 #指定虚拟路由器的ID号,每个热备组保持一致
      priority 110                 #指定优先级,数值越大越优先,备设为100
      advert_int 1
      authentication {
           auth_type PASS
           auth_pass 6666
 }
virtual_ipaddress {        #指定集群VIP地址
      192.168.238.20
}     
}     
#指定虚拟服务器地址vip,端口,定义虚拟服务器和web服务器池参数
virtual_server 192.168.238.20 80 {
      lb_algo rr                #指定调度算法,轮询(rr)
      lb_kind DR                                #指定集群工作模式,直接路由DR
      persistence_timeout 6             #健康检查的间隔时间
      protocol TCP                              #应用服务采用的是TCP协议
#指定第一个web节点的地址,端口                  
real_server 192.168.238.100 80 {                
      weight 1                                  #节点权重
      TCP_CHECK {                               
          connect_port 80               #添加检查的目标端口
          connect_timeout 3             #添加连接超时
          nb_get_retry 3                #添加重试次数
          delay_before_retry 3  #添加重试间隔
   }
}
#指定第二个web节点的地址,端口
real_server 192.168.238.99 80 {
      weight 1
      TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
   }
}
}
[root@lvs1 keepalived]# systemctl start keepalived

web服务器(两台web服务器)

配合web服务器lo:0网卡信息

[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 network-scripts]# cp -p ifcfg-lo ifcfg-lo:0
[root@web1 network-scripts]# vim ifcfg-lo:0

在这里插入图片描述

[root@web1 network-scripts]# ifup lo:0 #启动网卡
[root@web1 network-scripts]# ifconfig lo:0 #查看网卡信息
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.238.20  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)

[root@web1 network-scripts]# route add -host 192.168.238.20 dev lo:0 #路由禁锢,将192.168.238.20禁锢在本地
[root@web1 network-scripts]# route -n #查看路由,查看路由禁锢是否设置成功
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.238.2   0.0.0.0         UG    0      0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.238.0   0.0.0.0         255.255.255.0   U     0      0        0 ens33
192.168.238.20  0.0.0.0         255.255.255.255 UH    0      0        0 lo
ps:永久禁锢方式
vim /etc/rc.local #路由配置文件
在文件最后插入一下禁锢路由的代码
/sbin/route add -host 192.168.238.20 dev lo:0
[root@web1 network-scripts]# yum install -y httpd #安装Apache服务
[root@web1 network-scripts]# vim /etc/sysctl.conf #调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免冲突

在这里插入图片描述

[root@web2 network-scripts]# sysctl -p #刷新生效
[root@web1 network-scripts]# systemctl start httpd
[root@web1 network-scripts]# vim /var/www/html/index.html

在这里插入图片描述
lvs1服务器

[root@lvs1 keepalived]# watch -n 1 ipvsadm -Lnc #实时查看节点状态

在这里插入图片描述

client访问192.168.238.20
在这里插入图片描述
在这里插入图片描述

模拟主lvs服务器宕机

[root@lvs1 keepalived]# ip a

在这里插入图片描述

[root@lvs1 keepalived]# systemctl stop keepalived
[root@lvs1 keepalived]# ip a

在这里插入图片描述

[root@lvs2 keepalived]# ip a

在这里插入图片描述
client访问192.168.238.20,任可以继续访问,如下图:
在这里插入图片描述
在这里插入图片描述
小结:
1、lvs:四层的负载均衡策略,使用于中、大型环境。
2、三种模式:①nat模式②tun模式③dr模式
3、算法:①轮询②加权轮询③最小连接④加权最小连接
4、lvs和keepalive实现备份、冗余、健康检查、故障切换等功能

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值