热门标签 | 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) - 文章图片



推荐阅读
  • LVS-DR数据包流向分析介绍
    下文给大家带来LVS-DR数据包流向分析介绍,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍, ... [详细]
  • 负载均衡基础概念与技术解析
    随着互联网应用的不断扩展,用户流量激增,业务复杂度显著提升,单一服务器已难以应对日益增长的负载需求。负载均衡技术应运而生,通过将请求合理分配到多个服务器,有效提高系统的可用性和响应速度。本文将深入探讨负载均衡的基本概念和技术原理,分析其在现代互联网架构中的重要性及应用场景。 ... [详细]
  • java大数据量调优(超赞值得收藏)
    从总体上来看,对于大型网站,比如门户网站,在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节: ... [详细]
  • Linux负载均衡LVS(IPVS)
    一、LVS简介LVS是LinuxVirtualServer的简称,也就是Linux虚拟服务器,是一个由章文嵩博士发起的自由软件项目,现在已经是Linux ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • Google排名优化-面向Google(Search Engine Friendly)的URL设计 ... [详细]
  • 在Java应用程序开发过程中,FTP协议被广泛用于文件的上传和下载操作。本文通过Jakarta Commons Net库中的FTPClient类,详细介绍如何实现文件的上传和下载功能。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文详细介绍了如何使用 PHP 编程语言输出 99 乘法表,包括使用不同的循环结构如 do-while、for 循环等方法,并提供了具体的代码示例。 ... [详细]
  • 本文详细探讨了 HAProxy 的基本概念及其与 LVS(Linux Virtual Server)的比较,特别是在内核空间与用户空间的工作差异。文章还深入介绍了 HAProxy 独有的数据结构——弹性二叉树,以及其在高并发场景下的表现。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
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社区 版权所有