IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> LVS负载均衡(三种工作模式,调度算法,NAT与DR模式配置) -> 正文阅读

[系统运维]LVS负载均衡(三种工作模式,调度算法,NAT与DR模式配置)

1. LVS负载均衡的工作模式(lvs type):

1.1 NAT模式 lvs-nat:masquerade

[图片]

工作原理

客户端与真实服务器之间是由LVS转发的.

  • 客户端请求用的是CIP,会转换成VIP访问LVS;
  • 然后LVS服务器会通过另一个IP——DIP,也就是作为内网IP ,来访问RS服务器IP;
  • 接下来,真实服务器接收到LVS服务器的DIP访问请求,那么返回的对象也是LVS的DIP;
  • 最后LVS服务器会把RS服务器的回应,转发到VIP,最终转发到客户端

所以,lvs-nat本质上就是多目标的DNAT(iptables),lvs-nat模式通过修改请求报文的目标IP地址(同时可能会修改目标端口)到 挑选出来的RS的RIP地址,来实现转发

模式特点

  • lvs-nat的特点:
    • RS和DIP应该使用私网地址,且RS的网关要指向DIP;RS的RIP和Director的DIP必须在同一IP网络
    • 请求和响应报文都要经由director转发,所以配置时需要将director的转发功能开启,极高负载的场景中,director(调度器)可能会成为系统性能瓶颈
    • 支持端口映射
    • RS可以使用任意OS(RS操作系统不受限制,能提供网站即可)

1.2 DR模式 lvs-dr(direct routing):lvs的默认模式,gateway

[图片]

工作原理

客户访问的流量经过调度器,但是返回的流量是RS服务器直接响应的

  • lvs-dr模式通过修改请求报文的目标MAC地址进行转发
    Director:调度器要配置VIP,DIP
    RSs:所有的Real Server都要配置RIP,VIP

关键问题

在DR模式中,如何保证前端路由器将目标IP为VIP的请求报文发送给director,而不是RS呢?

  • 解决方案有以下三种:
  1. 静态绑定,也就是两个客户端和LVS服务器的Mac地址绑定,此方案一般不采用。
  2. arptables,但ARP是内网协议,客户端不属于内网,此方案也不采用
  3. 修改RS主机内核的2个参数:arp_announce 和 arp_ignore

关于arp_announce:
是否接收并记录别人的通告,以及是否通告自己的mac地址给别人。

  • 可选值
    arp_announce有三个可选值,0,1,2,其意义如下:
    • 0(default,默认值为0):通告自己所拥有的所有地址
    • 1:尽量不通告与自己不在同一个网段的地址,比如不通告2.0网段的地址给1.0网段,不通告3.0网段的地址给1.0网段等,但是是尽量不通告,有可能还是会通告的;
      尽量避免不在该网络接口子网段的本地地址做出arp回应. ;当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.;此时会检查来访IP是否为所有接口上的子网段内ip之一.如果该来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.
    • 2:总是不通告与自己不在同一个网段的地址,比如不通告2.0网段的地址给1.0网段,不通告3.0网段的地址给1.0网段等,绝对不会通告;
      对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址;首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址;如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.

关于arp_ignore:
是否响应arp请求

  • 可选值
    arp_ignore有9个可选值,0,1,2,3,4,5,6,7,8,其意义如下:
    • 0(default,默认值为0):回应任何网络接口上对任何本地IP地址的arp查询请求
    • 1:请求报文从哪个接口进入的且请求的目标地址就是此接口配置的地址才予以响应,否则不响应只回答目标IP地址是来访网络接口本地地址的ARP查询请求
    • 2:只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
    • 3:不回应该网络接口的arp请求,而只对设置的唯一和连接地址做出回应
    • 4-7:保留未使用,(暂时没定义)
    • 8:不回应所有(本地地址)的arp查询

模式特点

  • RS的RIP可以使用私有地址,也可以使用公网地址
  • RS跟Director必须在同一物理网络中,中间不能有路由器相隔(直接连交换机)
  • 请求报文经由Director调度,但响应报文一定不能经由Director调度
  • 不支持端口映射
  • RS可以是大多数OS
  • RS的网关不能指向DIP

1.3 TUN模式 lvs-tun(ip tunneling):(隧道模式)

在这里插入图片描述

工作原理

LVS(TUN)的思路就是将请求与响应数据分离,让Director仅处理数据请求,而让RS响应数据包直接返回给客户端。
LVS(TUN不修改请求报文的ip首部,而是通过在原有的ip首部(CIP<–>VIP)之外再封装一个ip首部(DIP<–>RIP)

其中,IP隧道(IP tunning)是一种数据包封装技术,它可以将原始数据包封装并添加新的包头(内容包括新的源地址及端口、目标地址及端口),从而实现将一个目标为调度器的VIP地址的数据包封装,通过隧道转发给后端的真实服务器(Real Server),通过将客户端发往调度器的原始数据包封装,并在其基础上添加新的数据包头(修改目标地址为调度器选择出来的真实服务器的IP地址及对应端口),LVS(TUN)模式要求真实服务器可以直接与外部网络连接,真实服务器在收到请求数据包后直接给客户端主机响应数据。

模式特点

  • RIP,DIP,VIP必须是公网地址
  • RS的网关不能指向DIP
  • 请求报文必须经由director调度,但响应报文必须不能经由director
  • 不支持端口映射
  • RS的OS必须支持隧道功能

2. LVS负载均衡调度算法(十种调度算法)

lvs scheduler:lvs调度器,即lvs挑选RS的算法

静态算法(四种):仅根据算法本身进行调度

  • RR:round robin,轮询调度

    • 就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单。轮询算法假设所有的服务器处理请求的能力都一样的,调度器会将所有的请求平均分配给每个真实服务器,但轮询没有考虑每台服务器的性能,可能会出现因为服务器处理能力不足导致的延迟。
  • WRR:weighted rr,加权轮询调度

    • 根据一定的比例进行轮调,加权轮询调度算法主要是对轮询算法的一种优化与补充,LVS会考虑每台服务器的性能,并给每台服务器添加一个权值,如果服务器A的权值为1,服务器B的权值为2,则调度器调度到服务器B的请求会是服务器A的两倍。权值越高的服务器,处理的请求越多。
  • SH:source hash,源地址散列调度

    • 源地址hash,实现session保持的机制,将来自于同一个IP的请求始终调度至同一RS,每个服务单独调度。算法先根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址散列调度算法的相同,它的算法流程与目标地址散列调度算法的基本相似
  • DH:destination hash,目标地址散列调度

    • 目标地址hash,将对同一个目标(资源)的请求始终发往同一个RS。此算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。

动态算法(六种):根据算法及各RS的当前负载状态进行调度

根据指定的算法算出overhead(负载),最终挑选出overhead值最小的则为被选中的RS

  • LC:Least Connection,最小连接调度
    算法是把新的连接请求分配到当前连接数最小的服务器。最小连接调度通过服务器当前活跃的连接数来估计服务器的情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中断或者超时,其连接数减1。具体算法如下:
    overhead = Active * 256 + Inactive

  • WLC:Weighted LC,加权最小连接调度
    算法是最小连接调度的超集,各个服务器相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值加权的LC,算法如下:
    overhead=(Active*256+Inactive)/ weight

  • SED:Shortest Expection Delay,最短的期望的延迟调度
    最短期望延迟算法基于WLC算法。举个例子吧,ABC三台服务器的权重分别为1、2、3 。那么如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用SED算法后会进行一个运算
    A:(1+1)/1=2 B:(1+2)/2=3/2 C:(1+3)/3=4/3 就把请求交给得出运算结果最小的服务器。(谁当前延迟最少给谁)算法如下:
    overhead = (Active + 1) * 256 / weight

  • NQ:Nevel Queue,最少队列调度
    此算法是SED算法的改进,根据SED算法每台主机第一次至少要均分配一次,然后再按SED算法来挑选。但此算法无需队列,如果有realserver的连接数等于0就直接分配过去,不需要在进行SED运算。

  • LBLC:Locality-Based LC,基于局部的最少连接调度
    基于局部的最少连接调度(Locality-Based Least Connections 简称’LBLC’)算法是针对请求报文的目标IP地址的 负载均衡调度,目前主要用于Cache集群系统,因为在Cache集群客户请求报文的目标IP地址是变化的。这里假设任何后端服务器都可以处理任一请求,算法的设计目标是在服务器的负载基本平衡情况下,将相同目标IP地址的请求调度到同一台服务器,来提高各台服务器的访问局部性和Cache命中率,从而提升整个集群系统的处理能力。LBLC调度算法先根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则使用’最少连接’的原则选出一个可用的服务器,将请求发送到服务器。

  • LBLCR:Locality-Based Least-Connection with Replication,带复制的基于局部性的最少连接
    带复制的基于局部性的最少连接(Locality-Based Least Connections with Replication 简称’LBLCR’)算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统,它与LBLC算法不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。按’最小连接’原则从该服务器组中选出一一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按’最小连接’原则从整个集群中选出一台服务器,将该服务器加入到这个服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度

3. ipvsadm命令详解:

基本语法:

 ipvsadm -A|E -t|u|f <集群服务地址> [-s <调度算法>] [-p <超时时间>] [-M <掩码>] [-b <标志>]
 ipvsadm -D -t|u|f <集群服务地址>
 ipvsadm -C
 ipvsadm -R
 ipvsadm -S [-n]
 ipvsadm -a|e -t|u|f <集群服务地址> -r <真实服务器地址> [选项]
 ipvsadm -d -t|u|f <集群服务地址> -r <真实服务器地址>
 ipvsadm -L|l [options]
 ipvsadm -Z [-t|u|f <集群服务地址>]
 ipvsadm --set <超时时间>
 ipvsadm --start-daemon <主或备> [--mcast-interface <组播接口>] [--syncid <SID>]
 ipvsadm --stop-daemon <主或备>
 ipvsadm -h

子命令

--add-service     -A        添加一个集群服务,需要使用选项
 --edit-service    -E        编辑一个集群服务,需要使用选项
 --delete-service  -D        删除指定集群服务,需要使用选项
 --clear           -C        删除所有集群服务,包括真实服务器转发策略规则
 --restore         -R        从标准输入中恢复策略规则
 --save            -S        保存策略规则到标准输出
 --add-server      -a        添加一个真实服务器,需要使用选项
 --edit-server     -e        编辑一个真实服务器,需要使用选项
 --delete-server   -d        删除一个真实服务器,需要使用选项
 --list            -L|-l     查看集群服务列表,包括真实服务器转发策略规则
 --zero            -Z        计数器清零。清除连接数、包转发等数量统计信息
 --set <超时时间>            设置TCP、TCPFIN(TCP关闭连接状态)、UDP连接超时时间,用于
                             会话保持。一般情况下TCP和UDP超时时间保持默认就好,TCPFIN
                             可以根据情况设定,指定它则用户请求连接关闭,该连接则会变
                             为非活跃(InActive)空闲等待状态,在空闲等待时间内,如果
                             来自同一源IP的请求,则还会转发给后端的同一台真实服务器上
 --start-daemon              开启连接同步守护进程。在选项后面指定自己是Master(主)还
                             是backup(备),主负载调度器会同步所有策略及连接状态到备
                             负载调度器,当主故障,备可以接替其工作
 --stop-daemon               停止连接同步守护进程
 --help            -h        显示帮助信息

选项

 --tcp-service  -t  <集群服务地址>   允许集群服务使用的传输协议为TCP。<IP:Port>
 --udp-service  -u <集群服务地址>    允许集群服务使用的传输协议为UDP。<IP:Port>
 --fwmark-service  -f <防火墙标识>   使用一个整数值来防火墙标识集群服务,而不是地址、
                                     端口和协议使用它,我们可以通过结合IPtables将多
                                     个以调度器为目标的端口定义成一个防火墙标识,由
                                     ipvsdam通过此项关联标识,则可以实现对一个IP多
                                     端口调度,即实现后端服务器可以开放多个服务
 --scheduler    -s scheduler         指定集群服务使用的调度算法:rr|wrr|lc|wlc|lblc
                                     |lblcr|dh|sh|sed|nq,默认为wlc
 --persistent   -p <超时时间>        开启持久化服务,开启它则表示在指定时间内,来自同
                                     一IP的请求都会转发到后端同一台真实服务器上
 --netmask      -M <网络掩码>        使用网络掩码来屏蔽持久化来源IP的地址范围,默认值
                                     为255.255.255.255,即所有来源IP请求都会享受持久
                                     化服务
 --real-server  -r <真实服务器地址>  指定真实服务器的主机IP与端口
 --gatewaying   -g                   指定真实服务器转发工作模式,使用DR模式,默认
 --ipip         -i                   指定真实服务器转发工作模式,使用TUN模式
 --masquerading -m                   指定真实服务器转发工作模式,使用NAT模式
 --weight       -w <权重值>          指定真实服务器的权重值
 --u-threshold  -x <上阀值>          设置转发请求的最大上连接阀值,范围为0~65535,当
                                     当连接数超过指定上限时,LVS则不会转发请求                                   
 --l-threshold  -y <下阀值>          设置转发请求的下连接阀值,范围为0~65535,当连接
                                     数降低至指定值时,LVS则继续提供服务,默认值为0
 --mcast-interface interface         设置用于连接同步守护进程的组播接口
 --syncid sid                        设置连接同步守护进程的SID号,用于标识,范围0~255
 --connection   -c                   显示连接信息,一般与"-l"连用
 --timeout                           显示TCP、TCPFIN、UDP超时时间信息,一般与"-l"连用
 --daemon                            显示连接同步守护信息,一般与"-l"连用
 --stats                             显示统计信息,一般与"-l"连用
 --rate                              显示转发速率信息,一般与"-l"连用
 --exact                             显示数据包和字节计数器的确切值,扩大字符长度
 --thresholds                        显示阀值信息,一般与"-l"连用
 --persistent-conn                   显示持久化连接信息,一般与"-l"连用
 --numeric      -n                   地址和端口以数字格式显示,一般与"-l"连用
 --sched-flags  -b <标识>            设置调度算法的范围标识,用于SH算法,有两个标识:
                                     sh-fallback,如果真实服务器不可用,则将其转发到
                                     其他真实服务器上。
                                     sh-port,将源地址的端口号也添加到散列键=值中

4. lvs-nat模式配置步骤:

  • 基本环境说明:
    1个director,2个RS服务器,apache服务

1. director配置2块网卡

在这里插入图片描述

在这里插入图片描述

2.配置ip地址信息:director(dip,vip)RS(rip)

[root@lvs ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:81:e2:d5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.177.147/24 brd 192.168.177.255 scope global dynamic noprefixroute ens160
       valid_lft 1749sec preferred_lft 1749sec
    inet6 fe80::cc13:2a:6bc1:d78c/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:81:e2:df brd ff:ff:ff:ff:ff:ff
    inet 192.168.252.130/24 brd 192.168.252.255 scope global dynamic noprefixroute ens192
       valid_lft 1799sec preferred_lft 1799sec
    inet6 fe80::93b0:fc5f:6357:df27/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@lvs ~]# cd /etc/sysconfig/network-scripts/
[root@lvs network-scripts]# ls
ifcfg-ens160  ifcfg-ens192
[root@lvs network-scripts]# vim ifcfg-ens160 
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.177.147
NETMASK=255.255.255.0
GATEWAY=192.168.177.2
DNS1=114.114.114.114
[root@lvs network-scripts]# ifdown ens160 ;ifup ens160 
[root@lvs network-scripts]# vim ifcfg-ens192
TYPE=Ethernet
BOOTPROTO=static
NAME=ens192
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.252.130
NETMASK=255.255.255.0

3. RS01 主机httpd主页配置与网关配置

[root@RS01 ~]# yum -y install httpd 
[root@RS01 ~]# systemctl  enable --now httpd
[root@RS01 ~]# echo "this is the test page of RS01 " >> /var/www/html/index.html 
[root@RS01 ~]# cat /var/www/html/index.html 
this is the test page of RS01 

[root@RS01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.177.148
NETMASK=255.255.255.0
GATEWAY=192.168.177.147 //此处网关指向lvs主机的ens160ip
DNS1=114.114.114.114
[root@RS01 ~]# ifdown ens160 ;ifup ens160 

4. RS02 主机httpd主页配置与网关配置

[root@RS02 ~]# yum -y install httpd 
[root@RS02 ~]# systemctl  enable --now httpd
[root@RS02 ~]# echo "the test content of  RS02 httpd " >> /var/www/html/index.html
[root@RS02 ~]# cat /var/www/html/index.html
the test content of  RS02 httpd 

[root@RS02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.177.149
NETMASK=255.255.255.0
GATEWAY=192.168.177.147 //此处网关指向lvs主机的ens160ip
DNS1=114.114.114.114
[root@RS02 ~]# ifdown ens160 ;ifup ens160 

5. 开启director的ip转发功能

[root@lvs ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1 //添加此行
[root@lvs ~]# sysctl -p 
net.ipv4.ip_forward = 1

6. 在director上添加并保存规则:

[root@lvs ~]# dnf provides  *bin/ipvsadm
Last metadata expiration check: 0:16:55 ago on Sun 14 Aug 2022 09:30:49 PM CST.
ipvsadm-1.31-1.el8.x86_64 : Utility to administer the Linux Virtual Server
Repo        : AppStream
Matched from:
Other       : *bin/ipvsadm
[root@lvs ~]# dnf -y install ipvsadm 
[root@lvs ~]# ipvsadm -A -t 192.168.252.130:80  -s rr  
[root@lvs ~]# ipvsadm -a -t 192.168.252.130:80 -r 192.168.177.148 -m 
[root@lvs ~]# ipvsadm -a -t 192.168.252.130:80 -r 192.168.177.149 -m 
[root@lvs ~]# ipvsadm -Sn  > /etc/sysconfig/ipvsadm-config 
[root@lvs ~]# cat /etc/sysconfig/ipvsadm-config
-A -t 192.168.252.130:80 -s rr
-a -t 192.168.252.130:80 -r 192.168.177.148:80 -m -w 1
-a -t 192.168.252.130:80 -r 192.168.177.149:80 -m -w 1
[root@lvs ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.252.130:80 rr
  -> 192.168.177.148:80           Masq    1      0          0         
  -> 192.168.177.149:80           Masq    1      0          0  

7. 验证效果

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

5. lvs-dr配置步骤:

1. director只需要一块网卡

vip配置在lo接口中即可,此处假设dip与rip在同一网段

2. 配置director的ip地址信息(dip,vip)

    配置dip(编辑物理网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth160)
    配置vip:   ifconfig eth0:0 vip/32 broadcast vip up
#配置dip
[root@lvs ~]# cd -
/etc/sysconfig/network-scripts
[root@lvs network-scripts]# vim ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR0=192.168.177.147  //此处预设为dip
NETMASK0=255.255.255.0 
GATEWAY0=192.168.177.2
IPADDR1=192.168.177.100 //此处预设为vip
NETMASK1=255.255.255.0
DNS1=114.114.114.114
[root@lvs network-scripts]# ifdown ens160 ;ifup ens160
[root@lvs network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:81:e2:d5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.177.147/24 brd 192.168.177.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.177.100/24 brd 192.168.177.255 scope global secondary noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe81:e2d5/64 scope link 
       valid_lft forever preferred_lft forever


3. 配置RS的RIP:

编辑物理网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth160

#RS01 RIP配置 
[root@RS01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.177.148
NETMASK=255.255.255.0
GATEWAY=192.168.177.2  //因为是DR模式,此处应修改为正常的网关 不需要指向lvs
DNS1=114.114.114.114 
[root@RS01 ~]# ifdown ens160 ;ifup ens160 


#RS02 RIP配置  同上
[root@RS02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.177.149
NETMASK=255.255.255.0
GATEWAY=192.168.177.2  //因为是DR模式,此处应修改为正常的网关 不需要指向lvs
DNS1=114.114.114.114 
[root@RS02 ~]# ifdown ens160 ;ifup ens160 

4. 配置RS网卡内核参数:

编辑/etc/sysctl.conf文件,添加如下内容:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

[root@RS01 ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf 
[root@RS01 ~]# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
[root@RS01 ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS01 ~]# sysctl -p 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2




#RS02同理 
[root@RS02 ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf 
[root@RS02 ~]# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
[root@RS02 ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS02 ~]# sysctl -p 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

5. 配置RSvip:

        ifconfig lo:0 vip/32 broadcast vip up
  • 注意:此处必须先修改网卡内核参数然后再配置vip,因为如果先配vip,vip配好后就会立马通告给别人,而修改内核参数就是为了不通告
[root@RS01 ~]# dnf -y install net-tools 
[root@RS01 ~]# ifconfig  lo:0 192.168.177.100/32 broadcast 192.168.177.100 up 
[root@RS01 ~]# ifconfig 
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.177.148  netmask 255.255.255.0  broadcast 192.168.177.255
        inet6 fe80::20c:29ff:feda:4c4c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:da:4c:4c  txqueuelen 1000  (Ethernet)
        RX packets 16322  bytes 15291315 (14.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9519  bytes 671265 (655.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.177.100  netmask 0.0.0.0
        loop  txqueuelen 1000  (Local Loopback)


#RS02同理 
[root@RS02 ~]# dnf -y install net-tools
[root@RS02 ~]# ifconfig  lo:0 192.168.177.100/32 broadcast 192.168.177.100 up 
[root@RS02 ~]# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.177.149  netmask 255.255.255.0  broadcast 192.168.177.255
        inet6 fe80::20c:29ff:fe95:4546  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:95:45:46  txqueuelen 1000  (Ethernet)
        RX packets 14102  bytes 15175108 (14.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8626  bytes 518017 (505.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.177.100  netmask 0.0.0.0
        loop  txqueuelen 1000  (Local Loopback)

6. 配置路由信息:在director和所有RS上进行如下配置:

    **route add -host vip dev interface:0**
[root@lvs ~]# route add  -host 192.168.177.100 dev ens160 
[root@RS01 ~]# route add  -host 192.168.177.100 dev lo:0 
[root@RS02 ~]# route add  -host 192.168.177.100 dev lo:0 

7. 在director上添加并保存规则:

// ipvsadm -A -t vip:port -s wrr
//ipvsadm -a -t vip:port -r rip:port -g
//ipvsadm -S > /etc/sysconfig/ipvsadm



[root@lvs network-scripts]# dnf -y install ipvsadm 
[root@lvs ~]# ipvsadm -A -t 192.168.177.100:80 -s  rr  
[root@lvs ~]# ipvsadm -a -t 192.168.177.100:80 -r 192.168.177.148 -g   
[root@lvs ~]# ipvsadm -a -t 192.168.177.100:80 -r 192.168.177.149 -g
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.177.100:80 rr
  -> 192.168.177.148:80           Route   1      0          0         
  -> 192.168.177.149:80           Route   1      0          0  
[root@lvs ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@lvs ~]# cat /etc/sysconfig/ipvsadm
-A -t 192.168.177.100:80 -s rr
-a -t 192.168.177.100:80 -r 192.168.177.148:80 -g -w 1
-a -t 192.168.177.100:80 -r 192.168.177.149:80 -g -w 1

8. 验证效果

在这里插入图片描述

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:40:14  更:2022-08-19 19:41:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 18:55:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码