热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Linux332】LVS的DR配置详解(ipvsadm+arptables)

文章目录1.DR简



文章目录


  • 1. DR简介
  • 2. ipvsadm用法
    • 2.1 ipvsadm参数
    • 2.2 ipvsadm 关于查看结果的解释

  • 3. DR基本配置
    • 3.1 实验环境
    • 3.2 Director Server 配置
    • 3.3 Real Server 配置
    • 3.4 测试访问


1. DR简介

在很多Internet服务中,例如ftp和http,请求的流量往往远远小于回应的流量,VS/DR方式利用这种非对称的特点,只负责调度请求,而Real Server直接将相应的报文返回给客户机。

VS/DR方式是通过改写请求报文中的MAC地址部分来实现的。Director和RealServer必需在物理上有一个网卡通过不间断的局域网相连。 RealServer上绑定的VIP配置在各自Non-ARP的网络设备上(如lo或tunl),Director的VIP地址对外可见,而 RealServer的VIP对外是不可见的。RealServer的地址即可以是内部地址,也可以是真实地址。

在实现VS/DR的方式中,我们配置了两台Router来模拟这种非对称路由的情况,RouterA地址为192.168.0.251, RouterB地址为192.168.0.252。当客户机访问Director时,由RouterA进入,当RealServer返回给客户机信息时,由RouterB出去,根据实际情况您也可以只使用一台或使用多台Router。只要能确保客户发送信息到Director,而且RealServer可以发送信息到客户即可


【Linux33-2】LVS的DR配置详解(ipvsadm+arptables) - 文章图片

2. ipvsadm用法


2.1 ipvsadm参数






ipvsadm 参数


-A
增加一台新的虚拟服务器


-E
编辑内核虚拟服务器表中的一条虚拟服务器记录


-D
删除内核虚拟服务器表中的一条虚拟服务器记录


-C
清除内核虚拟服务器表中的所有记录


-R
恢复虚拟服务器规则


-S
保存虚拟服务器规则,输出为-R 选项可读的格式


-a
在一个虚拟服务器中增加一台新的真实服务器


-e
编辑一条虚拟服务器记录中的某条真实服务器记录


-d
删除一条虚拟服务器记录中的某条真实服务器记录


-L或-l
显示内核虚拟服务器表


-Z
虚拟服务表计数器清零


-c
显示LVS 目前的连接


-n
输出IP 地址和端口的数字形式


-t
说明虚拟服务器提供的是tcp 的服务


-u
说明虚拟服务器提供的是udp 的服务


-f
说明是经过iptables 标记过的服务类型


-s
使用的调度算法
rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq
默认的调度算法是:wlc


-p
同一个客户的多次请求,被同一台RS处理
timeout 的默认值为300 秒


-r
真实的服务器


-g
指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)


-i
指定LVS 的工作模式为隧道模式


-m
指定LVS 的工作模式为NAT 模式


-w
真实服务器的权值


-h
显示帮助


其他选项

--set tcp tcpfin udp:设置连接超时值
--start-daemon:启动同步守护进程
#后面可以是master或backup,
#用来说明LVS Router是master或是backup。
#在这个功能上也可以采用keepalived的VRRP 功能。
--stop-daemon:停止同步守护进程
--mcast-interface interface:指定组播的同步接口
--timeout:显示tcp tcpfin udp 的timeout 值
--daemon:显示同步守护进程状态
--stats:显示统计信息
--rate:显示速率信息
--sort:对虚拟服务器和真实服务器排序输出



2.2 ipvsadm 关于查看结果的解释



ipvsadm -ln:查看添加的规则

Forward :转发方式
Weight:权重
ActiveConn:活动连接数
InActConn:非活动连接数


ipvsadm -ln -c:查看当前的IPVS连接

pro:协议
expire:还有多长时间过期
state:TCP状态
source:源地址:随机端口
virtual:虚拟集群服务
destination:被lvs-server调度到的RealServer


ipvsadm -ln --stats:查看自规则生效以来的ipvs统计信息

Conns:已经转发过的连接数
InPkts:流入包个数
OutPkts:流出包个数
InBytes:进入流量(字节)
OutBytes:流出流量(字节)


ipvsadm -ln --rate:查看速率信息

CPS:每秒的连接数
InPPS:每秒流入包个数
OutPPS:每秒流出包个数
InBPS:每秒进入流量(字节)
OutBPS:每秒流出流量(字节)



3. DR基本配置


3.1 实验环境





  1. 防火墙状态:Dead
  2. selinux状态:Disabled




  1. vim /etc/sysctl.conf:LVS在VS/NAT、VS/DR和VS/TUN3种方式下均需要打开ip_forward功能

net.ipv4.ip_forward = 1

  1. sysctl -p:可以使配置立即生效,并且重启电脑或network服务后,此设置仍然保存


【Linux33-2】LVS的DR配置详解(ipvsadm+arptables) - 文章图片


Director Server: 负载均衡服务器

  1. hostname:server1
  2. IPADDR0:192.168.43.17
  3. IPADDR1:192.168.17.1(DIP)
  4. GATEWAY:192.168.43.1
  5. VIP:192.168.17.100

Real Server: 真实服务器

  1. server2:192.168.17.2
  2. server3:192.168.17.3



3.2 Director Server 配置





  1. hostname:server1
  2. IPADDR0:192.168.43.17
  3. IPADDR1:192.168.17.1(DIP)
  4. GATEWAY:192.168.43.1
  5. VIP:192.168.17.100




  • 安装ipvs

yum install -y ipvsadm

  • 绑定VIP

ip addr add 192.168.17.100/24 dev 设备名

  • 设置ipvs规则

ipvsadm -A -t 192.168.17.100:80 -s rr:添加集群(指定rr调度算法)

ipvsadm -a -t 192.168.17.100:80 -r 192.168.17.2:80 -g:添加RS到集群(tcp服务)

ipvsadm -a -t 192.168.17.100:80 -r 192.168.17.3:80 -g

  • 保存规则

service ipvsadm save

  • 显示虚拟服务器表

ipvsadm -ln

【Linux33-2】LVS的DR配置详解(ipvsadm+arptables) - 文章图片
【Linux33-2】LVS的DR配置详解(ipvsadm+arptables) - 文章图片

3.3 Real Server 配置




  • 开启地址转换


  1. vim /etc/sysctl.conf:打开ip_forward功能

net.ipv4.ip_forward = 1

  1. sysctl -p


  • 添加VIP

ip addr add 192.168.17.100/24 dev 网卡设备

  • 安装Apache

yum install httpd -y

  • 编辑默认发布页面

echo server2 > /var/www/html/index.html

echo server3 > /var/www/html/index.html

  • 开启httpd服务

systemctl enable --now httpd

3.4 测试访问




  • 使用两次curl命令查看效果:发现在清除缓存后再次测试可能出现不经过调度去直接访问服务器的情况

curl 192.168.17.100

【Linux33-2】LVS的DR配置详解(ipvsadm+arptables) - 文章图片
【Linux33-2】LVS的DR配置详解(ipvsadm+arptables) - 文章图片

  • 解决方法:【在RS主机


  1. yum install -y arptables_jf:安装arptables

  2. arptables -A INPUT -d 172.25.17.100 -j DROP

  3. arptables -A OUTPUT -s 172.25.17.100 -j mangle --mangle-ip-s 192.168.17.X



【Linux33-2】LVS的DR配置详解(ipvsadm+arptables) - 文章图片
【Linux33-2】LVS的DR配置详解(ipvsadm+arptables) - 文章图片

(删除arptables规则用arptables -F即可)

  • 清除缓存后,测试成功!

【Linux33-2】LVS的DR配置详解(ipvsadm+arptables) - 文章图片



推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 如何在窗口右下角添加调整大小的手柄
    本文探讨了如何在传统MFC/Win32 API编程中实现类似C# WinForms中的SizeGrip功能,即在窗口的右下角显示一个用于调整窗口大小的手柄。我们将介绍具体的实现方法和相关API。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
author-avatar
yulongguxiang
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有