集群(cluster):将一组计算机软/硬件连接起来,高度紧密的协作完成计算工作,其中的单个计算机通常称为节点。负载均衡集群(Load Balancing):通过负载均衡器,将负载尽可能平均分摊处理。

LVS(linux virtul server)linux虚拟服务,分为三层结构:

            调度器:上面的虚拟ip面向客户端,将请求发送到真实服务器上。

            服务器:真正的服务器,上面可以启很多服务器(web,mail,ftp)。

            共享存储:给服务器提供共享存储,是服务器拥有相同的内容。

lvs与iptables/netfilter类似,工作在INPUT链上,当客户端请求集群服务器时,LVS会强制修改报文,将报文发往POSTROUTING,再转发到节点服务器处理。两个模块:

            ipvsadm 管理集群的命令工具;

            ipvs 在内核上具体操作;在2.4.23前的内核上没有。

三种模式:

NAT 地址转换
1、节点必须与调度器在同一网络
2、节点上的IP为私有IP,仅用于各节点和调度器之间通信(用组播通信)
3、调度器在客户端和服务器之间,负责所有通信进出
4、节点需将网关指向调度器
5、调度器支持端口映射(将80端口改为节点上的8080)
6、节点可以是任意类型操作系统,只要能提供服务
7、并发高是,调度器是瓶颈
DR(Direct Routing一般用在生产环境中)
1、节点要和调度器在同一物理网络(根据Mac转发)
2、节点上可以是公网IP(便于远程管理和监控)
3、调度器只负责入站请求,响应报文由节点直接发给客户端
4、节点网关不指向调度器
5、不支持端口映射
工作原理:
调度器DR和真实服务器RS上都有一块网卡都有VIP,但是,当客户端请求发到路由器时,路由会事先设置静态路由直接指向DR,或让RS拒绝接受ARP请求。DR接收到后,根据算法将请求负载在一台RS上,DR会将请求的目标MAC改为那个RS的MAC,而其他报头不会改变,RS收到后,查看目标ip和MAC都是自己,所以就会解封装、处理、直接回应给客户端,再不经过DR。 DR模式下RS两个内核参数:
arp_ignore:定义接受arp请求时响应级别(eth0:222.24.24.67、eth1:192.168.1.1)
0:只要本地配置VIP地址就会响应(有人不是192.168.1.1网段的,向eth0请求192.168.1.1的MAC,eth0也会回答)[请求的只要自己有就会说出去]
1:eth0接收到的是对192.168.1.1的查询,只会回应eth1的MAC,而不回应eth0的MAC。[请求什么说什么,不管是从哪个接口请求]
2:只有本接口收到请求本接口上MAC时才响应,不会响应不是请求本接口MAC的。(只有与222.24.24.67同网段的,向eth0请求222.24.24.67的MAC,才会回应,同理eth1,)[请求的和被请求的要在同一网段]
3:不回应该网络内的arp,只对设定的回应。
4~7:保留未用。
8:不回应任何arp请求。
arp_announce:将自己的地址向外通告的级别。
0:将本地任何接口的ip地址向外通告。
1:当请求时本网络内主机时,尽量不通告。
2:通告最合适的本机地址。
一般arp_ignore=1、arp_announce=2
TUN(隧道模式)
1、节点可以跨互联网
2、节点IP是公网IP
3、调度器负责入站请求
4、节点网关不指向调度器
5、不支持端口映射
工作原理:
服务器可能在不同的地方,相距比较远。在原来的ip报文再封装一个ip,源ip为DIP,目标ip为RIP,RS收到后解封装后会看见原来的ip封装。
支持的调度算法:
1、RR(Round Robin)“轮叫”:按顺序将请求轮流均等的分配到各节点。
2、WRR(Wighted Round Robin)“加权轮叫”:根据服务器的处理能力来调度请求,(多能多劳)
3、SH(Source Hashing)将请求的源IP地址,作为散列键从静态分配的散列表,找出对应的服务器,用于session绑定。
4、DH (Destination Hashing)将请求的目标地址,作为散列键从静态分配的散列表,找出对应的服务器
5、LC(Least Connections)最少链接,动态地将网络请求调度到已建立的链接数最少的服务器上
6、WLC(Weighted Least Connections)加权最少链接,具有较高权值的服务器将承受较多的活动连接负载,调度器可以自动问询真实服务器的负载情况,并动态地调整其权值(lvs默认用该算法)
7、sed 最短期望延迟 wlc的改进版,权重大的服务器事先被挑中,(active+1)*256/weight,权重大的服务器有很多的时候,权重小的服务器可能一个都没有。
8、nqnever queue 永不排队无需队列,如果有台 realserver的连接数=0就直接分配过去,不需要在进行sed运算。
9、LBLC(Locality-Based Least Connections)基于局部的最少链接,针对目标IP地址的负载均衡,目前主要用于Cache集群系统。根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器 是可用的,将请求发送到该服务器;若服务器不存在或超载,则用"最少链接"的原则选出一个可用的服务器,将请求发送到该服务器。
10、LBLCR(Locality-Based Least Connections with Replication)带复制的基于局部的最少链接,它要维护从一个 目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。
基本配置:
安装ipvsadm
uname -r #查看内核版本
2.6.18-194.el5
rpm -q kernel-devel #查看有无内核源码
package kernel-devel is not installed #于是下载kernel-devel-2.6.25-14.fc9.i686.rpm
rpm -i kernel-devel-2.6.18-398.el5.i686.rpm
#安装后会在/usr/src/kernels中有内核源代码
ln -s /usr/src/kernels/2.6.18-398.el5-i686/ /usr/src/linux #做软链接
NAT
ipvsadm:
格式:ipvsadm -A|E -t|u|f service-address [-s scheduler]
-A 增加集群服务
ipvsadm -A -t 222.24.24.1:80 -s rr #添加一个集群服务算法为rr
-E 改服务
-t tcp
-u udp
-f 防火墙标记号
-D删除服务
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m]
-a添加一个节点
-r表示节点服务器的ip
-g DR
-i TUN
-m NAT
ipvsadm -a -t 222.24.24.1:80 -r 192.168.1.1 -m #添加两个RS
ipvsadm -a -t 222.24.24.1:80 -r 192.168.1.2:8080 -m
-L/l 查看
-n表示用户数字ip表示主机
--rate 查看速率
--stats 查看统计
--timeout 显示超时(tcp tcpfin udp)
-C删除所有集群服务
-S保存配置 ipvsadm -S > ipvs.bak
-R加载配置 ipvsadm -R < ipvs.bak
(配置lvs是,节点之间的时间必须是一样的,误差不超过1S)
可以和调度器同步时间,ntpdate 222.24.24.1 (222.24.24.1是调度器)
或者修改/etc/ntp.conf DR 在DR上:
sysctl -w net.ipv4.conf.eth0.arp_announce=2 设置相应arp级别
sysctl -w net.ipv4.conf.all.arp_announce=2
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/ip_forward 打开转发功能
在RS:
ifconfig lo:0 222.24.24.1 配置VIP

lvs持久连接:

    PPC(持久端口连接)将来自同一客户端,对同一集群服务的请求始终定向至此前选定的RS。

    PCC(持久客户端连接)将来自同一客户端,对所有端口的访问,都定向到之前选定的一个RS。

    PNMPP(持久防火墙标记连接)将特定端口定义在同一RS,在防火墙PREROUTING链上。

lvs很优秀但是也有缺陷,没有技术支持,调度也会出现单点故障等等。

负载均衡之lvs的更多相关文章

  1. Linux负载均衡软件LVS简介

    Linux负载均衡软件LVS LVS集群的体系结构以及特点 1. LVS简介        LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起 ...

  2. Web基础架构:负载均衡和LVS

    在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务器(数据库.缓存等等). 一.负载均 ...

  3. [转]Web基础架构:负载均衡和LVS

    以下内容转载自:http://www.importnew.com/11229.html 在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服 ...

  4. 从一个开发的角度看负载均衡和LVS(转)

    原文:http://blog.hesey.net/2013/02/introduce-to-load-balance-and-lvs-briefly.html 在大规模互联网应用中,负载均衡设备是必不 ...

  5. Linux负载均衡软件LVS之二(安装篇)[转]

    Linux负载均衡软件LVS之二(安装篇) 2011-04-26 16:01:47 标签:lvs安装配置 linux lvs 休闲 linux高可用 原创作品,允许转载,转载时请务必以超链接形式标明文 ...

  6. 应用负载均衡之LVS(一):基本概念和三种模式

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  7. 负载均衡之-LVS

    负载均衡用的很多,这里对负载均衡做一个总结吧,总共包含下面几片博文. LVS负载均衡 keepalived负载均衡+高可用 haproxy负载均衡 nginx负载均衡 LVS负载均衡 LVS是章文嵩博 ...

  8. Nginx负载均衡和LVS负载均衡的比较分析(转)

    Nginx负载均衡和LVS负载均衡的比较分析 作者:匿名 来源:ChinaZ源码报导 浏览:1032次 2011-12-6 15:12:27 字号:大 中 小 [摘要]Nginx是一个高性能的 HTT ...

  9. LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

    一.LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现 ...

  10. Linux负载均衡软件LVS

    linux下的开源负载均衡软件LVS的安装.配置和使用.LVS是一个中国人创建和开发的开放源码项目,利用LVS可以构建高可用.高可靠的负载均衡集群,因此,利用Linux+LVS不但可以假设高性能的负载 ...

随机推荐

  1. 学习参考《高性能MySQL(第3版)》中文PDF+英文PDF

    学习mysql数据库时推荐看看mysql 领域的经典之作<高性能mysql(第3版)>,共分为16 章和6 个附录,内容涵盖mysql 架构和历史,基准测试和性能剖析,数据库软硬件性能优化 ...

  2. 题解 P2610 【[ZJOI2012]旅游】

    今天模拟赛考了这道题,那就来水一篇题解吧...(话说提高组模拟赛考什么省选题啊??) 这道题要我们求一条线段最多能经过的三角形数量. 回想小学学过的奥数,老师告诉过我们这样一件事:`点无大小 线无粗细 ...

  3. URAL 1513. Lemon Tale(简单的递推)

    写几组数据就会发现规律了啊. .但是我是竖着看的.. .还找了半天啊... 只是要用高精度来写,水题啊.就当熟悉一下java了啊. num[i] = 2*num[i-1]-num[i-2-k]. 15 ...

  4. 数字信号处理C语言集(1.1 随机数的产生)

     main.cpp 所建工程文件如下图所示 uniform.h #ifndef _UNIFORM_H_ #define _UNIFORM_H_ double uniform(double a,doub ...

  5. 弯道超车,换一个思路,避免addEventListener为同一个元素重复赋予事件

    addEventListener可以给同一个元素赋予多次同一个事件. 执行一次,就多一次事件效果.这不是我想要的. window.onload = function(){ var box = docu ...

  6. C# 利用反射和特性 来做一些事情

    特性代码: [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] public clas ...

  7. OpenCV中InputArray和OutputArray使用方法

    原文链接:http://blog.csdn.net/yang_xian521/article/details/7755101 看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArr ...

  8. SQL server无法启动服务,提示“错误1069: 由于登录失败而无法启动服务”

    原因:大部分情况是你修改了服务器系统的登录密码,而导致SQL服务无法启动. 解决方法:将sql server(mssql server)服务的登录密码改为系统登录密码或本地登录,如下操作步骤: 在wi ...

  9. Hexo 相册实践

    灵感 想给自已的blog添加一个相册功能.给生活中的点点滴滴留影记录.搜寻网络上给Next主题添加相册功能的基本上没有,只能重头到尾开始一点点的实践.    大致的想法:  1. 相册展示类似于归档一 ...

  10. WP8 学习笔记(001_环境配置)

    Step 1  WP8 的开发要求64位操作系统,Windows 8及以上版本,需要激活版,建议网上买一个注册码.详见安装双系统. Step 2 安装好系统并已经激活之后,需要安装Windows Ph ...