LVS的DR模式
请求由LVS接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过LVS。
DR模式下需要LVS和绑定同一个VIP(RS通过将VIP绑定在loopback实现)。
一个请求过来时,LVS只需要将网络帧的MAC地址修改为某一台RS的MAC,该包就会被转发到相应的RS处理,注意此时的源IP和目标IP都没变,LVS只是做了一下移花接木。
RS收到LVS转发来的包,链路层发现MAC是自己的,到上面的网络层,发现IP也是自己的,于是这个包被合法地接受,RS感知不到前面有LVS的存在。
而当RS返回响应时,只要直接向源IP(即用户的IP)返回即可,不再经过LVS。
DR模式是性能最好的一种模式。
用本身做广播地址和把子网掩码设成4个255就不会造成ip地址冲突了,否则lvs将不能正常转发访问请求。
DR模式中LVS主机与实际服务器都有一块网卡连在同一物理网段上。
IP分配
VIP:10.10.3.170
RIP1:10.10.3.140
RIP2:10.10.3.141
1、安装所需的依赖包
yum install -y wget make kernel-devel gcc gcc-c++ libnl* libpopt* popt-static
2、创建一个软链接,防止后面编译安装ipvsadm时找不到系统内核
ln -s /usr/src/kernels/2.6.32-358.18.1.el6.x86_64/ /usr/src/linux
3、下载安装ipvsadm
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
tar zxvf ipvsadm-1.26.tar.gz
cd ipvsadm-1.26
make && make install
4、编写并运行脚本(LVS服务器的脚本)
vi lvs.sh
#!/bin/bash VIP=10.10.3.170
RIP1=10.10.3.140
RIP2=10.10.3.141 /etc/rc.d/init.d/functions logger $0 called with $1
case "$1" in start)
echo " start LVS of DirectorServer"
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
echo "1" >/proc/sys/net/ipv4/ip_forward #Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g #Run LVS
/sbin/ipvsadm
;;
stop)
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
;;
*) echo "Usage: $0 {start|stop}"
exit 1
esac
注:/sbin/ipvsadm -A -t $VIP:80 -s rr (rr代表轮询,还有分配方式)
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g (-g代表DR模式,还有其他模式)
5、给脚本加权限,并执行
chmod +x lvs.sh
chmod 755 /etc/rc.d/init.d/functions
./lvs.sh start
6、配置后端的WEB服务器脚本
vi realserver.sh
#!/bin/bash
# 2013-09-07 by kgdxpr
VIP=10.10.3.170
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
#受限广播,它不被路由发送,但会被送到相同物理网络段上的所有主机IP地址的网络字段和主机字段全为1就是地址255.255.255.255
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
7、给脚本加权限,并执行
chmod +x realserver.sh chmod 755 /etc/rc.d/init.d/functions
./realserver.sh start
--------------------------------------------------------------------------
Realserver VIP自动设置脚本:
#vim /etc/init.d/vipd #!/bin/bash
# Script to start LVS DR virtual server.
# description: LVS DR virtual server
# chkconfig:
. /etc/rc.d/init.d/functions
VIP1=10.1.1.18
VIP2=10.1.1.19
host=`/bin/hostname`
case "$1" in
start)
# Start LVS-DR virtual server on this machine.
/sbin/ifconfig lo down
/sbin/ifconfig lo up
echo > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo > /proc/sys/net/ipv4/conf/lo/arp_announce
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ifconfig lo: $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
/sbin/ifconfig lo: $VIP2 broadcast $VIP2 netmask 255.255.255.255 up
/sbin/route add -host $VIP1 dev lo:
/sbin/route add -host $VIP2 dev lo:
;;
stop)
# Stop LVS-DR virtual server loopback device(s).
/sbin/ifconfig lo: down
/sbin/ifconfig lo: down
echo > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo > /proc/sys/net/ipv4/conf/lo/arp_announce
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_announce
;;
status)
# Status of LVS-DR virtual server.
islothere1=`/sbin/ifconfig lo: | grep $VIP1`
islothere2=`/sbin/ifconfig lo: | grep $VIP2`
isrothere1=`netstat -rn | grep "lo" | grep $VIP1`
isrothere2=`netstat -rn | grep "lo" | grep $VIP2`
if [ ! "$islothere1" -o ! "$isrothere1" ];then
echo "LVS-DR virtual server 10.1.1.18 Stopped."
else
echo "LVS-DR virtual server 10.1.1.18 Running."
fi
if [ ! "$islothere2" -o ! "$isrothere2" ];then
echo "LVS-DR virtual server 10.1.1.19 Stopped."
else
echo "LVS-DR virtual server 10.1.1.19 Running."
fi
;;
*)
# Invalid entry.
echo "$0: Usage: $0 {start|status|stop}"
exit
;;
esac #chkconfig --add vipd
LVS的DR模式的更多相关文章
- LVS:DR模式(Direct Routing)部署实验
本文介绍怎样在kvm的虚拟环境下,部署实验LVS的DR模式.包含网络结构图,怎样配置.以及使用tcpdump分析ip包. 网络结构图 kvm ...
- LVS的DR模式负载均衡
参考项目:http://www.cnblogs.com/along21/p/7833261.html#auto_id_3 LVS的DR模式实现负载均衡 1.环境 lvs-server :192.168 ...
- Lvs Keepalive DR模式高可用配置
Lvs Keepalive DR模式配置 一.环境 #DIP# eth0:192.168.233.145#VIP# eth0:0 192.168.233.250/32 #RIP1:192.168.23 ...
- lvs中dr模式配置脚本
1 dr模式介绍 1.1 lvs的安装 安装具体解释:http://blog.csdn.net/CleverCode/article/details/50586957. 1.2 lvs模式 lvs有三 ...
- lvs部署-DR模式
DR模式 角色 IP地址 备注 LVS负载均衡器 192.168.119.132 VIP:192.168.119.150 ipvsadm http_Real server 192.168.119 ...
- CentOS6.4 配置LVS(DR模式)
DR模式中LVS主机与实际服务器都有一块网卡连在同一物理网段上. IP分配 VIP:10.10.3.170 RIP1:10.10.3.140 RIP2:10.10.3.141 1.安装所需的依赖包 y ...
- LVS的DR模式测试案例<仅个人记录>
初始概念 大家都知道LVS,是章文嵩博士创建的,所以首先推一下主站吧!http://zh.linuxvirtualserver.org/ LVS集群分为三层结构: 负载调度器(load balance ...
- LVS+keepalived DR模式配置高可用负载均衡集群
实验环境 LVS-Master 10.0.100.201 VIP:10.0.100.203 LVS-Slave 10.0.100.204 WEB1-Tomcat 10.0.2.29 gat ...
- lvs 中DR模式负载均衡及keepalived
lvs DR配置 LVS负载均衡:三种负载均衡模式:DR,TUN(ip隧道),NAT,这里我们介绍DR模式 server1: 首先,配置server机yum源 方便后期实验流畅vim /etc/yum ...
随机推荐
- Python中的类(classes)
Python的类机制使用尽可能少的新语法和语义将类引入语言.python的类提供了面向对象程序设计语言所有的 标准特性:类继承机制允许有多个基类,一个派生类可以覆盖基类中的任何方法,一个方法可以使用相 ...
- 一个经典的PHP加密解密算法
项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理.最常见的应用在用户登录以及一些API ...
- Jenkins进阶-Gitlab使用Webhook实现Push代码自动部署(3)
1.Jenkins 安装完成以后,首先我们在Jenkins中需要安装一下,Gitlab Hook Plugin 插件: 2.插件安装完成我们创建任务,在任务重构建触发器下获取回调URL: 注意: 注意 ...
- Python 中的变量
Python采用基于值得内存管理模式,赋值语句的执行过程是:首先把等号右侧标识的表达式计算出来,然后在内存中找一个位置把值存放进去,最后创建变量并指向这个内存地址.Python中的变量并不直接存储值, ...
- RDD之三:RDD创建方式
RDD创建方式 1)从Hadoop文件系统(如HDFS.Hive.HBase)输入创建.2)从父RDD转换得到新RDD.3)通过parallelize或makeRDD将单机数据创建为分布式RDD. 4 ...
- [UE4]使用PlayerController获取鼠标点击时的坐标
1,获取鼠标在当前场景中坐标系统的中的position,加入场景地图的范围是一千平方米,那么这个position的范围也是1000米x1000米. 注册鼠标事件 FInputActionBinding ...
- innerHTML与jquery里的html()区别介绍
我原本一直以为innerHTML和jquery里的html其实是完全一样的,jquery是多此一举了,直到我遇到一次问题 看个示例: 复制代码 代码如下: var tbody=document.c ...
- word2vec 的理解
1.CBOW 模型 CBOW模型包括输入层.投影层.输出层.模型是根据上下文来预测当前词,由输入层到投影层的示意图如下: 这里是对输入层的4个上下文词向量求和得到的当前词向量,实际应用中,上下文窗口大 ...
- tensorflow入门资料
google出的说明文档 tensorflow_manual_cn.pdf google出的视频 https://www.zhihu.com/question/41667903/answer/1306 ...
- unicode 转码 ansi
#include "stdafx.h"#include <Windows.h>#include <stdio.h> HRESULT SomeCOMFunct ...