当前位置: 首页 > 编程日记 > 正文

利用集群技术实现Web服务器的负载均衡

集群(Cluster)
所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。

负载均衡(Load Balance)
网络的负载均衡是一种动态均衡技术,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去。这种技术基于现有网络结构,提供了一种扩展服务器带宽和增加服务器吞吐量的廉价有效的方法,加强了网络数据处理能力,提高了网络的灵活性和可用性。

特点
(1)高可靠性(HA)。利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。
(2)高性能计算(HP)。即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析、化学分析等。
(3)负载平衡。即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。

LVS系统结构与特点
1. Linux Virtual Server:简称LVS。是由中国一个Linux程序员章文嵩博士发起和领导的,基于Linux系统的服务器集群解决方案,其实现目标是创建一个具有良好的扩展性、高可靠性、高性能和高可用性的体系。许多商业的集群产品,比如RedHat的Piranha、 Turbo Linux公司的Turbo Cluster等,都是基于LVS的核心代码的。
2. 体系结构:使用LVS架设的服务器集群系统从体系结构上看是透明的,最终用户只感觉到一个虚拟服务器。物理服务器之间可以通过高速的 LAN或分布在各地的WAN相连。最前端是负载均衡器,它负责将各种服务请求分发给后面的物理服务器,让整个集群表现得像一个服务于同一IP地址的虚拟服务器。
3. LVS的三种模式工作原理和优缺点: Linux Virtual Server主要是在负载均衡器上实现的,负载均衡器是一台加了 LVS Patch的2.2.x版内核的Linux系统。LVS Patch可以通过重新编译内核的方法加入内核,也可以当作一个动态的模块插入现在的内核中。
负载均衡器可以运行在以下三种模式下:
(1)Virtual Server via NAT(VS-NAT):用地址翻译实现虚拟服务器。地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址。外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点。优点是节省IP 地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器。
(2)Virtual Server via IP Tunneling (VS-TUN):用IP隧道技术实现虚拟服务器。这种方式是在集群的节点不在同一个网段时可用的转发机制,是将IP包封装在其他网络流量中的方法。为了安全的考虑,应该使用隧道技术中的VPN,也可使用租用专线。 集群所能提供的服务是基于TCP/IP的Web服务、Mail服务、News服务、DNS服务、Proxy服务器等等.
(3)Virtual Server via Direct Routing(VS-DR):用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此法,控制管理的计算机接收到请求包时直接送到参与集群的节点。优点是返回给客户的流量不经过控制主机,速度快开销少。
以四台服务器为例实现负载均衡:

安装配置LVS
1. 安装前准备:
(1)首先说明,LVS并不要求集群中的服务器规格划一,相反,可以根据服务器的不同配置和负载状况,调整负载分配策略,充分利用集群环境中的每一台服务器。如下表:
Srv Eth0 Eth0:0 Eth1 Eth1:0
vs1 10.0.0.1 10.0.0.2 192.168.10.1 192.168.10.254
vsbak 10.0.0.3 192.168.10.102
real1 192.168.10.100
real2 192.168.10.101
其中,10.0.0.2是允许用户访问的IP。
(2)这4台服务器中,vs1作为虚拟服务器(即负载平衡服务器),负责将用户的访问请求转发到集群内部的real1,real2,然后由real1,real2分别处理。 Client为客户端测试机器,可以为任意操作系统。
(3)所有OS为redhat6.2,其中vs1 和vsbak 的核心是2.2.19, 而且patch过ipvs的包, 所有real server的Subnet mask 都是24位, vs1和vsbak 的10.0.0. 网段是24 位。
2.理解LVS中的相关术语
(1) ipvsadm :ipvsadm是LVS的一个用户界面。在负载均衡器上编译、安装ipvsadm。
(2) 调度算法: LVS的负载均衡器有以下几种调度规则:Round-robin,简称rr;weighted Round-robin,简称wrr;每个新的连接被轮流指派到每个物理服务器。Least-connected,简称lc;weighted Least-connected,简称wlc,每个新的连接被分配到负担最小的服务器。
(3) Persistent client connection,简称pcc,(持续的客户端连接,内核2.2.10版以后才支持)。所有来自同一个IP的客户端将一直连接到同一个物理服务器。超时时间被设置为360秒。Pcc是为https和cookie服务设置的。在这处调度规则下,第一次连接后,所有以后来自相同客户端的连接(包括来自其它端口)将会发送到相同的物理服务器。但这也会带来一个问题,因为大约有25%的Internet 可能具有相同的IP地址。
(4) Persistent port connection调度算法:在内核2.2.12版以后,pcc功能已从一个调度算法(你可以选择不同的调度算法:rr、wrr、lc、wlc、pcc)演变成为了一个开关选项(你可以让rr、 wrr、lc、wlc具备pcc的属性)。在设置时,如果你没有选择调度算法时,ipvsadm将默认为wlc算法。 在Persistent port connection(ppc)算法下,连接的指派是基于端口的,例如,来自相同终端的80端口与443端口的请求,将被分配到不同的物理服务器上。不幸的是,如果你需要在的网站上采用cookies时将出问题,因为http是使用80端口,然而cookies需要使用443端口,这种方法下,很可能会出现cookies不正常的情况。
(5)Load Node Feature of Linux Director:让Load balancer 也可以处理users 请求。
(6)IPVS connection synchronization。
(7)ARP Problem of LVS/TUN and LVS/DR:这个问题只在LVS/DR,LVS/TUN 时存在。
3. 配置实例
(1) 需要的软件包和包的安装:
I. piranha-gui-0.4.12-2*.rpm (GUI接口cluster设定工具);
II. piranha-0.4.12-2*.rpm;
III. ipchains-1.3.9-6lp*.rpm (架设NAT)。
取得套件或mount到光盘,进入RPMS目录进行安装:
# rpm -Uvh piranha*
# rpm -Uvh ipchains*
(2) real server群:
真正提供服务的server(如web server),在NAT形式下是以内部虚拟网域的形式,设定如同一般虚拟网域中Client端使用网域:192.168.10.0/24 架设方式同一般使用虚拟IP之局域网络。
a. 设网卡IP
real1 :192.168.10.100/24
real2 :192.168.10.101/24
b.每台server均将default gateway指向192.168.10.254。 192.168.10.254为该网域唯一对外之信道,设定在virtual server上,使该网域进出均需通过virtual server 。
c.每台server均开启httpd功能供web server服务,可以在各real server上放置不同内容之网页,可由浏览器观察其对各real server读取网页的情形。
d.每台server都开启rstatd、sshd、rwalld、ruser、rsh、rsync,并且从Vserver上面拿到相同的lvs.conf文件。
(3) virtual server:
作用在导引封包的对外主机,专职负责封包的转送,不提供服务,但因为在NAT型式下必须对进出封包进行改写,所以负担亦重。
a.IP设置:
对外eth0:IP:10.0.0.1 eth0:0 :10.0.0.2 
对内eth1:192.168.10.1 eth1:0 :192.168.10.254
NAT形式下仅virtual server有真实IP,real server群则为透过virtual server.
b.设定NAT功能
# echo 1 >; /proc/sys/net/ipv4/ip_forward
# echo 1 >; /proc/sys/net/ipv4/ip_always_defrag
# ipchains -P forward MASQ
c.设定piranha 进入X-window中 (也可以直接编辑/etc/lvs.cf )
a).执行面板系统piranha
b).设定“整体配置”(Global Settings) 主LVS服务器主机IP:10.0.0.2, 选定网络地址翻译(预设) NAT路径名称: 192.168.10.254, NAT 路径装置: eth1:0
c).设定虚拟服务器(Virtual Servers) 添加编辑虚拟服务器部分:(Virtual Server)名称:(任意取名);应用:http;协议: tcp;连接:80;地址:10.0..0.2;装置:eth0:0; 重入时间:180 (预设);服务延时:10 (预设);加载监控工具:ruptime (预设);调度策略:Weighted least-connections; 持续性:0 (预设); 持续性屏蔽: 255.255.255.255 (预设); 按下激活:实时服务器部分:(Real Servers); 添加编辑:名字:(任意取名); 地址: 192.168.10.100; 权重:1 (预设) 按下激活
另一架real server同上,地址:192.168.10.101。
d). 控制/监控(Controls/Monitoring) 控制:piranha功能的激活与停止,上述内容设定完成后即可按开始键激活piranha.监控器:显示ipvsadm设定之routing table内容 可立即更新或定时更新。
(4)备援主机的设定(HA)
单一virtual server的cluster架构virtual server 负担较大,提供另一主机担任备援,可避免virtual server的故障而使对外服务工作终止;备份主机随时处于预备状态与virtual server相互侦测
a.备份主机:
eth0: IP 10.0.0.3
eth1: IP 192.168.10.102 同样需安装piranha,ipvsadm,ipchains等套件
b.开启NAT功能(同上面所述)。
c.在virtual server(10.0.0.2)主机上设定。
a).执行piranha冗余度 ;
b).按下“激活冗余度”;
冗余LVS服务器IP: 10.0.0.3;HEARTBEAT间隔(秒数): 2 (预设)
假定在…秒后进入DEAD状态: 5 (预设); HEARTBEAT连接埠: 539 (预设)
c).按下“套用”;
d).至“控制/监控”页,按下“在当前执行层添加PULSE DEAMON” ,按下“开始”;
e).在监控器按下“自动更新”,这样可由窗口中看到ipvsadm所设定的routing table,并且动态显示real server联机情形,若real server故障,该主机亦会从监视窗口中消失。
d.激活备份主机之pulse daemon (执行# /etc/rc.d/init.d/pulse start)。
至此,HA功能已经激活,备份主机及virtual server由pulse daemon定时相互探询,一但virtual server故障,备份主机立刻激活代替;至virtual server 正常上线后随即将工作交还virtual server。

LVS测试
经过了上面的配置步骤,现在可以测试LVS了,步骤如下:
1. 分别在vs1,real1,real2上运行/etc/lvs/rc.lvs_dr。注意,real1,real2上面的/etc/lvs 目录是vs2输出的。如果您的NFS配置没有成功,也可以把vs1上/etc/lvs/rc.lvs_dr复制到real1,real2上,然后分别运行。确保real1,real2上面的apache已经启动并且允许telnet。
2. 测试Telnet:从client运行telnet 10.0.0.2, 如果登录后看到如下输出就说明集群已经开始工作了:(假设以guest用户身份登录)
[guest@real1 guest]$——说明已经登录到服务器real1上。
再开启一个telnet窗口,登录后会发现系统提示变为:
[guest@real2 guest]$——说明已经登录到服务器real2上。
3. 测试http:从client运行iexplore http://10.0.0.2
因为在real1 和real2 上面的测试页不同,所以登录几次之后,显示出的页面也会有所不同,这样说明real server 已经在正常工作了。

相关文章:

AI EARTH再立功,达摩院包揽遥感AI领域三项冠军

人类赖以生存的地球表面积大约为5.1亿平方公里,而陆地面积仅占29.2%,这些土地历经数十亿年的演变及人类生活的改造,又被分割成耕地、森林、草地、水域及建筑等等,现在,AI正在成为管理陆地资源的新途径。 8月27日&#…

node.js写一个json服务

待续转载于:https://www.cnblogs.com/progfun/p/4212099.html

试过不用循环语句撸代码吗?

译者按: 通过使用数组的reduce、filter以及map方法来避免循环语句。 原文: Coding Tip: Try to Code Without Loops 译者: Fundebug 为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。 在前一篇博…

Linux 命令 top 学习总结

本文简介 概要: 学习总结 Linux 下的 top 命令 版本: Debian 5(Lenny), top: procps version 3.2.7 日期: 2010-11-17 永久链接: http://sleepycat.org/linux/linuxcommand/top.html I. 概述 学习总结 top 命令。主要学习自 man 手册。 Linux 下 top 命令:# toptop…

android 中改变按钮按下时的颜色

原文出处:http://blog.csdn.net/nmsoftklb/article/details/9087233 a、在开发中大家都会遇到这样情况,在一个xxx.xml文件中如果有两个以上的组件有一样的属性功能时,可以把它们共同的内容抽取出来 放在styles.xml文件来声明。 然后在相应的组…

实战:使用 Mask-RCNN 的停车位检测

作者:小白来源:小白学视觉Q如何使用Mask-RCNN检测停车位可用性?我最近做了一个项目,根据安全摄像头的照片来检测停车位是否可用或被占用。我的工作有局限性,我将进一步详细介绍这些局限性,但一旦这些问题得到解决&…

Microsoft Office Communications Server 2007 R2 RTM 简体中文企业版部署速成篇之二

写文章真是件累人的事情.\(^o^)/~.OCS2007R2中的CWA有很多新特性.今天我们来看看,接着昨天的开始.本篇基于速成篇之一.Go!在一中的环境中多了,一台WIN2008的服务器,并加入域.首先在DNS里面建两条别名,指向CWA服务器!完成后,记得重新启动DNS.然后,子啊功能和角色里面添加必要的组…

F5负载均衡会话保持技术及原理技术白皮书

1.什么是会话保持?在大多数电子商务的应用系统或者需要进行用户身份认证的在线系统中,一个客户与服务器经常经过好几次的交互过程才能完成一笔交易或者是一个请求的完成。由于这几次交互过程是密切相关的,服务器在进行这些交互过程…

一文全览机器学习建模流程(Python代码)

作者:泳鱼 来源:算法进阶引言随着人工智能时代的到来,机器学习已成为解决问题的关键工具,如识别交易是否欺诈、预测降雨量、新闻分类、产品营销推荐。我们接下来会详细介绍机器学习如何应用到实际问题,并概括机器学习应…

CSS Selector 3

转载于:https://www.cnblogs.com/dmdj/p/4213159.html

GSM中时隙、信道、突发序列、帧的解释

刚从论坛中看到有人问GSM中时隙、信道、突发序列、帧知识。今天我们数字通信正好上到这一块,我就根据我知道的和网上搜索的回答! 1、时分多路复用技术 FDMA:频分多址 TDMA:时分多址 CDMA:码分多址 为了提高通信道的利用率,使若干彼此独立信号…

网页效率之DNS查找和并行下载

首先,一个页面所需要访问的域名数量为n,那么就需要n次DNS查找,而DNS查找通常是blocking call,就是说在得到结果之后才能继续,所以越多的DNS查找,反应速度就越慢; 雅虎的YSlow插件的规则之一&…

赛门铁克开启“容灾即服务”时代

从本地备份到异地复制再到云容灾,随着云计算技术的快速发展,以及云服务这种模式逐渐被广大企业用户所接受,将数据备份到云已经是一种可行的数据保护解决方案。12 月 16日,赛门铁克公司推出了一款全新的灾难恢复解决方案Symantec D…

再谈“去虚拟化”对深度学习系统的必要性

作者 | 袁进辉上周写了一篇《浅谈GPU虚拟化与分布式深度学习框架的异同》,想不到引起很多关注和讨论。和朋友们讨论之后,觉得这个话题值得再发散一下:首先,文章只讨论了GPU“一分多”这种“狭义”的虚拟化,还存在另外的…

Enable PowerShell script execution policy

Open Windows PowerShell with administrator Run “Set-ExecutionPolicy UnRestricted –Force” 本文转自学海无涯博客51CTO博客,原文链接http://blog.51cto.com/549687/1918870如需转载请自行联系原作者520feng2007

Linux下DNS轮询与Squid反向代理结合

一、安装反向代理服务器 1.下载反向代理服务器软件采用squid,下载地址: http://www.squid-cache.org/Versions/v2/2.2/squid-2.2.STABLE5-src.tar.gz 下载后存放在/usr/local/squid/src目录里,文件名是 squid-2.2.STABLE5 ... 一…

从iOS证书申请到签名文件生成

2019独角兽企业重金招聘Python工程师标准>>> 苹果的应用在发布时(无论是Adhoc发布还是AppStore正式发布)都需要一个签名文件。这个签名文件是由苹果后台生成的,它把用户生成的证书,注册设备,AppID等统统连在…

GitHub 热榜:来膜拜这个流弊的 AI 框架!

近年来,人工智能正在进入一个蓬勃发展的新时期,这主要得益于深度学习和CV领域近年来的发展和成就。在这其中,卷积神经网络的成功也带动了更多学术和商业应用的发展和进步。为了避免“内卷”,更多人选择学习进阶,但是仍…

ASP.net:添加.net(2.0C#)FCKeditor在线编辑器步骤

1.下载本版本的编辑器压缩包。源码下载地址 2.解压缩打开文件夹拥有如下文件&#xff1a;3.在VS中添加“选择项”加载在此文件夹的Bin下FredCK.FCKeditorV2.dll。4.在你的网站的web.config的 <appSettings>枝节中加入&#xff1a;<appSettings><add key"FC…

安装varish作为缓存和代理

1&#xff0c;Varish的使用有两种模式&#xff1a;第1种 Nginx(负载)varish(缓存)WEB第2种 Varish&#xff08;缓存和负载&#xff09;web2&#xff0c;varish是以内存作为共享容器的&#xff1a;内存的大小决定了它的缓存容量。相对于主要以硬盘为存储的squid来说要高效的多…

英伟达 400 亿美元收购 ARM 受阻,不妨考虑 VMware?

作者 | 马超 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;目前半导体行业的发展可以用冰火两重天来形容&#xff0c;传统的桌面及移动SOC&#xff08;System on a Chip&#xff0c;系统级芯片&#xff09;市场已经基本停止增长&#xff0c;而云计算成了各…

单目和双目模式识别---游戏控制

http://v.youku.com/v_show/id_XMzQwMjUwNTY.html http://blog.csdn.net/anthonywanted/article/details/3024535转载于:https://www.cnblogs.com/pengkunfan/p/4220144.html

vsftpd企业应用快速部署文档

系统环境&#xff1a;centos 5.6 vsftpd&#xff1a;2.3.5 vsftpd是UNIX/Linux中非常安全且快速的FTP服务器&#xff0c;目前已经被许多大型站点所采用。vsftpd支持将用户名和口令保存在数据库文件或数据库服务器中。登录FTP有三种方式&#xff0c;匿名登录、本地用户登录和虚拟…

华为持续引领,开辟5G Massive MIMO绿色新赛道

今日&#xff0c;在华为举办的无线首届媒体沙龙暨MBBF2021预沟通会上&#xff0c;华为无线产品线首席营销官甘斌发表了“华为持续引领&#xff0c;开辟5G Massive MIMO绿色新赛道”的主题发言&#xff0c;分享了Massive MIMO的下一个突破性创新方向&#xff0c;引领绿色5G网络建…

MRTG—网络监控工具

最近一段时间在研究后台服务器测试技术&#xff0c;需要对后台服务器的各项性能指标进行实时监控和统计&#xff0c;也由此让我回想起之前公司曾经接触过的一个服务SNMP&#xff0c;SNMP是一种称之为简单网络管理协议的服务&#xff0c;主要是用于获取系统的流量、I/O、CPU、Me…

IBM会话设置和覆盖规则

为什么80%的码农都做不了架构师&#xff1f;>>> 中文版地址&#xff1a;http://www-01.ibm.com/support/docview.wss?uidswg21659740 Technote (troubleshooting) Problem(Abstract) It is possible to set the HTTP Session time-out in various places on th…

FOSCommentBundle功能包:设置Doctrine ODM映射

Step 2b: Setup MongoDB mapping The MongoDB implementation does not provide a concrete Comment class for your use,you must create one: MongoDB实现并不提供为您所用的具体评论类&#xff0c;您必须要创建一个。 1234567891011121314151617181920212223<?php// src…

lighttpd 负载均衡-反向代理+cache浅谈

Lighttpd有硬盘级别的cache-(mod_cache)和内存级别的cache(mod_mem_cache&#xff09;&#xff0c;内存级别的cache是国人的产品&#xff0c;我喜欢用lighttpd就是因为它具有2种选择的cache&#xff0c;像我的实际需求&#xff0c;由于系统存在很多图片&#xff0c;但是容量不大…

设置网页标题图标

网页图标如图上位置 设置语句如下&#xff1a; link rel:"SHORTCUT ICON", href:"/images/logo.ico"

DeepMind 的新强化学习系统,是迈向通用人工智能的一步吗?

作者&#xff1a;Ben Dickson来源&#xff1a;数据实战派前言尽管已经掌握围棋、星际争霸 2 和其他游戏&#xff0c;深度强化学习模型的主要挑战之一是&#xff0c;它们无法将其能力泛化到训练领域之外。这种限制使得将这些系统在现实世界中的应用变得非常困难&#xff0c;因为…