`

php负载均衡

    博客分类:
  • php
阅读更多
过去当运行一个大的web应用时候意味着需要运行一个大型的web服务器。因为你的应用吸引了大量的用户,你将不得不在你的服务器里增加更多的内存和处理器。今天,“大型服务器”模式已经过去,取而代之的是大量的小服务器,使用各种各样的负载均衡技术。

  “更多小服务器”的优势超过过去的“大型服务器”模式体现在两个方面:

  1. 如果服务器宕机,那么负载均衡系统将停止请求到宕机的服务器,转而分发负载到其他正常运行的服务器上。

  2. 扩展你的服务器更加容易。你要做的仅仅是加入新的服务器到负载均衡系统。不需要中断你的应用运行。

  所以,把握住这个机会。当然,代价就是这要求你的应用开发时增加一点复杂度。这就是本文要覆盖的内容。

  这时你可能对自己说:“但是我怎么知道我正在使用负载均衡呢?”。最诚实的回答是,如果你正在问这个问题,那么答案是你多半没有在使用负载均衡 系统并且你的系统不需要考虑这个问题。大多数情况,当应用成长足够大的规模时,负载均衡就需要明确提出和设置了。然而,我也偶尔看见虚拟主机公司为客户的 应用做这个负载均衡,或者像下面描述的那样要自己来做。

  注意,我一直提“web应用”而不是website,这是想区分“web应用”是那些复杂的站点往往涉及服务器端编程和数据库,而不是website那样只显示简单的静态内容。

  1. PHP文件

  第一个问题是,如果你有大量的小型服务器,你怎么把你的php文件上传到所有的服务器上?有如下的方法供你参考:

  ◆分别上传所有的文件到每一个服务器 , 这种方法带来的问题是:想像一下你有20个服务器,那么上传过程中这将很容易导致错误,并且更新时极有可能导致不同服务器上有不同版本的文件。

  ◆使用 ‘rsync ‘ (或类似的软件) . 这样的工具能同步本地目录和多个远程主机目录上的文件。

  ◆使用版本控制软件(如subversion ) . 这是我最喜欢的方法。用它可以很好地维护我得代码,当发布我的应用时,可以在每一个服务器上运行svn update命令同步。这种方法也使切换服务器得代码到过去的某一个版本更加容易。

  ◆使用一个文件服务器(你可能发现NFS 非常适合做这件事情). 这种方式是使用一个文件服务器来存放你的web应用. 当然,如果你的文件服务器宕机,那么多所有你的站点将不能使用。这时,你就需要花费更多的开支来恢复它。

  选择哪种方式依赖于你的需求和你掌握的技能。如果你使用版本控制系统,那么你可能得计划一个方法如果同时执行一个更新命令更新所有服务器上的代码。然而,如果使用文件服务器,你就要实现一些失败恢复机制,防止万一服务器宕机导致请求失败。

  2. 文件上传

  当只有一台服务器时,文件上传不是一个问题。但是当我们有多台服务器时,那么上传的文件应该怎么存放呢?上传文件的问题和跨服务器php文件存储是类似的。下面是几种可能的方案:

  ◆把文件存储到数据库中。大多数数据允许存储二进制数据。当你请求文件下载时,访问数据把二进制数据和相应的文件名和类型输出给用户。在使用这种方案前应该考虑数据库怎样存储你的文件。该方法的问题在于如果数据库服务器宕机将使文件不可用。

  ◆在一个文件服务器上存储上传的文件 . 与前面的介绍一样,你要安装一个文件服务器让所有web服务器共享,把所有上传的文件上传到这里,上传后所有的web服务器就都可以使用它。但是,如果文件服务器宕机,那么可能发生图像文件下载中断。

  ◆设计你自己的上传机制传输文件到服务器到每一个服务器 . 这个方法没有单个文件服务器或者数据库方案的缺陷,但是将增加你代码的复杂度。例如,如果上传到多个服务器过程中,服务器宕机,你要怎么处理?

  用数据库存储上传文件但是设计一个文件缓存机制是一个不错的方案。当服务器接收一个文件下载请求时,首先检查缓存系统中是否有该文件,如果发现那么从缓存系统下载,否则从数据库读取并把它缓存到文件系统中。

  3. 会话(Sessions)

  如果你熟悉php的session 处理,你将可能知道默认情况下,它存储session数据在服务器的临时文件里。而且,这个文件仅仅在你请求处理的那个服务器上,但是接下来的请求可能被 另外一个服务器处理,这将在另一个服务器上生成新的session。这导致session频繁地不被识别,如登录用户总是要求重新登录。

  我推荐的方案是,要么重新php内建的session处理机制存储session数据到数据库,或者实现你自己的机制保证发送一个用户的请求到同一台服务器。

  4. 配置(Configuration)

  尽管这个话题不是和php特别相关,我感觉还是有必要提及。当运行集群服务器时,用某种方法保持服务器之间的配置文件同步是一个好主意。如果配置文件不一致,可能导致一些非常奇怪的断断续续的行为导致很难排查这些问题。

  我推荐使用版本控制系统单独管理他们。这样你可以为不同的项目安装存储不同的php配置文件,也可以保持所有服务器配置文件同步。

  5. 日志(Logging)

  像配置问题一样,logging不是仅仅和php相关。但是对于保持服务器健康运行它仍然是非常重要的。没有正确的logging系统,你怎么知道如果PHP代码开始产生错误(在系统正式运行时,你总是关闭display_errors 设置,不是吗?)

  有几种方法你可以实现logging:

  1. 在每一个服务器上记录日志。 这是最简单的方法。每一个机器仅仅记录一个文件。好处是简单,可能只要很少的配置。但是,随着服务器数量的增多,监控每台服务器上的日志文件将变得非常困难。

  2. 记录日志到一个共享 这种方法每一个服务器仍然有这个日志文件,但是他们通过共享机制被存储在一个中央文件服务器上,这将使监控日志变得更简单。该方案的问题在于,如果文件服务器不可用将导致一个简单的日志不能写入问题最终导致整个应用崩溃。

  3. 记录日志到logging服务器 你可以使用一个logging软件,如syslog 来把所有的日志写到一个中央服务器。尽管这个方法要求更多的配置,但是他也提供了最健壮的方案。
分享到:
评论

相关推荐

    apache配置负载均衡

    Apache 配置负载均衡实现访问请求分流提高访问性能 Apache 配置负载均衡是将所有用户的访问压力分散到多台服务器上,也可以分散到多个 Tomcat 里,提高访问性能。负载均衡的主要目标是将用户的访问请求分流到多个...

    基于PHP的数据库负载均衡插件(读)

    用PHP写的可对读数据库进行负载均衡的插件,在连接数据库之前调用该插件的Get_con函数可获取数据库端连接地址,用户名密码等,通过轮询和权重两种算法(后面会加上LRU算法)进行数据库连接选择,目前支持集群形式的...

    基于LVS负载均衡的高性能Web站点设计与实现

    测试包括Apache与PHP-FPM的动态处理能力,Varnish与Apache的静态内容服务,Nginx的反向代理功能,以及LVS的负载均衡效果。这有助于发现并解决潜在问题,确保系统的稳定性和高性能。 4. **Varnish的优势与不足** ...

    linux下实现负载均衡

    在Linux环境下实现负载均衡,通常会使用到诸如LVS(Linux Virtual Server)这样的技术,它是一种高可用性集群解决方案,可以有效地将流量分发到多个服务器,提高系统的处理能力和响应速度,同时保证服务的连续性和...

    nginx负载均衡配置文件实例

    **Nginx负载均衡配置详解** Nginx是一款高性能的HTTP和反向代理服务器,它以其轻量级、高并发的特性在Web服务领域广泛应用。其中,Nginx的负载均衡功能是其重要特性之一,它能有效地分散网络流量,提高系统可用性和...

    F5负载均衡WEB服务器模拟

    ### F5负载均衡WEB服务器模拟知识点 #### 一、负载均衡与F5简介 负载均衡是一种网络技术,用于分配客户端请求或数据包到多个服务器上处理,以优化资源使用、提高响应速度和避免单一服务器过载。F5是业界领先的提供...

    IIS+TOMCAT集群负载均衡

    在构建高性能、高可用性的Web服务时,IIS(Internet Information Services)与TOMCAT的组合可以实现强大的负载均衡策略。本文档将深入探讨如何利用IIS作为前端代理服务器,与后端的TOMCAT应用服务器集群协同工作,以...

    网站架构之负载均衡必须要考虑的八个方案

    在构建高可用、高性能的网站架构时,负载均衡是至关重要的技术之一,它不仅能够提升网站的访问速度,还能确保系统的稳定性和可靠性。本文将基于标题“网站架构之负载均衡必须要考虑的八个方案”以及相关内容,深入...

    使用Nginx轻松实现开源负载均衡.rar

    于中、小型企业,如果没有资金去购买昂贵的四/七层负载均衡交换机,那么Nginx是不错的七层负载均衡选择,并且可以通过 Nginx Keepalived 实现 Nginx 负载均衡器双机互备,任意一台机器发生故障,对方都能够将虚拟IP...

    PHP开发负载均衡指南

    今天,’大型服务器’模式已经过去,取而代之的是大量的小服务器,使用各种各样的负载均衡技术。这是一种更可行的方法,将使硬件成本降至最低。 ‘更多小服务器’的优势超过过去的’大型服务器’模式体现在两个方面...

    lnmp搭建,负载均衡,nfs

    - **多台Nginx服务器负载均衡**:可以使用LVS或其他负载均衡技术实现多台Nginx服务器之间的负载分担。 - **NFS共享存储**:为了提高文件系统的一致性和访问效率,可以在集群中配置NFS作为共享存储,使得多个Nginx...

    PHP实现负载均衡下的session共用功能

    本文实例讲述了PHP实现负载均衡下的session共用功能。分享给大家供大家参考,具体如下: 最近忙于开发台湾运动彩券第四版的程序,所以已经很久没有上来写东西了,今天随便写点东西和大家分享. 首先说一下负载均衡,相信...

    PHP实现负载均衡的加权轮询

    ### PHP实现负载均衡的加权轮询 #### 知识点概述 负载均衡是网络技术中的一个重要概念,它主要用于在多个服务器之间分配网络流量或工作负载,以优化资源使用、提高响应速度并避免单点故障。加权轮询(Weighted ...

    阿里云-负载均衡服务SDK手册.pdf

    阿里云的负载均衡服务SDK手册提供了开发者们使用各种编程语言(如Java、Python、PHP和.NET)与阿里云负载均衡服务进行集成的详细指南。负载均衡服务的主要目标是分散网络流量,提高应用的可用性和性能,确保服务的...

    nginx负载均衡 nginx+tomcat tomcat实现负责均衡

    ### Nginx与Tomcat实现负载均衡的知识点详解 #### Nginx简介及特性 Nginx是一款由Igor Sysoev开发的高性能HTTP服务器和反向代理服务器,以其出色的稳定性和低系统资源消耗而著称。最初是为俄罗斯访问量排名第二的...

    php 高性能yii2框架开发高性能高可用负载均衡集群架构商城视频教程下载 .txt

    php 高性能yii2框架开发高性能高可用负载均衡集群架构商城视频教程下载

    nginx负载均衡

    【Nginx负载均衡】是网络服务器架构中的一个重要概念,主要目的是通过分散网络流量来提高系统的可用性和响应速度。Nginx作为一个高性能的HTTP和反向代理服务器,它能够有效地处理高并发请求,并且可以同时支持Rails...

    企业级web负载均衡完美架构

    【企业级Web负载均衡完美架构】是针对大型网站或电子商务平台设计的一种解决方案,旨在提高系统的稳定性和可扩展性。在这样的架构中,Nginx+Keepalived是核心组件,它们共同提供了高可用性和负载均衡功能。 Nginx是...

Global site tag (gtag.js) - Google Analytics