LVS是什么就不多说了。

先上拓扑图

1台LVS   3台Realserver    一个客户端。  环境全部模拟全在内网环境(selinux和iptables关闭)

先简略说一下安装步骤:

LVS上:

1、先将本地eth0分出一个子网卡 eth0:1 并配置上VIP(我的VIP为 192.168.0.36)

ifconfig eth0:0 192.168.0.36 broadcast 192.168.0.36 netmask 255.255.255.255 up

2、再将外部所有请求VIP的流量都导向这块网卡,所以需要添加路由

route add -host 192.168.0.36 dev eth0:0

但是这样只是临时添加,如果重启network 服务,或者重启系统。条目会消失,至于怎样永久,有好多种办法,比如rc.local(查看路由表 route)HU代表路由到一个主机上,UG即代表路由到路由器。

3、在配置路由转发,修改 /etc/sysctl.conf 文件

将net.ipv4.ip_forward = 0 的值改成 1     然后使用sysctl -p 命令来刷新保存的文件。

这个改动可以理解成将eth0 和eth0:1 中间做一个路由条目,如果为0的话,2块网卡可以理解成是不想通的即可。

4、在来配置安装ipvsadm (yum安装or 源码)

源码安装没有什么特殊的。只不过要先安装依赖包libnl*

这里我们使用yum安装,也是官网最新的1.2.6ipvsadm。

yum -y install ipvsadm

配置ipvsadm

ipvsadm -C     #清楚表内的规则
ipvsadm -At 192.168.0.36:80 -s wrr
ipvsadm -at 192.168.0.36:80 -r 192.168.0.38:80 -g -w 1
ipvsadm -at 192.168.0.36:80 -r 192.168.0.162:80 -g -w 1
ipvsadm -at 192.168.0.36:80 -r 192.168.0.41:80 -g -w 1
/etc/init.d/ipvsadm start #启动lvs  (如果发现找不到/etc/sysconfig/ipvsadm报错就使用service ipvsadm save 保存条目) # -A相当于定义一个模块,模块的规则为VIP的80端 口如果想在VIP上定义其他端口则会报错。 -s:轮询规则,详细请看文章末尾链接。 # -a添加规则 -r为后端真是Rserver服务器这里只能指定80端口,我试过添加其他端口,均会被自动修改成80 添加之后可以在 vi /etc/sysconfig/ipvsadm 查看条目,也可以使用ipvsadm -Ln 来查看

在配置Realserver端:(如配置不理解请看LVS配置)

ifconfig lo:0 192.168.0.36 broadcast 192.168.0.36 netmask 255.255.255.255 up
route add -host 192.168.0.36 dev lo:0

在/etc/sysctl.conf 末尾加上 (ARP抑制)

#LVS arp
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

Realserver 配置完毕。其余2台也都一样

#=================分=========析=========区==================

一、当客户端发送一个请求到VIP时ip数据包(ipdata)携带的什么呢。

RSC-IP  DST-IP 和请求内容以及各种校验,这里我关注我们关注的。

细分一下过程:

 1、请求到达交换机 (请求的IP为VIP) 这个时候假设交换机上没有ARP缓存。

2、交换机会说:我本地没有VIP对应的MAC,我去帮你找吧。

3、交换机瞬间像所有网口发送ARP广播包。此ARP的广播包里DST-IP为VIP

4、而此时Realserver和交换机相连的端口为eth0。但是route会把这个请求送达给lo:0上,由于arp_ignore=1的缘由,只回答目标IP地址是来访网络接口本地地址的ARP查询请求.所以lo:0会忽略掉这个ARP请求,但是LVS没有设置。所以LVS会告诉交换机,我是VIP。

5、交换机记录VIP以及对应的MAC,将ipdata交给了LVS。

6、LVS将ipdata拆包看到请求的是VIP:80端口,遂查询LVS规则+轮询算法,将确定处理该request的Realserver的IP(即RIP假设为192.168.0.41)

7、LVSDR模式独有的MAC寻址,这个时候LVS本地没有Rserver的MAC,遂发ARP广播包说:RIP为Realserver的MAC是多少。

8、ARP包经过eth0口流入每个Rserver,Rserver 这个时候会通过系统内核,内核说:这个ARP请求的是本地网卡的IP,我们要给出回应。就会给出ARP的应答包发给LVS的DIP。

9、LVS将Rserver应答给自己的MAC存入自己的arp -n 缓存表中,并将ipdata包的外层继续封装一层MAC寻址而此时的SRC-IP 仍未CIP ,DST-IP 为VIP 但是SRC-MAC为DIP即LVS的MAC。DST-MAC为RIP的MAC

10、数据包到达Realserver时,Rserver验证这个数据包是不是自己能处理的需要符合2个要求 1、MAC是自己的 2、IP是自己的 此时lo:0绑定的VIP就起到作用,将ipdata数据包送上CPU。

11、Realserver处理完成之后,SRC-IP 为VIP,DST-IP 为CIP SRC-MAC为RMAC DST-MAC为CMAC (现实环境中为网关的,即CIP为路由器网关)

下图为对应其过程

为验证7过程,使用tshark抓取 192.168.0.41网口流量验证ARP包内为RIP而非VIP

清空LVS本地缓存,查看arp缓存用arp -n 清楚ARP缓存使用

arp -n|awk '/^[1-9]/{print "arp -d  " $1}'|sh -x

另外LVS规则算是内核方法,用netstat -ntulp也显示不了其侦听的端口。启动日志在/var/log/message中

另外感谢吴大大(大牛勒)

                                                      如果有误,请联系博主,博主会立即更改。请发邮件至 907765003@qq.com

LVS十种均衡算法 : http://www.linuxidc.com/Linux/2013-05/84249.htm

ARP抑制原理:http://www.ddvip.com/tech/100075689.html

wireshake抓包:http://www.centoscn.com/IT/2013/0331/180.html

centos6 LVS-DR模式---分析的更多相关文章

  1. 一个公网地址部署LVS/DR模式

    http://blog.chinaunix.net/uid-7411781-id-3436142.html 一个公网地址部署LVS/DR模式   网上看了很多关于LVS的文章,在选取2种模式LVS/D ...

  2. lvs dr 模式请求过程

    一. lvs dr 模式请求过程 1.整个请求过程如下: client在发起请求之前,会发一个arp广播的包,在网络中找"谁是vip",由于所有的服务器,lvs和rs都有vip,为 ...

  3. LVS DR模式 负载均衡服务搭建

    LVS 负载均衡 最近在研究服务器负载均衡,阅读了网上的一些资料,发现主要的软件负载均衡方案有nginx(针对HTTP服务的负载均衡),LVS(针对IP层,MAC层的负载均衡).LVS模式工作在网络层 ...

  4. LVS DR模式搭建、keepalived+lvs

    1.LVS DR模式搭建 条件: 即三台机器,在同一内网. 编辑脚本文件:/usr/local/sbin/lvs_dr.sh #! /bin/bashecho 1 > /proc/sys/net ...

  5. LVS DR模式搭建 keepalived lvs

    LVS DR模式搭建• 三台机器 • 分发器,也叫调度器(简写为dir)172.16.161.130 • rs1 172.16.161.131 • rs2 172.16.161.132 • vip 1 ...

  6. lvs之 lvs+nginx+tomcat_1、tomcat_2+redis(lvs dr 模式)

    前提:已经安装好 lvs+nginx+tomcat_1.tomcat_2+redis环境 ,可参考 (略有改动,比如tomcat_1.tomcat_2安装在两台机器上,而不是单机多实例 ,自行稍稍变动 ...

  7. CentOS下LVS DR模式负载均衡配置详解

    一安装LVS准备: 1.准备4台Centos 6.2 x86_64 注:本实验关闭 SELinux和IPtables防火墙. 管理IP地址 角色 备注 192.168.1.101 LVS主调度器(Ma ...

  8. Keepalived+LVS DR模式高可用架构实践

    Keepalived最初是为LVS设计,专门监控各服务器节点的状态(LVS不带健康检查功能,所以使用keepalived进行健康检查),后来加入了VRRP(虚拟路由热备协议(Virtual Route ...

  9. Linux centosVMware Linux集群架构LVS DR模式搭建、keepalived + LVS

    一.LVS DR模式搭建 三台机器 分发器,也叫调度器(简写为dir) davery :1.101 rs1 davery01:1.106 rs2 davery02:11.107 vip 133.200 ...

  10. LVS DR模式实验

    LVS DR模式实验 三台虚拟机,两个台节点机(Apache),一台DR实验调度机 一:关闭相关安全机制 systemctl stop firewalld iptables -F setenforce ...

随机推荐

  1. Servlet请求头response应用简单案例

    Servlet请求头response应用简单案例:访问AServlet重定向到BServlet,5秒后跳到CServlet,并显示图片: AServlet package cn.yzu; import ...

  2. thinkphp测试方法

    1.如果是单个函数可以使用命令行的模式调试. 2.如果是公用函数可以新增一个控制器函数来测试: 如测试这条公共函数

  3. Android:res之shape制作圆角、虚线、渐变

    xml控件配置属性 android:background="@drawable/shape" 标签 corners ----------圆角gradient ----------渐 ...

  4. JAVA Day4

                                        循  环   所有循环的流程   声明循环变量-->判断循环条件-->执行循环操作-->更新循环变量 不断执2 ...

  5. MySql数据库安装&修改密码&开启远程连接图解

    相关工具下载地址: mysql5.6 链接:http://pan.baidu.com/s/1o8ybn4I密码:aim1 SQLyog-12.0.8 链接:http://pan.baidu.com/s ...

  6. 《DSP using MATLAB》示例Example4.3 双边序列

  7. bean之间的关系:继承、依赖

     继承 这里说的继承和java的继承是不一样的,不是父类子类.但思想很相似,是父bean和子bean 1.父bean是一个实例时.它本身是一个完整的bean 2.父bean是模板,抽象bean,不能被 ...

  8. 我的c++学习(5)switch语句详解

    #include "stdafx.h" #include<iostream> using namespace std; #include<iomanip> ...

  9. BFS HDOJ 2102 A计划

    题目传送门 题意:中文题面 分析:双层BFS,之前写过类似的题.总结坑点: 1.步数小于等于T都是YES 2. 传送门的另一侧还是传送门或者墙都会死 3. 走到传送门也需要一步 #include &l ...

  10. thrift 学习

    入门教程: http://blog.zhengdong.me/2012/05/10/hello-world-by-thrift-using-java