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



推荐阅读
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 对象存储与块存储、文件存储等对比
    看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ... [详细]
  • vsftpd配置(虚拟用户、匿名用户登录)
    一、ftp服务搭建(一)概述1.ftp连接及传输模式(1)控制连接TCP21,用于发送FTP命令信息 ... [详细]
  • Linux下MySQL 8.0.28安装指南
    本文详细介绍了在Linux系统上安装MySQL 8.0.28的步骤,包括下载数据库、解压数据包、安装必要组件和启动MySQL服务。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 本文详细介绍了如何利用Xshell配合Xftp实现文件传输,以及如何使用Pure-FTPd构建FTP服务,并探讨了VSFTP与MySQL结合存储虚拟用户的方法。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • Canopy环境安装与使用指南
    《利用Python进行数据分析》一书推荐使用EPDFree版本的环境,然而随着技术的发展,目前更多人倾向于使用Canopy。本文将详细介绍Canopy的安装及使用方法。 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
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社区 版权所有