网站负载均衡解决方案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

网站负载均衡解决方案Web负载均衡(LoadBalancing),简单地说就是给我们的服务器集群分配“工作任务”,而采用恰当的分配方式,对于保护处于后端的Web服务器来说,非常重要。反向代理负载均衡反向代理服务的核心工作主要是转发HTTP请求,扮演了浏览器端和后台Web服务器中转的角色。因为它工作在HTTP层(应用层),也就是网络七层结构中的第七层,因此也被称为“七层负载均衡”。可以做反向代理的软件很多,比较常见的一种是Nginx。Nginx是一种非常灵活的反向代理软件,可以自由定制化转发策略,分配服务器流量的权重等。反向代理中,常见的一个问题,就是Web服务器存储的session数据,因为一般负载均衡的策略都是随机分配请求的。同一个登录用户的请求,无法保证一定分配到相同的Web机器上,会导致无法找到session的问题。解决方案主要有两种:配置反向代理的转发规则,让同一个用户的请求一定落到同一台机器上(通过分析cookie),复杂的转发规则将会消耗更多的CPU,也增加了代理服务器的负担。将session这类的信息,专门用某个独立服务来存储,例如redis/memchache,这个方案是比较推荐的。反向代理服务,也是可以开启缓存的,如果开启了,会增加反向代理的负担,需要谨慎使用。这种负载均衡策略实现和部署非常简单,而且性能表现也比较好。但是,它有“单点故障”的问题,如果挂了,会带来很多的麻烦。而且,到了后期Web服务器继续增加,它本身可能成为系统的瓶颈。配置文件样本:#usernobody;worker_processes1;#pidlogs/nginx.pid;events{worker_connections1024;}http{includemime.types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout65;upstream{server192.168.1.188:80weight=5;server192.168.1.158:80;}server{listen80;server_name{proxy_pass}}使用memcache同步session并协调缓存一旦使用了负载均衡,session就会存在同步问题,使用memcache同步session是个不错的解决方案。需要准备一个相对强大的memcache服务器,安装memcache服务。代码层将其他几个主机的seesion都指定到这台memcache服务器。相关文章阅读(提供了memcache的详细讲解涵盖:介绍、安装、使用等说明):《memcache缓存与session》地址:是什么?memcached是以LiveJournal旗下DangaInteractive公司的BradFitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。memcached与php结合原理memcache缓存数据形式memcache以键值对形式进行数据的保存,通过与php的结合memcahe可以将变量、数组、对象等数据保存到内存中。极大的提升了服务器缓存的效率。为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(LeastRecentlyUsed)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。开启php的memcache扩展php默认情况下并没有开启的memcache扩展,下面将详细讲解memcache扩展的安装。windows下安装memcache扩展访问php官网点击DLL下载对应windows版本的dll将dll复制到php/ext/修改php.iniextension=php_memcache.dll重启web访问即可开启linux下安装memcache扩展centOs:yuminstallphp-pecl-memcache从启php即可。或者在linux下编译安装php的扩展,下载地址同上php操作memcache缓存安装好了memcache服务和php的扩展,我们就可以使用php去操作memcache来实现缓存啦!PHP的Memcache客户端所有方法总结memcache类所有的方法列表如下:Memcache::add–添加一个值,如果已经存在,则返回falseMemcache::addServer–添加一个可供使用的服务器地址Memcache::close–关闭一个Memcache对象Memcache::connect–创建一个Memcache对象memcache_debug–控制调试功能Memcache::decrement–对保存的某个key中的值进行减法操作Memcache::delete–删除一个key值Memcache::flush–清除所有缓存的数据Memcache::get–获取一个key值不存在则返回falseMemcache::getExtendedStats–获取进程池中所有进程的运行系统统计Memcache::getServerStatus–获取运行服务器的参数Memcache::getStats–返回服务器的一些运行统计信息Memcache::getVersion–返回运行的Memcache的版本信息Memcache::increment–对保存的某个key中的值进行加法操作Memcache::pconnect–创建一个Memcache的持久连接对象Memcache::replace-对一个已有的key进行覆写操作Memcache::set–添加一个值,如果已经存在,则覆写Memcache::setCompressThreshold–对大于某一大小的数据进行压缩Memcache::setServerParams–在运行时修改服务器的参数读取并设置缓存代码实例?php//实例化memcache对象$memObj=newMemcache();//连接memcache服务器参数地址,端口(memcache的默认端口为11211)$memObj-connect('127.0.0.1',11211);//获取某个变量的值如果存在在返回变量的值否则返回false$var=$memObj-get('test');//判断缓存是否存在,不存在则连接数据库获取变量并保存到memcache服务器if(!$var){//连接数据库...此处省略例如返回值为'test....';$var='test....';$memObj-set('test',$var);//测试缓存过程输出个提示echo'缓存不存在.....';}echo$var;删除缓存?php//实例化memcache对象$memObj=newMemcache();//连接memcache服务器参数地址,端口(memcache的默认端口为11211)$memObj-connect('127.0.0.1',11211);//删除缓存$memObj-delete('test');清空缓存?php//实例化memcache对象$memObj=newMemcache();//连接memcache服务器参数地址,端口(memcache的默认端口为11211)$memObj-connect('127.0.0.1',11211);$memObj-flush();关闭连接?php//实例化memcache对象$memObj=newMemcache();//连接memcache服务器参数地址,端口(memcache的默认端口为11211)$memObj-connect('127.0.0.1',11211);$memObj-flush();$memObj-close();与php结合后memcache的值可以是普通变量、数组、对象等常见的php变量。使用memcache来保存session默认情况下session以文件形式保存在服务器端,当我们遇到大访问量、高并发时我们会对web服务器进行集群化处理。那么不同服务器之间的session共享会成为一个问题。使用memcache来保存session可以提高session的访问速度。同时可以解决session共享的问题。在php语言下使用memcache来保存session是非常容易的。使用php代码方式完成使用memcache来保存sessionini_set(session.save_handler,memcache);ini_set(session.save_path,tcp://127.0.0.1:11211);session_start();php.ini中全局设置修改php.inisession.save_handler=memcachesession.save_path=tcp://127.0.0.1:11211就是这么简单!赶紧试试吧^_^memcache图形化管理工具MemAdmin保存好了变量,我们经常想看看他们的值或者检测他们的状态。通过命令行我们可以完成这样的操作。但是命令行比较难懂。下面给大家介绍一款memcache图形化管理工具:MemAdmin下载地址:是一款可视化的Memcached管理与监控工具,使用PHP开发,体积小,操作简单。主要功能:服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控支持数据遍历,方便对存储内容进行监视支持条件查询,筛选出满足条件的KEY或VALUE数组、JSON等序列化字符反序列显示兼容memcache协议的其他服务,如TokyoTyrant(遍历功能除外)支持服务器连接池,多服务器管理切换方便简洁下载后获得一个压缩包memadmin-1.0.12.tar.gz将压缩文件解压后获得memadmin文件夹,将memadmin文件复制到项目目录下,通过网址直接访问运行即可。默认账号密码为adminadmin登录后即可开始管理memcache。亲自试试吧^_^网站系统的缓存机制的建立和优化讲完了Web系统的外部网络环境,现在我们开始关注我们Web系统自身的性能问题。我们的Web站点随着访问量的上升,会遇到很多的挑战,解决这些问题不仅仅是扩容机器这么简单,建立和使用合适的缓存机制才是根本。最开始,我们的Web系统架构可能是这样的

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功