LVS实战1
(一)、NAT模式:
NAT模型:地址转换类型,主要是做地址转换,类似于iptables的DNAT类型,它通过多目标地址转换,来实现负载均衡;
特点和要求:
- 1、LVS(Director)上面需要双网卡:DIP(内网)和VIP(外网)
- 2、内网的Real Server主机的IP必须和DIP在同一个网络中,并且要求其网关都需要指向DIP的地址
- 3、RIP都是私有IP地址,仅用于各个节点之间的通信
- 4、Director位于client和Real Server之间,负载处理所有的进站、出站的通信
- 5、支持端口映射
- 6、通常应用在较大规模的应用场景中,但Director易成为整个架构的瓶颈!

环境:virtualbox虚拟3台centos6.3虚拟机,拓扑如上
Directior:对外 192.168.1.103 ,对内 192.168.0.1
server1:192.168.0.2
server2:192.168.0.3
1、Director上安装ipvsadm:
yum install ipvsadm
2、开启路由转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
3、server1上建一个简单的网页文件
echo "I'm Server1" >index.html
server2创建一个简单的网页文件
echo "I'm Server2" >index.html
4、使用pyhon的SimpleHTTPServer 模块启动一个简单的http服务器:
python -m SimpleHTTPServer 80
5、在Director上配置ipvs的定义:使用模式以及算法
ipvsadm -A -t 192.168.1.103:80 -s rr
ipvsadm -a -t 192.168.1.103:80 -r 192.168.137.20 -m
ipvsadm -a -t 192.168.1.103:80 -r 192.168.137.30 -m
ipvsadm -L -n
打开浏览器测试访问:

页面轮流交替出现,确实按照RR算法进行调度。
6、改成WLC算法,权重定义为3比1
ipvsadm -A -t 192.168.1.103:80 -s wlc
ipvsadm -a -t 192.168.1.103:80 -r 192.168.0.2 -m -w 3
ipvsadm -a -t 192.168.1.103:80 -r 192.168.0.3 -m -w 1
ipvsadm -L -n
7、另一台机子上使用ab测试:
ab -c 10 -n 10000 http://192.168.1.103/index.html
8、查看结果:
[root@localhost ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.103:80 wlc
-> 192.168.0.2:80 Masq 3 0 7306
-> 192.168.0.3:80 Masq 1 0 2696
ps:其它算法可自行测试
(二)DR模式:
特点和要求
- 1、各个集群节点必须和Director在同一个物理网络中
- 2、RIP地址不能为私有地址,可以实现便捷的远程管理和监控
- 3、Director仅仅负责处理入站请求,响应报文则由Real Server直接发往客户端
- 4、集群节点Real Server 的网关一定不能指向DIP,而是指向外部路由
- 5、Director不支持端口映射
- 6、Director能够支持比NAT多很多的Real Server
原理:
DR模型:直接路由模型,每个Real Server上都有两个IP:VIP和RIP,但是VIP是隐藏的,就是不能提高解析等功能,只是用来做请求回复的源IP的,Director上只需要一个网卡,然后利用别名来配置两个IP:VIP和DIP
Director在接受到外部主机的请求的时候转发给Real Server的时候并不更改目标地址,只是通过arp解析的MAC地址进行封装然后转给Real Server,Real Server在接受到信息以后拆除MAC帧封装,然后直接回复给CIP
环境:virtualbox虚拟3台centos6.3虚拟机,拓扑如上
Directior:eth0:192.168.1.103 eh0:0(vip):192.168.0.101
server1: eth0:192.168.1.104 lo:0(vip):192.168.1.101
server2: eth0:192.168.1.105 lo:0(vip):192.168.1.101
通信原理:
每个Real Server上都有两个IP:VIP和RIP,但是VIP是隐藏的,就是不能提高解析等功能,只是用来做请求回复的源IP的,Director上只需要一个网卡,然后利用别名来配置两个IP:VIP和DIP
Director在接受到外部主机的请求的时候转发给Real Server的时候并不更改目标地址,只是通过arp解析的MAC地址进行封装然后转给Real Server,Real Server在接受到信息以后拆除MAC帧封装,然后直接回复给CIP。
而此时需要关闭RS上的基于VIP的arp解析,在linux内核2.4以后,内核中都内置了这种功能,通过一些设置可以关闭其arp的功能:
arp_ignore:定义接收到ARP请求时的响应级别
0:默认,只用本地配置的有响应地址都给予响应
1:仅仅在目标IP是本地地址,并且是配置在请求进来的接口上的时候才给予响应(仅在请求的目标地址配置请求到达的接口上的时候,才给予响应)
arp_announce:定义将自己的地址向外通告时的级别
0:默认,表示使用配置在任何接口的任何地址向外通告
1:试图仅向目标网络通告与其网络匹配的地址
2:仅向与本地接口上地址匹配的网络进行通告
PS:要想让其功能生效,必须先设置相关设置,然后在配置IP地址等信息
1、在server1和server2上执行如下操作
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
service network restart
ifconfig lo:0 192.168.1.101 netmask 255.255.255.255 broadcast 192.168.1.101
route add -host 192.168.1.101 dev lo:0
2、测试server1和server2的web服务
[root@localhost ~]# curl 192.168.1.104
I'm Server1
[root@localhost ~]# curl 192.168.1.105
I'm Server2
3、Director上配置eth0:0网卡
ifconfig eth0:0 192.168.1.101/24
4、配置ipvs
ipvsadm -A -t 192.168.1.101:80 -s rr
ipvsadm -a -t 192.168.1.101:80 -r 192.168.1.104 -g
ipvsadm -a -t 192.168.1.101:80 -r 192.168.1.105 -g
5、查看配置
[root@localhost ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.101:80 rr
-> 192.168.1.104:80 Route 1 0 0
-> 192.168.1.105:80 Route 1 0 0
6、访问测试

(三)、TUN模式
其实数据转发原理和上面的dr模式是一样的,不过这个我个人认为主要是位于不同位置(不同机房);LB是通过隧道进行了信息传输,虽然增加了负载,可是因为地理位置不同的优势,还是可以参考的一种方案;
优点:负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。使用VS-TUN方式,如果你的负载均衡器拥有100M的全双工网卡的话,就能使得整个Virtual Server能达到1G的吞吐量。
不足:这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议;
http://www.weiyan.me/2012/05/115
http://lansgg.blog.51cto.com/5675165/1229421
http://linuxadmin.blog.51cto.com/2683824/1215900
http://jasonwu.me/2012/09/11/detailed_lvs_difference_between_the_three_models.html
LVS实战1的更多相关文章
- 高可用集群之keepalived+lvs实战-技术流ken
keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合 ...
- LVS入门篇(四)之LVS实战
一.LVS的NAT模式实战 1.环境说明: HOST OS role remask 192.168.56.12 Centos 7.4 LVS调度器(1.2.7) VIP:192.168.0.104 1 ...
- 高可用集群之keepalived+lvs实战2
keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合 ...
- 高可用集群之keepalived+lvs实战
keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合 ...
- LVS集群和Keepalived高可用实战
第四十章LVS集群和Keepalived高可用实战 一.ARP协议 1.概念 地址解析协议,即ARP(AddressResolutionProtocol),是根据IP地址获取物理MAC地址的一个TCP ...
- 搞懂分布式技术10:LVS实现负载均衡的原理与实践
搞懂分布式技术10:LVS实现负载均衡的原理与实践 浅析负载均衡及LVS实现 原创: fireflyc 写程序的康德 2017-09-19 负载均衡 负载均衡(Load Balance,缩写LB)是一 ...
- Linux云计算高端架构师+DevOps高级虚拟化高级进阶视频
课程大纲 1.开班典礼(1)_rec.mp4 2.开班典礼(2)_rec.mp4 3.开班典礼(3)_rec.flv 4.Linux操作系统系统安装及启动流程(1)_rec.flv 5.Linux操作 ...
- 大数据高并发系统架构实战方案(LVS负载均衡、Nginx、共享存储、海量数据、队列缓存)
课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普 ...
- 负载均衡集群企业级应用实战—LVS
一.负载均衡集群介绍 1.集群 ① 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技 ...
随机推荐
- PAT 1062. 最简分数(20)
一个分数一般写成两个整数相除的形式:N/M,其中M不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母 ...
- Cordova-安装Cordova过程详细解
官方网站Apache Cordova 前提是你电脑上 1:全局安装了Node 2:全局安装了npm 3:安装了java,并配置好环境 4:下载安装好android-sdk,并配好环境,注意安卓虚拟机可 ...
- 关于VMAX中存储资源池(SRP)
Storage Resource Pool中的相关元素 SRP由一个或多个数据池组成,这些数据池包含了预配置的数据(或TDAT)设备,可为创建和呈现给主机与应用程序的精简设备(TDEVS) 提供存储. ...
- 牛客练习赛13 A 幸运数字Ⅰ 【暴力】
题目链接 https://www.nowcoder.com/acm/contest/70/A 思路 暴力每一个子串 用 MAP 标记一下 然后 最后 遍历一遍 MAP 找出 出现次数最多 并且 字典序 ...
- 每天一个Linux命令(21)find命令_xargs参数
xargs 与 exec 的作用类似,但是xargs与find 一起使用时,一般配合管道一起使用. 前面的输出转换为后方指令的参数输入,使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的 ...
- 常用grads函数
GrADS的函数分两类, 一类是对格点/站点数据执行运算的,这一类我们姑且称之为分析函数; 另一类是脚本编程(gs)时使用的, 这后一类我们姑且称之为脚本函数. 第一类分析函数又分为格点分析和站点分析 ...
- mysql innobackupex备份实施
最近用innobackup进行备份测试,我们只备份一个innodb类型的库,数据大小大概50多G,用innobackupex大概用了5个多小时,但是mysqldump只用了大约2个小时,这让我很费解, ...
- server.xml笔记
本文总结自: http://www.importnew.com/26156.html 核心元素: 顶层元素: server service 连接器: connector 容器: engine > ...
- eDocEngine_3.0.4.273的手动安装
1.安装FastReport 5: 2.编译Shared3(如对Delphi2007,打开gtSharedD11.groupproj项目文件),将产生的bpl.dcp文件分别拷贝到C:\Users\P ...
- QT 按键处理 快捷键处理 shift + ctrl
原味地址:http://www.cnblogs.com/codingmylife/archive/2010/08/30/1812739.html CTRL+Enter发送信息的实现 在现在的即时聊天程 ...