lvs负载均衡+keepalive高可用

一、实验环境:

  • 母盘为redhat7.6的操作系统,快照出四台虚拟机
    在这里插入图片描述
  • 给真机和虚拟机都加上地址解析,如上图所示
  • 通过真机的httpd服务给虚拟机搭建7.6的网络软件仓库
  • 关闭防火墙,selinux状态设为disabled

二、lvs:

LVS
LVS的基本专业术语:

项目Value
DSDirector Server。指的是前端负载均衡器节点
RSReal Server。后端真实的工作服务器
VIP向外部直接面向用户请求,作为用户请求的目标的IP地址
DIPDirector Server IP,主要用于和内部主机通讯的IP地址
RIPReal Server IP,后端服务器的IP地址
CIPClient IP,访问客户端的IP地址

lvs四种工作模式:

项目Value
DR直接路由模式
TUN隧道模式
NAT路由转发模式
fullnat模式

三、lvs负载均衡:

本次实验使用lvs的DR工作模式和轮询调度算法实现lvs的负载均衡:
DR工作模式
当用户访问lvs调度器(vs)上的vip时,是通过修改请求报文的目标mac地址,在数据链路层通过调度算法将请求转发给真实服务器(rs),而真实服务器响应后的处理结果直接返回给客户端用户;所以说,vs 和rs 要都有vip,只是用arptables 处理了rs在数据链路层arp转发。由于必须处于同一vlan下,受到了局限性,但是其工作效率很高。
client --> vs --> rs --> client
DR的不足:

  • LVS - RS 间必须在同一个VLAN
  • RS上绑定VIP,风险太大

(1)安装lvs管理器

yum install -y ipvsadm

在这里插入图片描述
(2)在server1 上绑定VIP地址

ip addr add 172.25.4.100/24 dev eth0

(3)添加调度算法、虚拟服务:

ipvsadm -A -t 172.25.4.100:80 -s rr       # 添加虚拟服务、rr轮询调度算法
ipvsadm -a -t 172.25.4.100:80 -r 172.25.4.2:80 -g    #将虚拟服务关联到真实服务上
ipvsadm -a -t 172.25.4.100:80 -r 172.25.4.3:80 -g

在这里插入图片描述
(4)在server2,server3上配置http服务编写发布内容,并绑定VIP地址:

[root@server2 ~]# yum install -y httpd
[root@server2 ~]# systemctl enable --now httpd.service
[root@server2 ~]# echo server2 > /var/www/html/index.html
[root@server2 ~]# ip addr add 172.25.4.100/32 dev eth0

[root@server3 ~]#  yum install -y httpd
[root@server3 ~]#  systemctl enable --now httpd.service
[root@server3 ~]# echo server3 > /var/www/html/index.html
[root@server3 ~]#  ip addr add 172.25.4.100/32 dev eth0

(5)在server2、server3上安装部署arp火墙访问规则:

[root@server2 ~]# yum install arptables -y
[root@server2 ~]# systemctl start arptables
[root@server2 ~]# arptables -A INPUT -d 172.25.4.100 -j DROP
[root@server2 ~]# arptables -A OUTPUT -s 172.25.4.100 -j mangle --mangle-ip-s 172.25.4.2
[root@server2 ~]# arptables -nL

[root@server3 ~]# yum install arptables -y
[root@server3 ~]# systemctl start arptables
[root@server3 ~]# arptables -A INPUT -d 172.25.4.100 -j DROP
[root@server3 ~]# arptables -A OUTPUT -s 172.25.4.100 -j mangle --mangle-ip-s 172.25.4.3
[root@server3 ~]#  arptables -nL

在这里插入图片描述

在这里插入图片描述
(6)在真机上测试:

[root@foundation40 ~]# for i in {1..10}; do curl 172.25.4.100; done

在这里插入图片描述
成功实现负载均衡。

健康检测 – 某台RealServer down了,怎么办?
LVS冗余 – LVS本身down了,怎么办?
为了解决这些问题,我们选择了keepalive

四、keepalive+lvs实现高可用:

利用keepalive中的vrrp协议实现高可用,TCP_CHECK实现对后端rs进行健康检测
实验会用到第四台虚拟机:
(1)在server1、server4上安装keepalive:

[root@server1 ~]# yum install keepalived -y
[root@server4 ~]# yum install   ipvsadm keepalived -y

(2)修改server1和server4的配置文件:

[root@server1 ~]# vim /etc/keepalived/keepalived.conf #下文是完整的server1的keepalive的配置文件

! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 55
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.4.100
    }
}

virtual_server 172.25.4.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 172.25.4.2 80 {
        weight 1
        TCP_CHECK{
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
   real_server 172.25.4.3 80 {
        weight 1
        TCP_CHECK{
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

[root@server1 ~]# scp /etc/keepalived/keepalived.conf  server4:/etc/keepalived/keepalived.conf

[root@server4 ~]# vim /etc/keepalived/keepalived.conf

server4的配置文件只需要修改状态和优先级:
在这里插入图片描述

(3)开启服务:

[root@server1 ~]# systemctl start keepalived.service

[root@server4 ~]# systemctl start keepalived.service

(4)测试结果:

当关闭主用机server1的keepalive:

[root@server1 ~]# systemctl stop keepalived.service 

客户端不受任何影响:
在这里插入图片描述
vip转移,策略转移:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重新开启server1的keepalive后:

[root@server1 ~]# systemctl start keepalived.service

策略和vip都会自己切回来:
在这里插入图片描述
同样客户端的负载均衡不受影响,高可用完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值