集群 keepalived+LVS

LVS遗留问题:

  • LVS无法做到后端真实服务器的健康检查,就会导致其中一台挂了,ipvs规则不会自动删除,导致用户请求还是会转到已经失效的服务器上面

解决方案:

  1. 编写shell脚本检测服务状态,进行添加和删除ipvs规则
  2. keepalived高可用自带LVS模块,可以做到基于TCP、UDP协议实现ipvs规则自动添加和删除

keepalived

  • vrrp协议以守护进程方式的实现
  • 能够根据配置文件自动生成ipvs规则
  • 对各RS做健康状态检测

vrrp虚拟路由冗余协议

通过把几台服务器联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。
在这里插入图片描述

  • VRID:虚拟路由器的标识,由多台服务器组成的虚拟路由器,配置需要相同
  • 虚拟MAC地址:虚拟路由器回应ARP请求时,使用虚拟MAC地址,而不是接口的真实MAC地址
  • 虚拟IP地址:进行多台服务器漂移的地址,负责对外
  • Master路由器(Virtual Router Master):承担转发报文任务的VRRP设备
  • Backup路由器(Virtual Router Backup):一组没有承担转发任务的VRRP设备,当Master设备出现故障时,它们将通过竞选成为新的Master设备
  • 优先级:竞选的条件(高的优先)
  • 通过真实网卡地址发送组播地址(224.0.0.18)进行主备心跳检测

核心组件:

  • vrrp stack
    • checkers(子进程实现健康检查)
    • ipvs wrapper --> ipvs(子进程实现ipvs规则)

最基本的配置文件组成

  • Global 全局配置
  • VRRPD协议实例配置
  • LVS虚拟服务器规则配置

实验基于LVS-NAT模式

拓扑
在这里插入图片描述

在这里插入图片描述

1、需要配置2个VRRPD实例,一个是外网VIP地址,一个是内网的VIP地址
2、主备切换是建立在2个实例需要属于一个同步的组(其中一个故障,服务就无法访问,就要触发主备切换)
3、如果还有多余网卡会影响到服务正常,需要添加端口检测来触发主备切换

1、安装配置LVS-NAT模式

可以根据前面文章搭建,注意网关这次要改成内网的VIP地址

2、安装配置keepalived

yum install -y keepalived
vi /etc/keepalived/keepalived.conf

global_defs {
   router_id LVS1  
}
vrrp_sync_group VG1 {
    group {
        VI_1   #vrrp实例名(外网)
        VI_2   #vrrp实例名(内网)
    }
}
vrrp_instance VI_1 {
    state MASTER  #主设备,备设备改成BACKUP
    interface ens37   #监听端口,也就是会定期发生arp组播进行检测
    virtual_router_id 51   #虚拟路由器的标识,用来区分多个instance的VRRP组播,主备要相同(同网段多实例不能相同)
    priority 100    #优先级用于选举MASTER(1-255)越大优先越高,备设备小于100
    advert_int 1    #选举检测时间,健康检测
    authentication {  #认证
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {    #VIP地址,可以写多个(格式可以查看参考)
        192.168.32.240     #外网 
    }
}
vrrp_instance VI_2 {    #添加内网的VIP
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.26.240    #内网
    }
}
virtual_server 192.168.32.240 80 {    #设置LVS的虚拟服务,这边设置就是ipvsadm -A -t 192.168.32.128:80 -s rr)
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    protocol TCP

    real_server 192.168.26.141 80 {  #设置真实服务,就是设置ipvsadm -a -t 192.168.32.128:80 -r 192.168.26.141:80 -m)
         weight 1
         TCP_CHECK {    #TCP检测机制
         connect_port 80
         connect_timeout 3
         retry 2
         delay_before_retry 4
      }
}
    real_server 192.168.26.142 8080 {
         weight 1
         TCP_CHECK {  
         connect_port 8080
         connect_timeout 3
         retry 2
         delay_before_retry 4
        }
    }
}

router_id:命名主机名,类似hostname
vrrp_sync_group:实现2个vrrp实例中只要一个发生切换,就会同步切换,不然会导致服务无法访问(外网和内网是依赖关系)

实验基于LVS-DR模式

在这里插入图片描述

对比NAT模式要简单很多,只需要一个vrrp实例即可,也涉及不到vrrp组

1、安装配置LVS-NAT模式

可以根据前面文章搭建,浮动IP就不要自己配置了

2、安装配置keepalived

yum install -y keepalived
vi /etc/keepalived/keepalived.conf
global_defs {
   router_id LVS1  
}
vrrp_instance VI_1 {
    state MASTER  #主设备,备设备改成BACKUP
    interface ens33   #监听端口,也就是会定期发生arp组播进行检测
    virtual_router_id 51   #虚拟路由器的标识,用来区分多个instance的VRRP组播,主备要相同(同网段多实例不能相同)
    priority 100    #优先级用于选举MASTER(1-255)越大优先越高,备设备小于100
    advert_int 1    #选举检测时间,健康检测
    authentication {  #认证
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {    #VIP地址,可以写多个(格式可以查看参考)
        192.168.26.240     #内网
    }
}

virtual_server 192.168.26.240 80 {    #设置LVS的虚拟服务,这边设置就是ipvsadm -A -t 192.168.32.128:80 -s rr)
    delay_loop 6
    lb_algo rr
    lb_kind DR
    protocol TCP

    real_server 192.168.26.141 80 {  #设置真实服务,就是设置ipvsadm -a -t 192.168.32.128:80 -r 192.168.26.141:80 -g)
         weight 1
         TCP_CHECK {
         connect_port 80
         connect_timeout 3
         retry 2
         delay_before_retry 4
      }
}
    real_server 192.168.26.142 80 {
         weight 1
         TCP_CHECK {   #TCP检测机制
         connect_port 80
         connect_timeout 3
         retry 2
         delay_before_retry 4
        }
    }
}

日志文件

  • /var/log/messages

参考:https://keepalived.org/manpage.html
参考:https://keepalived.readthedocs.io/en/stable/configuration_synopsis.html#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值