零基础新手小白快速了解掌握服务集群与自动化运维(十六)集群部署模块——LVS-DR&TUN模式配置

LVS-DR模式配置

  1. 通过负载均衡器配置:将负载均衡器的IP地址设置为Web节点的虚拟IP(VIP)地址。这样,客户端的请求将发送到负载均衡器的VIP地址。

  2. 客户端请求到达负载均衡器:当客户端发送请求到负载均衡器的VIP地址时,负载均衡器会接收到请求。

  3. 负载均衡器将请求转发到后端Web节点:负载均衡器将请求转发到其中一个后端Web节点。它通过修改目标IP地址为相应的Web节点的IP地址,并修改源IP地址为负载均衡器自身的IP地址,然后将请求发送到相应的Web节点。

  4. Web节点响应请求:Web节点接收到来自负载均衡器的请求后,根据请求进行处理,并生成响应。

  5. Web节点将响应地址重写:在发送响应之前,Web节点将响应的源IP地址设置为负载均衡器的VIP地址,这样响应将会返回到负载均衡器。

  6. 负载均衡器将响应发送回客户端:负载均衡器收到来自Web节点的响应后,将响应发回给客户端。客户端认为响应来自负载均衡器的VIP地址。

通过LVS DR模式,Web节点之间的通信是通过负载均衡器进行转发与地址重写实现的,从而实现了负载均衡和高可用性。

1、负载调度器配置

调整ARP参数

复制代码
 vim /etc/sysctl.conf
    net.ipv4.conf.all.send_redirects = 0 
    net.ipv4.conf.default.send_redirects= 0
    net.ipv4.conf.ens33.send_redirects = 0
    sysctl -p

配置虚拟IP地址

复制代码
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0

安装ipvsadm

复制代码
   yum  install -y ipvsadm

加载ip_vs模块

复制代码
    modprobe ip_vs
    lsmod |grep ip_vs

启动ipvsadm服务

复制代码
   touch /etc/sysconfig/ipvsadm
    systemctl enable ipvsadm

配置负载分配策略

复制代码
   ipvsadm -A -t 192.168.115.110:80 -s rr
    ipvsadm -a -t 192.168.115.110:80 -r 192.168.115.112:80 -g
    ipvsadm -a -t 192.168.115.110:80 -r 192.168.115.113:80 -g

保存策略

复制代码
  ipvsadm-save > /etc/sysconfig/ipvsadm

2、web节点配置

调整ARP参数

作用:防止VIP在同一网络产生IP地址冲突

复制代码
    vim /etc/sysctl.conf
    net.ipv4.conf.all.arp_ignore=1 
    net.ipv4.conf.all.arp_announce=2 
    net.ipv4.conf.default.arp_ignore=1 
    net.ipv4.conf.default.arp_announce = 2 
    net.ipv4.conf.lo.arp_ignore = 1 
    net.ipv4.conf.lo.arp_announce=2
    
    sysctl -p

内核参数详解

  • "net.ipv4.conf.all.arp_ignore=1": 此设置指示系统不应对分配给系统的任何IP地址的ARP请求作出响应。

  • "net.ipv4.conf.all.arp_announce=2": 此设置指示系统应在其生成的ARP请求中将自己的IP地址作为源地址进行广播。

  • "net.ipv4.conf.default.arp_ignore=1": 此设置类似于第一个设置,但仅适用于默认网络接口。

  • "net.ipv4.conf.default.arp_announce=2": 此设置类似于第二个设置,但仅适用于默认网络接口。

  • "net.ipv4.conf.lo.arp_ignore=1": 此设置指示系统不应对环回接口(lo)分配的任何IP地址的ARP请求作出响应。

  • "net.ipv4.conf.lo.arp_announce=2": 此设置指示系统应在环回接口(lo)生成的ARP请求中广播其自己的IP地址作为源地址。

  1. net.ipv4.conf.all.arp_ignore:将其设置为1,表示Web节点将忽略针对本地IP地址的ARP请求。这样可以防止Web节点响应其他节点的ARP请求,避免网络混乱。

  2. net.ipv4.conf.all.arp_announce:将其设置为2,表示Web节点将使用自己的IP地址作为发送ARP请求时的源地址。这样可以确保响应的ARP请求返回到负载均衡器,而不是被路由丢弃。

  3. net.ipv4.conf.default.arp_ignore和net.ipv4.conf.default.arp_announce:类似于前两个参数,但仅适用于默认网络接口。

  4. net.ipv4.conf.lo.arp_ignore和net.ipv4.conf.lo.arp_announce:类似于前两个参数,但仅适用于环回接口(lo)。在DR模式下,为了实现返回流量的负载均衡,环回接口也需要进行相应的配置。

这些内核参数的配置可以确保Web节点正确地处理与负载均衡器之间的通信和ARP请求。通过使用这些参数,Web节点可以正确地响应和转发来自负载均衡器的请求,并确保返回流量经过负载均衡器,从而实现了负载均衡和高可用性。

配置虚拟IP地址

复制代码
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.115.110
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0

ifup lo:0  #CentOS7
systemctl stop NetworkManager
systemctl start NetworkManager

添加回环路由

复制代码
route add -host 192.168.115.110/32 dev lo:0

安装httpd

复制代码
yum install -y httpd

3、测试

复制代码
curl 192.168.115.110

TUN模式配置

一、实验环境

主机名称(Hostname) IP 地址(IP Address) 设备角色(Role) 关键补充信息
lvs-tun 192.168.100.100 LVS 调度器 虚拟 IP(VIP)为 192.168.100.101,负责分发客户端请求
web1 192.168.100.1 后端 Web 服务器 接收调度器转发的请求,提供 Web 服务
web2 192.168.100.2 后端 Web 服务器 与 web1 形成负载分担,提升服务可用性与并发能力
client 192.168.100.3 客户端 发起 Web 服务请求的终端设备

二、搭建lvs调度器的TUN模式

1、lvs-tun调度器配置

复制代码
 #清除DR模式的策略
    ipvsadm -C 
    #查看策略
    ipvsadm -L    
    [root@lvs-tun ~]# ipvsadm -C
    [root@lvs-tun ~]# ipvsadm -Ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    #加载隧道模块 
    [root@lvs-tun ~]# modprobe ipip 
    [root@lvs-tun ~]#  ip a 
    #添加ip临时添加
    [root@lvs-tun ~]# ip addr add 192.168.100.101/24 dev tunl0
    #使网卡生效
    [root@lvs-tun ~]# ip link set up tunl0  
    #开启路由转发功能
    [root@lvs-tun ~]# cat /etc/sysctl.conf
    net.ipv4.ip_forward = 1
    [root@lvs-tun ~]# sysctl -p
    ###删除tunl0路由
    [root@lvs-tun ~]# ip route del 192.168.100.0/24 dev tunl0

在隧道模式里面添加策略

复制代码
  #设置轮询调度
    [root@lvs-tun ~]# ipvsadm -A -t 192.168.100.101:80 -s rr 
    #-i表示隧道模式,轮询web服务器
    [root@lvs-tun ~]# ipvsadm -a -t 192.168.100.101:80 -r 192.168.100.1:80 -i
    [root@lvs-tun ~]# ipvsadm -a -t 192.168.100.101:80 -r 192.168.100.2:80 -i
    #保存策略
    [root@lvs-tun ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
    #查看策略文件
    [root@lvs-tun ~]# cat /etc/sysonfig/ipvsadm

2、web服务器配置

复制代码
    [root@web1 ~]# vim /etc/sysctl.conf
    net.ipv4.conf.all.arp_ignore=1 
    net.ipv4.conf.all.arp_announce=2 
    [root@web1 ~]# sysctl -p
    #加载隧道模块 
    [root@web1 ~]# modprobe ipip 
    [root@web1 ~]# ip a 
    #添加ip临时添加
    [root@web1 ~]# ip addr add 192.168.100.101/24 dev tunl0  
    #网卡生效
    [root@web1 ~]# ip link set up tunl0  
    ###删除tunl0路由
    [root@web1 ~]# ip route del 192.168.100.0/24 dev tunl0

3、测试

4、抓包验证

  1. 调度器抓包

    复制代码
     tcpdump -i any -nn
  1. 真实web服务抓包

    复制代码
     tcpdump -i tunl0 -nn

三、注意

在web1和web2上面分别修改反向过滤规则,防止丢包 【不是绝对必须,但强烈建议】

  • 在 LVS - TUN 模式下,通常需要将反向路径过滤设置为0或2,以防止丢包。因为真实服务器从隧道接口接收请求,但响应数据包是通过物理接口发送回客户端的,严格的反向路径过滤(1)会认为这是非法的数据包而丢弃。

  • 系统会对流入的数据包进行反向路径校验,入包的数据是100,如果出包的数据不是100 ;这个数据就会被丢弃,所以我们要消除反向过滤的影响 。

  • 由于隧道模式实现的是不同网段的主机进行通信,如果信息要从服务端返回到客户端时 ,假设客户端和服务端不在同一个网段,数据根本出不去,所以我们需要关闭反向参数检验 。

rp_file参数用于控制系统是否开启对数据包源地址的校验,有三个值,含义分别如下:

  • 0:表示不开启源地址校验

  • 1:开启严格的反向路径校验,对每个进来的数据包,校验其反向路径是否是最佳路径,如果反向路径不是最佳路径,则直接丢弃该数据包

  • 2:开启松散的反向路径校验,对每个进来的数据包,校验其源地址是否可达,即反向路径是否能通(通过任意网口),如果反向路径不通,则直接丢弃该数据包

    cat /etc/sysctl.conf

    net.ipv4.conf.all.rp_filter=0
    net.ipv4.conf.default.rp_filter=0
    net.ipv4.conf.eth0.rp_filter=0
    net.ipv4.conf.tunl0.rp_filter=0
    sysctl -p
    sysctl -w net.ipv4.conf.all.rp_filter=0
    sysctl -w net.ipv4.conf.default.rp_filter=0
    sysctl -w net.ipv4.conf.eth0.rp_filter=0
    sysctl -w net.ipv4.conf.tunl0.rp_filter=0
    sysctl -a | grep rp_filter

相关推荐
志栋智能5 分钟前
当巡检遇上超自动化:一场运维质量的系统性升级
运维·服务器·网络·数据库·人工智能·机器学习·自动化
主角1 711 分钟前
Keepalived高可用与负载均衡
运维·负载均衡
Fanfanaas12 分钟前
Linux 系统编程 进程篇(一)
linux·运维·服务器·c语言·开发语言·网络·学习
ego.iblacat18 分钟前
lvs 集群部署
开发语言·php·lvs
念恒1230618 分钟前
ROS2入门
linux·运维·服务器
东北甜妹32 分钟前
REdis Sentinel 哨兵集群
运维
小糖学代码34 分钟前
LLM系列:1.python入门:6.元组型对象(tuple)
linux·运维·服务器·python
晴天¥43 分钟前
使用Openfiler为达梦数据库集群搭建共享存储
运维·服务器·存储
Saniffer_SH1 小时前
【市场洞察】一叶知秋 - 从2026年开年Quarch公司PCIe 6.0测试工具销售状况说起
服务器·人工智能·嵌入式硬件·测试工具·fpga开发·自动化·压力测试
小宋0011 小时前
ROS2 安装指南(Ubuntu 22.04+Humble)
linux·运维·ubuntu