• 部署LVS-DR群集


    一、LVS-DR工作原理

    LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的一种工作模式

    • LVS-DR模式,Director Server 作为群集的访问入口,不作为网关使用。
    • 节点Director Server 与Real Server 需要在同一个网络中,返回给客户端的数据不需要经过Director Server。
    • 为了对整个群集的访问,Dreector Server和Real Server都需要配置VIP地址

    1、LVS-DR数据包流向分析

    1、Clinent向目标VIP发出请求,Director(负载均衡器)接收

    • 源ip:客户端ip,目标ip:虚拟ip,源MAC:客户端MAC地址,目标MAC:负载均衡器的MAC地址

    2、Director根据负载均衡算法选择RealServer_1(真实服务器),不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer_1的MAC地址,然后在局域网上发送。

    • 源ip:虚拟ip,目标ip:真实虚拟ip,源MAC:负载均衡器MAC,目标MAC:真实服务器MAC

    3、RealServer_1收到这个帧,解封装后发现目标IP与本机匹配(RealSERVERS事先绑定了VIP),于是处理这个报文,随后重新封装报文,发送到局域网。

    • 源ip:虚拟ip,目标ip:客户机ip,源MAC:真实ens33网卡MAC,目标MAC:客户端MAC
    • 注意:如果跨网段,则报文通过路由器经由internet返回给用户

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

    详细流程分析
    
    客户端通过路由器将访问请求发送到内网当中,需要通过APR将源地址解析为MAC地址进行访问,但是由于内网中DS(负载调度器)和RS(真实服务器)都配置了VIP,他们都可收到APR请求,并返回自己的MAC,这时候客户端的数据不知道往哪个上面发送,那就需要通过在真实服务器上配置  “路由紧固” + “只响应目标为本机ens33网卡信息的请求参数” ,因为DR上配置的是虚拟子接口,可以接收到信息,而RS,配置的是环回地址,无法收到ARP请求,那么这样就只有DS收到请求。收到请求后,客户端通过封装DS的MAC地址,进行二层转发。
    
    DS收到请求后,通过调度算法选择需要转发的RS站点,因为都在局域网内此时转发只是二层的转发,那怎么发给RS站点呢?二层转发是局域MAC地址转发的,通过ARP获得RS的MAC地址,将获得的MAC地址封装为目标MAC地址,进行数据转发。
    
    RS收到请求后,它可以直接请请求返回给客户端,不需要再经过DS,因为,它获取到数据包后,把数据包交个自己的ens33网卡,由ens33网卡将数据包转发出去,ens33进行APR广播,这里为了不修改ARP表的内容,在进行ARP广播,使用的源ip为RS的ens33接口ip。广播得到了客户机的MAC地址,再进行将数据转发,转发时,使用的源ip为:环回ip,源MAC为:ens33MAC,目标地址为:客户机地址,目标MAC为客户机MAC。
    
    客户机收到数据包后,发现数据包的源地址为VIP,并不知道是哪一台服务器处理的,下次再发出请求时,直接根据ARP中的表项将数据再次转发到DS。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    2、DR模式的特点

    ①Director Server 和 Real Server 必须再用一个物理网络。

    ②Real Server:可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接而访问。

    ③Director Server作为群集的访问入口,但不作为网关使用。

    ④所有的请求报文经由Director Server,但回复响应报文不能经过Director Server。

    ⑤Real Server 的网关不允许指向 Director Server IP ,即Real Server发送的数据包不允许经过 Director Server

    ⑥Real Server 上的lo 接口配置VIP 的IP 地址。

    三、部署LVS-DR群集实验

    1、实验准备

    需要5台系统,一台centos用来作为调度服务器,两台centos用来作为后台站点,一台centos用来作为NFS共享服务器,一台wendow用来作为客户端。

    负载调度器: ens33:20.0.0.55 ,ens33:0:20.0.0.100

    Web服务器1: ens33:20.0.0.56 ,lo:0(vip):20.0.0.100

    web服务器2: ens33:20.0.0.57 , lo:0(vip):20.0.0.100

    NFS服务器: 20.0.0.58

    客户端wendows: 20.0.0.60

    2、配置负载均衡服务器(20.0.0.55)

    2.1 修改名称,关闭防火墙

    在这里插入图片描述

    2.2 安装ipvsadm工具,并开启

    yum -y install ipvsadm    #下载ipvsadm管理工具
    
    modprobe ip_vs    #加载ip_vs模块
    cat /proc/net/ip_vs    #查看ip_vs模块
    
    ipvsadm-save > /etc/sysconfig/ipvsadm    #保存策略
    systemctl start ipvsadm     #启动ipvsadm工具
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    2.3 配置虚拟子接口

    cd /etc/sysconfig/network-scripts/     #进入网卡配置目录
    cp -p ifcfg-ens33 ifcfg-ens33:0        #复制虚拟子接口的配置文件
    vim ifcfg-ens33:0       #编辑虚拟字接口内容
    DEVICE=ens33:0
    ONBOOT=yes
    IPADDR=20.0.0.100
    NETMASK=255.255.255.255
    
    ifup ens33:0       #开启虚拟字节
    ifconfig ens33:0   #查看配置是否成功
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    2.4 调整proc响应参数

    由于LVS负载均衡器和各个节点需要共用vip地址,应该关闭Linux内核的重定向响应参数,不充当路由器,这样当DS收到客户端发来的数据包时,就不会立马转发给后台RS服务器,而是转发给自己的虚拟子接口。

    vim /etc/sysctl.conf     #编辑内核proc参数
    net.ipv4.ip_forward = 0      #关闭ip转发
    net.ipv4.conf.all.send_redirects = 0      #关闭所有send重定向
    net.ipv4.conf.default.send_redirects = 0    #关闭默认重定向
    net.ipv4.conf.ens33.send_redirects = 0    #关闭网卡重定向
    
    sysctl -p   #查看内核参数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    2.5 配置负载分配策略

    ipvsadm -C    #清除规则
    ipvsadm -A -t 20.0.0.100:80 -s rr   #创建虚拟主机,指定ip地址,并指定分流模式为轮询
    ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.56:80 -g  
    #添加真实服务器ip地址,并指定负载均衡模式为DR,ip隧道模式为-i,-m为nat模式
    ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.57:80 -g  
    #添加真实服务器ip地址,并指定负载均衡模式为DR,ip隧道模式为-i
    
    ipvsadm   #启动策略
    ipvsadm -ln    #查看节点状态信息
    ipvsadm -Lnc   #监控连接数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    3、配置NFS共享服务器(20.0.0.58)

    3.1 修改名称,关闭防火墙

    hostnamectl set-hostname nfs
    su 或  bash
    
    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    3.2 安装nfs服务和rpcbind服务

    yum  -y install nfs-utils rpcbind    #安装nfs服务和依赖包
     
    systemctl start rpcbind    #启动依赖服务
    systemctl start nfs        #启动nfs服务
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    3.3 创建共享目录

    mkdir  /opt/ydq  /opt/zxc   #创建共享目录
    echo "this is ydq page" > /opt/ydq/index.html     #设置ydq网页内容
    echo "this is zxc page" > /opt/zxc/index.html      #设置zxc网页内容
    
    chmod 777  /opt/ydq  /opt/zxc    #修改opt的权限
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    3.4 设置共享,发布共享

    vim /etc/exports    #编辑共享目录,共享权限
    /opt/ydq 20.0.0.0/24(rw,sync)
    /opt/zxc 20.0.0.0/24(rw,sync)
    
    exportfs -rv     #发布共享
    showmount -e localhost   #查看共享
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    4、配置节点服务器(20.0.0.56、20.0.0.57)

    4.1 修改名称,关闭防火墙

    在这里插入图片描述

    4.2 配置环回ip地址

    此地址仅用作发送web响应数据包的原地址,并不需要监听客户机的访问请求(改由调度器监听并分发),因此使用虚拟接口lo:0 来承载VIP,并为本机添加一条路由记录,并将访问的VIP的数据限制在本地,以免通信紊乱。

    cd /etc/sysconfig/network-scripts/    #进入网卡配置目录
    cp -p ifcfg-lo ifcfg-o:0    #复制环回网卡
    vim ifcfg-lo:0   #修改内容
    DEVICE=lo:0
    ONBOOT=yes
    IPADDR=20.0.0.100      #地址为VIP
    NETMASK=255.255.255.255
    
    ifup ifcfg-lo:0    #启动环回网卡
    ifconfig lo:0    #查看环回网卡
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    4.3 添加vip本地访问路由

    route add -host 20.0.0.100 dev lo:0
    
    或者下面方式,都可实现路由禁锢,下面的为永久添加
    vim /etc/rc.local    #linux在开启启动时,会加载的内容
    /sbin/route add -host 20.0.0.100 dev lo:0
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    4.4 调整内核的ARP响应参数以阻止更新vip的MAC地址,避免冲突

    vim /etc/sysctl.conf
    net.ipv4.conf.all.arp_ignore = 1   #系统只响应目的ip为本地的arp请求
    net.ipv4.conf.all.arp_announce = 2  #系统不使用ip包的源地址来设置arp请求的原地址,而选择发送接口的ip地址。
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.lo.arp_announce = 2
    
    sysctl -p   #刷新
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    4.5 安装httpd服务,nfs服务,rpc服务,进行网络挂载

    yum -y install httpd nfs-utils rpcbind   #下载包
    showmount -e 20.0.0.58   #验证是否查看到共享
    mount.nfs 20.0.0.58:/opt/ydq /var/www/html   #网络挂载
    
    systemctl start rpcbind
    systemctl start nfs
    systemctl start httpd
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

    5、客户端访问

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

    查看负载均衡器,时实监控连接状态
    在这里插入图片描述

  • 相关阅读:
    [最小生成树]Planar graph 2022杭电多校第6场 1010
    正点原子嵌入式linux驱动开发——Linux Regmap驱动
    如何建立风险、内控与合规三位一体的管控体系?
    Python深入分享之对象的属性
    Selenium自动化最佳实践技巧等你来学
    MuLogin浏览器如何在一台设备上安全登录和管理多个LinkedIn账户?
    Jmeter性能测试 —— 压力模式
    Proxy的has拦截与with关键字
    Mac 取消系统更新的红点——强迫症晚期患者
    初步了解android如何锁键
  • 原文地址:https://blog.csdn.net/m0_57515995/article/details/126219245