群集架构--LVS-DR & Keepalived 部署理论

群集负载均衡搭建–LVS-DR && Keepalived

文章目录

  • 群集负载均衡搭建--LVS-DR && Keepalived
  • 前言
  • 一:LVS-DR工作原理
    • 1.1:DR模式概述
    • 1.2:分析LVS-DR数据包流向
    • 1.3:LVS-DR中存在的ARP问题
    • 1.4:解决上述两个ARP问题的方法
  • 二:keepalived实现原理
    • 2.1:keepalived工具概述
    • 2.2:原理解析
    • 2.3:Keepalievd安装与启动
    • 2.4:配置Keepalievd master服务器
    • 2.5:配置Keepalived slave服务器

前言

一:LVS-DR工作原理

1.1:DR模式概述

  • 负载均衡群集工作模式–直接路由(Direct Routing)

    • 简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络

    • 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

      群集架构--LVS-DR & Keepalived 部署理论_第1张图片

1.2:分析LVS-DR数据包流向

  • 为方便进行原理分析,将 Client与群集机器放在同一网络中,数据包流经的路线为1-2-3-4

群集架构--LVS-DR & Keepalived 部署理论_第2张图片

  • 1.Client向目标VIP发出请求, Director(负载均衡器)接收。此时IP包头及数据帧头信息为:

群集架构--LVS-DR & Keepalived 部署理论_第3张图片

  • 2 .Director根据负载均衡算法选择 Realserver_1,不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer_1的MAC地址,然后在局域网上发送。IP包头及数据帧头信息如下:

群集架构--LVS-DR & Keepalived 部署理论_第4张图片

  • 3.RealServer_1收到这个帧,解封装后发现目标IP与本机匹配( RealServer事先绑定了VIP),于是处理这个报文。随后重新封装报文,发送到局域网。此时IP包头及数据帧头信息为:.

群集架构--LVS-DR & Keepalived 部署理论_第5张图片

  • 4.Client将收到回复报文。 Client认为得到正常的服务,而不会知道是哪一台服务器处理的

    注意:如果跨网段,那么报文通过路由器经由 terne返回给用户

1.3:LVS-DR中存在的ARP问题

  • 在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址

    群集架构--LVS-DR & Keepalived 部署理论_第6张图片

  • 在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱

    当一个ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上的,它们都会接收到ARP广播

    此时只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播

  • 对节点服务器进行处理,使其不响应针对VIP的ARP请求

    使用虚接口lo:0承载ⅥP地址

    设置内核参数 arp_ignore=1:系统只响应目的IP为本地IP的ARP请求

  • RealServe返回报文(源IP是VIP)经路由器转发,在重新封装报文时需要先获取路由器的MAC地址

群集架构--LVS-DR & Keepalived 部署理论_第7张图片

  • 发送ARP请求时, Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口(例如ens33)的IP地址

群集架构--LVS-DR & Keepalived 部署理论_第8张图片

  • 路由器收到ARP请求后,将更新ARP表项
  • 原有的VIP对应 Director的MAC地址会被更新为ⅥP对应RealServer的MAC地址

群集架构--LVS-DR & Keepalived 部署理论_第9张图片

  • 此时新来的请求报文,路由器根据ARP表项,会将该报文转发给RealServer,从而导致 Director的VIP失效

群集架构--LVS-DR & Keepalived 部署理论_第10张图片

群集架构--LVS-DR & Keepalived 部署理论_第11张图片

  • 解决办法

    对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址

1.4:解决上述两个ARP问题的方法

  • 修改/etc/sysctl.conf文件
    • 对节点服务器进行处理,使其不响应针对VIP的ARP请求
    • net.ipv4.conf.lo.arp_ignore = 1
    • net.ipv4.conf.lo.arp_announce = 2
    • 系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
    • net.ipv4.conf.all.arp_ignore = 1
    • net.ipv4.conf.all.arp_announce = 2

二:keepalived实现原理

2.1:keepalived工具概述

  • 专为LVS和HA设计的一款健康检查工具
    • 支持故障自动切换( Failover)
    • 支持节点健康状态检查( Health Checking)
    • 官方网站http://www.keepalived.org

2.2:原理解析

  • Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能
  • VRRP,虚拟路由冗余协议,是针对路由器的一种备份解决方案

群集架构--LVS-DR & Keepalived 部署理论_第12张图片

  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
  • 每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态
  • 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

2.3:Keepalievd安装与启动

  • 在LVS群集环境中应用时,也需用到 lipvsadm管理工具
  • YUM安装 Keepalived
  • 启用 Keepalived服务

2.4:配置Keepalievd master服务器

  • Keepalievd配置目录位于/etc/keepalievd/

  • keepalievd.conf是主配置文件

    • global_defs{…}区段指定全局参数
    • vrrp_instance实例名称{…}区段指定VRRP热备参数
    • 注释文字以“!”符号开头
    • 目录samples/,提供了许多配置样例作为参考
  • 常用配置选项

  • [root@localhost ~]# vim /etc/keepalived/keepalived.conf 
    ! Configuration File for keepalived
     
    global_defs {
           
       ...
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 127.0.0.1     //主调度的IP地址
       smtp_connect_timeout 30
       router_id LVS_DEVEL          //主调度器的名称,唯一性
       vrrp_skip_check_adv_addr    //vrrp协议
       vrrp_strict
       vrrp_garp_interval 0
       vrrp_gna_interval 0
    }
     
    vrrp_instance VI_1 {
           
        state MASTER          //主调度器的热备状态
        interface ens33        //主调度器的网卡名称
        virtual_router_id 51    //组名,主备必须相同
        priority 100            //主调度器的优先级,从调度器的优先级必须比主调度器低
        advert_int 1
        authentication {
                   //主、备热备份认证信息,必须相同
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
               //指定群集的VIP地址
            192.168.100.10
        }
    }
     
    virtual_server 192.168.100.10 80 {
               //虚拟服务器地址、端口
        delay_loop 6    //健康检查的间隔时间
        lb_algo rr        //调度算法,rr轮询
        lb_kind DR       //DR的群集工作模式
        persistence_timeout 50    
        protocol TCP    //应用服务采用的是TCP协议
     
       real_server 192.168.100.100 80 {
             //匹配后面的节点服务器,有多少个服务节点增加多少个函数体
            weight 1    //节点的权重
           # SSL_GET {
               //删除带#号
              #  url {
           
              #    path /
              #    digest ff20ad2481f97b1754ef3e12ecd3a9cc
              #  }
              #  url {
           
              #    path /mrtg/
              #   digest 9b3a0c85a887a256d6939da88aabd8cd
              #  }
              TCP_CHECK {
               //健康检查方式
                connect_port 80    //检查的目的端口
                connect_timeout 3    //连接超时(秒)
                nb_get_retry 3    //重试次数
                delay_before_retry 3    //重试间隔(秒)
            }
        }
    }
    ##删除后续的函数体
    

2.5:配置Keepalived slave服务器

  • Keepalived备份服务器的配置与master的配置有三个选项不同
    • router_id:设为自由名称
    • state:设为BACKUP
    • priority:值低于主服务器
  • 其他选项与master相同

你可能感兴趣的:(企业群集架构,linux,网络,LVS,DR,Keepalived)