本篇文档主要是记录DR模式实现过程,以及各配置步骤的原理。“lvs三种模式工作原理”中描述了LVS的NAT、DR、TUN三种模式的工作原理。

DR模式是通过director将报文源和目标MAC地址修改,发送给RS,RS将响应报文直接发送给client。

部署环境

LVS服务器(DS)  DIP:172.30.100.111  VIP:172.30.100.1
nginx1服务器(RS)  RIP:172.30.100.126  VIP:172.30.100.1
nginx2服务器(RS)  RIP:172.30.100.127  VIP:172.30.100.1

确保三台机器分别配置了对应的本地静态地址DIP和RIP,VIP稍后配置。

LVS服务器配置

  LVS是被编译进内核中,主要分为两部分ipvs和ipvsadm,ipvs是LVS软件核心,是运行在LB上的,这是个基于ip层的负载均衡;ipvsadm是用户空间的集群管理工具。

lsmod |grep ip_vs
# 确保内核加载了lvs模块
yum install -y ipvsadm
# 安装用户管理工具

  要想起到负载均衡效果,那么所有请求报文必须发往LVS服务器(DS),然后DS根据指定算法分发到后端服务器上,因此DS必须配置VIP地址,VIP是与公网client通信地址,这样DS才能接受到请求报文进行分发。

ifconfig eth0:0 172.30.100.1 netmask 255.255.255.255
# 在LVS服务器上添加一个地址为VIP的虚拟网卡eth0:0

  

后端服务器配置

  DR模式只是针对源和目标MAC地址做出修改,源和目标IP还是不变;当请求报文由LVS服务器处理后发送到后端服务器RS上,RS拆封报文时会发现目标MAC是自己的MAC地址,但是目标IP是VIP,与本地IP地址不符合,那么RS就会认为不是发给自己的报文,所以此时需要在RS上配置VIP,这样RS就可以接受目标地址为VIP的请求报文了。

  如果将VIP设置在RS的网卡上,假设有多台RS并且每台RS上都配置了VIP,在这个网络中发出VIP的ARP请求,就有多个RS响应,这样肯定是不可以;因此就把VIP配置到回环地址lo网卡上,然后让lo网卡忽略所有ARP请求,eth0网卡正常响应ARP请求,这样网络中就不会收到RS关于VIP的响应;还有一个问题就是当本地网卡响应ARP请求时,也有可能通过lo网卡回应,然后把VIP作为ARP请求的源IP通告出去,那么就必须禁止VIP作为ARP请求的源IP,这个问题可以通过修改arp_announce参数解决。

  由于客户端发起的请求报文源IP为CIP,目标IP为VIP;所以客户端收到的响应报文源IP必须为VIP,目标IP必须为CIP,因此在RS发送的响应报文必须由VIP的lo网卡发出,这就需要在RS上指定一条路由,目标IP为VIP的数据包使用lo网卡发出,然后经由eth0转发到网关再到公网客户端。

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
# 将对应网卡设置为只回应目标IP为自身接口地址的ARP请求
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
# 将ARP请求的源IP设置为eth0上的IP,也就是RIP
# 必须完成以上设置,才可继续 ifconfig lo:0 172.30.100.1 broadcast 172.30.100.1 netmask 255.255.255.255
# 添加IP地址为VIP的虚拟网卡lo:0
route add -host 172.30.100.1 dev lo:0
# 添加一条路由,目标IP为VIP的数据包使用lo接口发送,这样响应报文的源IP就会为VIP

  

  两台nginx后端服务器都需要完成以上操作。

ipvs规则配置

ipvsadm -A -t 172.30.100.1:80 -s wrr
# 添加虚拟服务,指定IP、端口、算法
ipvsadm -a -t 172.30.100.1:80 -r 172.30.100.126:80 -g -w 2
# 添加nginx1服务器,指定DR模式,指定权重为2
ipvsadm -a -t 172.30.100.1:80 -r 172.30.100.127:80 -g -w 1
# 添加nginx2服务器,指定DR模式,指定权重为1

验证

  

Linux lvs-DR模式配置详解的更多相关文章

  1. linux LVS DR模式配置

    拓扑图: 测试环境:CentOS 6.5 X86 64位 配置步骤: 1.  安装测试环境 [root@UCS-1 ~]# yum -y install httpd [root@UCS-1 ~]# c ...

  2. lvs dr 模型配置详解

    前期准备: 两台服务器 note01(lvs服务器) note02(real sever) 1 首先在note01配置子网卡: ifconfig eth0: :2意思是eth0的子接口,随便一个数字就 ...

  3. lvs keepalived 安装配置详解【转】

    lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...

  4. Linux lvs-NAT模式配置详解

    本篇文档主要是记录NAT模式实现过程,以及各配置步骤的原理.“lvs三种模式工作原理”中描述了LVS的NAT.DR.TUN三种模式的工作原理. NAT模式是通过director将报文目标IP地址修改, ...

  5. lvs keepalived 安装配置详解

    前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较.F5相当的贵,真不是一般企业能负担的起的.负载均衡软件也用过不少,nginx,apache,hapro ...

  6. Lvs Dr 模式配置

    1.Dr 安装 ipvsadm # yum -y install ipvsadm # lsmod | grep ip_vs    #检查ipvs模块是否加载进系统.把ipvs模块加载进系统,需要我们执 ...

  7. Linux安装vsftpd及配置详解

    1 安装vsftpd组件 安装完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件.[root@bogon ~]# yum -y install vsftpd 2.FT ...

  8. (总结)CentOS Linux搭建SVN Server配置详解

         PS:虽然在公司linux服务器上搭建过几次svn,但是时间长了,有些配置操作会忘掉,上网搜索的结果都不大满意,有幸在前几天看到一篇算是最满意的svn搭建文章,转载一下以备以后使用,原文地址 ...

  9. linux串口编程参数配置详解(转)

    1.linux串口编程需要的头文件 #include <stdio.h>         //标准输入输出定义#include <stdlib.h>        //标准函数 ...

随机推荐

  1. [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(一)

    一步步打造一个简单的 MVC 电商网站 - BooksStore(一) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore &l ...

  2. c# List根据某个属性进行分类,变成以属性名称作为分类的多个List

    在平时的开发中,我们从数据库中得到List列表,但是我们希望可以根据属性名称再次进行分类. 其实LINQ中已经内置相应的算法. 长话短说,直接上代码: var dataList = JsonHelpe ...

  3. C#,记录--一个方法中,完成对数据增删改操作

    实际应用中,一般不会使用delete彻底的删除数据,大多都是逻辑删除 为了不把本文写成小作文,举个小栗子吧 表 A,deletestate为置删除字段,int类型,值为0和1 表中五条数据 查询 se ...

  4. SAP MM 明明已经扩展供应商到采购组织下,采购订单里还是报错?

    SAP MM 明明已经扩展供应商到采购组织下,采购订单里还是报错? 如下的PO 4400000069,处于HELD状态.ME22N试图保存它为一个正式的采购订单,报错说供应商没有在采购组织下维护, 使 ...

  5. Git安装教程(windows)

    Git是当今最流行的版本控制软件,它包含了许多高级工具,这里小编就讲一下Git的安装. 下载地址:https://git-scm.com/downloads 首先如下图:(点击next) 第二步:文件 ...

  6. 基于Django 的 FreeSwitch 开源GUI 管理系统 YouPBX

    YouPBX YouPBX 是一个强大 FreeSwift (电话软交换系统) 的管理GUI系统,基于Django开发,功能全面,体验友好,可以基于此项目做一个完善的IPPBX系统.呼叫中心应用等 项 ...

  7. 高通MSM8998 ABL的调试

    高通在MSM8998上引入了UEFI,用来代替LK(Little Kernel).高通UEFI由XBL和ABL两部分组成.XBL负责芯片驱动及充电等核心应用功能.ABL包括芯片无关的应用如fastbo ...

  8. sqlserver简便创建用户并授权

    很多研发人员程序连接SQL Server直接用的就是SA帐号.如果对数据库管理稍微严格一点的话,就不应该给应用程序这种权限,通常应用程序只需要进行增删改查,而很少有DDL操作,因此配置帐号时应该遵循“ ...

  9. 根据Webservice地址,动态传入参数(Webservice代理类)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sunlib; ...

  10. C# 得到EXCEL表格中的有效行数和列数 中 CurrentRegion 的有效范围