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



推荐阅读
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社区 版权所有