【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

为高流量网站量身定制的 Apache 配置最佳实践 (高流量网站负载分担)

用户投稿2024-04-18热门资讯17

负载分担

对于高流量网站,负载分担是至关重要的,可以通过以下方法实现:

1. 使用负载均衡器

使用负载均衡器可以将流量分配到多个服务器,以平衡负载并提高网站性能。负载均衡器可以是硬件设备或软件解决方案。

2. 启用虚拟主机

启用虚拟主机允许您在同一台服务器上托管多个网站。每个虚拟主机都有自己唯一的 IP 地址或端口号,从而实现流量分离并防止单个网站出现问题时影响其他网站。

3. 使用 Apache 模块

Apache 提供了多个模块可以用于负载分担,包括:

  • mod_proxy
  • mod_proxy_balancer
  • mod_cluster

其他最佳实践

除了负载分担,还有其他最佳实践可以优化 Apache 配置:

1. 启用 KeepAlive

启用 KeepAlive 允许客户端在多个请求之间保持与服务器的连接,从而减少建立连接的开销。

2. 优化 CacheControl 头

通过设置 CacheControl 头,您可以控制客户端缓存网站内容的时长。合理设置缓存头可以减少服务器负载并提高网站性能。

3. 启用 GZIP 压缩

启用 GZIP 压缩可以将文本文件压缩为更小的尺寸,从而减少带宽使用并加快加载时间。

4. 启用 SSL/TLS

启用 SSL/TLS 可以通过加密流量来保护网站免受未经授权的访问。这对于处理敏感信息(如信用卡号)的网站来说至关重要。

5. 使用 CDN

使用内容分发网络 (CDN) 可以将网站内容缓存到位于全球各地的边缘服务器上。这可以减少地理距离带来的延迟,并提高网站性能。

6. 监视和调整

持续监视网站流量和性能非常重要。通过使用工具(如 Apache Bench 或 LoadRunner),您可以识别性能瓶颈并相应地调整服务器配置。

示例配置

以下是针对高流量网站的示例 Apache 配置:

ServerName example.com启用 KeepAlive
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5优化 CacheControl 头
为高流量网站量身定制的 Apache 配置最佳实践 (高流量网站负载分担) 第1张Header set Cache-Control "public, max-age=3600"
启用 GZIP 压缩
Deflate OnDeflateMimeType text/html text/plain text/css text/javascript
启用 SSL/TLS
ServerAdmin [email protected] example.comSSLEngine onSSLCertificateFile /path/to/certificate.crtSSLCertificateKeyFile /path/to/private.key
使用 CDN
RewriteCond %{HTTP_HOST} ^example\.com$RewriteRule ^(.)$$1 [L]

结论

通过实施这些最佳实践,您可以优化 Apache 配置,以满足高流量网站的需求。这将有助于提高网站性能、可靠性和安全性,确保您的用户获得最佳的用户体验。


2022年高流量网站的8项最佳网络托管服务

在本文中,我们寻找高流量网站的最佳网站托管1。Kamatera——最好的低成本、高流量云主机2。LiquidWeb_完全管理的高流量托管3。FastComet_具有免费备份的高流量网站4。A2托管——用于高性能站点的Turbo服务器5。InterServer_最实惠的专用服务器6。Scala托管——云VPS托管,带宽充足7。SiteGround_完整托管WordPress8。DreamHost_易于使用的高流量网络主机哪个主机适合您的高流量网站?常见问题解答:许多网络主机声称提供高流量主机服务,但几乎没有人能够真正提供这种服务。例如,如果你的主机使用过时的网络硬件或软件,你的网站在高峰时间不会在不到1秒的时间内加载。你需要大量的带宽和一台与之匹配的web服务器,比如NGINX或LiteSpeed。

想象一下,为了增加网站流量而工作了数月或数年,却发现所有这些辛苦的工作都因为加载速度慢、安全性差,或者更糟糕的是,停机时间过长而白费了。

为流量密集型网站选择合适的主机将提供更好的用户体验。反过来,这有助于增加访客数量,获得更多线索,并产生更高的转化率。

I调查了几十个网络主机,看看它们是否能够处理严重的网络流量。我测试并研究了从web服务器资源和基础设施到带宽、内容交付网络(CDN)以及其他性能增强功能的所有内容。很多主持人都没有入选。就是这些。你赶时间吗?以下是针对高流量网站的最佳网络托管服务:

Kamatera_低成本、完全可定制、易于扩展的云托管3Liquidweb_完全管理的云托管,方便快捷的3FastComet_功能强大,使用免费备份来保护专用服务器

tryKamateraFree

5更多选项|比较表|FAQ

我们在高流量网站的最佳Web托管中寻找的是什么

这些是我在一个能够在负载下提供良好性能的Web主机中寻找的东西:

Serverresources。带宽、存储空间、CPU和RAM等是高峰流量期间用户体验顺畅的基础。我提到的主机主要提供SSD存储,并使其基础设施保持最新。服务器软件。我只列出了那些拥有能够处理密集流量的软件的网络主机。这些解决方案可以更好地利用您提供的服务器资源,从而为您的购买带来更多价值。数据中心位置。如果你的服务器位于世界的另一个地方,你的内容很有可能会延迟交付。更贴近受众有助于提供最佳的用户体验。可伸缩性。如果您的托管环境无法处理增加的容量,那么在最重要的时候,您可能会失去销售和品牌信任。如果你的网站开始获得数百万点击率,你的主机需要快速适应。网络容量。带宽对于快速加载网站至关重要,如果你获得了大量流量,这也是共享托管计划不好的主要原因之一。此列表中的主机不会对您的带宽设置不合理的限制。对性能至关重要的附加功能。这就是缓存、负载平衡器和SSL(TSL)加速器等高级工具发挥作用的地方。轻松访问这些网站会对流量大的网站产生重大影响。

1。Kamatera_最好的低成本、高流量云托管

如果您正在寻找一个价格合理、可以快速启动和运行的云解决方案,Kamatera的Express配置包括可扩展的最新技术,价格低廉。

Kamatera无论使用哪种软件包都能提供出色的带宽。无论您的配置如何,该连接都支持10Gbs,这将在很大程度上保证您的网络不会成为网站性能的瓶颈。有关Kamatera在我们的测试中的表现,请参阅我们的专家评审。

您可以随时选择Kamatera的完全管理云主机,每台服务器的月价是固定的。这是一个针对高端流量平台的简单且经济高效的定价模型。

有了一个类似LiquidWeb设置的现代基础设施,如果LiquidWeb太贵,您可以使用Kamatera节省大量资金。

Kamatera云主机计划名称存储带宽UramPricePlan名称存储带宽UramPriceLoud120GBSSD5TB1vCPU1GB$4.00更多详细信息Loud220GBSSD5TB1vCPU2GB$6.00更多详细信息Loud330GBSSD5TB2vCPU2GB$12.00更多详细信息更多详细信息1缺点是,您可以通过Kamatera的计划获得更少的数据传输,需要使用的附加组件也更少。但是,如果您的流量超过了包含的5TB传输,您可以使用第三方服务卸载任何占用大量空间的媒体。

也就是说,Kamatera的全球数据中心网络比InterServer或LiquidWeb的更大。Kamatera是中东为数不多的拥有数据中心的国际托管服务公司之一。如果你想让你的网站在这个地区快速加载,这家公司将帮助你获得结果。最先进的基础设施。除了为每台虚拟机提供10Gb外,Kamatera的服务器还运行在最新的XeonPlatinum处理器上。这些服务器速度很快。提供价格合理的托管服务。Kamatera的托管服务为您提供了物有所值的服务。不管你的服务器有多大,成本都是一样的。获取系统管理、迁移、防火墙管理等方面的帮助。对角线缩放。这是一种可靠且具有成本效益的方式来扩展资源。Kamatera逐步改进每台服务器,直到这样做不再划算(垂直扩展)。然后,它复制该机器或配置,直到满足您的需求(水平缩放)。速度优化负载平衡器带宽1TB至5TB数据中心位置适用于美国、欧洲、中东、亚洲地区的维护服务,收费固定,起价4.00美元,30天内免费试用Kamatera。LiquidWeb_完全管理的高流量托管

LiquidWeb的高性能托管计划专门设计用于处理数百万每日访客。主机提供了一些最佳的硬件和软件配置,可以承受不断增加的负载压力。

LiquidWeb排名第二的原因是它的高价格。然而,如果你不介意额外的费用,你会从它的托管解决方案中获得很多价值。别忘了速度等于收入。

LiquidWebVPSHostingPlanNames存储带宽UramPricePlanNames存储带宽UramPrice2GbRAMLinux40GBSSD10TB2vCPU2GB$15.00更多详细信息4GbRAMLinux100GBSSD10TB4vCPU4GB$25.00更多详细信息8GBRAMLinux150GBSSD10TB8vCPU8GB$35.00更多详细信息16GBRAMLinux200GBSSD10TB8vCPU16GB$95.00更多详细信息2Gb价值束Linux40GBSSD10TB2vCPU2GB$45.00更多详细信息4Gb价值捆绑Linux100GBSSD10TB4vCPU4GB$70.00更多详细信息GB价值捆绑Linux150GBSSD10TB8vCPU8GB$95.00更多详细信息16GB价值捆绑Linux200GBSSD10TB8vCPU16GB$145.00更多详细信息4GBRAM窗口100GBSSD10TB4vCPU4GB$80.00更多详细信息GBRAM窗口150GBSSD10TB8vCPU8GB$100.00更多详细信息16GBRAM窗口200GBSSD10TB8vCPU16GB$149.00更多详细信息4GB价值捆绑窗口100GBSSD10TB4vCPU4GB$90.00更多详细信息8GB价值捆绑窗口150GBSSD10TB8vCPU8GB$110.00更多详细信息16GB价值捆绑窗口200GBSSD10TB8vCPU16GB$189.00更多详细信息更多详细信息

LiquidWeb提供特殊的VPS捆绑包,包括高级商务电子邮件、控制面板许可证、100GB日常备份和网站修复。你可以通过任何云、VPS或专用计划购买大量附加组件。

它们似乎没有必要,但对于高流量网站来说,负载平衡器、CDN或安全和法规遵从性解决方案等东西通常是强制性的。在我们的专家评论中阅读更多关于LiquidWeb的内容。

如果你的网站需要额外的资源来处理高峰流量,你可以按需调整LiquidWeb的虚拟实例。根据需要分配尽可能多的CPU、RAM或存储空间,并在之后缩小规模。

特点:

现场修复和保护。这是一项相当新的服务,可以更好地保护LiquidWeb的客户端免受攻击,并确保安全合规性(如PCI和HIPAA)。它包括例行安全扫描以及防病毒、恶意软件清理和恢复服务。云Flare防火墙计划。此附加组件可用于LiquidWeb的所有托管计划,并免费包含在VPS捆绑包中。Cloudflarewebapplicationfirewall(WAF)为您的网站提供DDoS缓解和一系列关键性能优化。商务邮件。VPS捆绑包中免费提供的另一项附加服务是商务电子邮件服务,它为您提供大型电子邮件收件箱、免费且无限制的别名、支持移动应用程序的网络邮件聊天等等。完全管理的环境。一个专家团队负责迁移并提供入职支持。之后,您将得到全天候的基础设施管理。技术团队甚至会在必要时建议性能和安全优化。Speed优化服务器、浏览器和代理缓存;CDN;负载平衡器和宽度5TB到15TB的数据中心位于美国和欧洲,在大多数计划中都包括免费服务,起价15.00美元。FastComet_高流量网站,提供免费备份

如果你的目标受众在亚洲,FastComet是最适合你的网络主机之一。FastComet在亚太地区有四个数据中心,在世界各地有六个数据中心,可以保证任何流量密集型网站都有出色的性能。

与许多领先的网络托管解决方案一样,FastComet拥有自己的控制面板SmartContr

apache-httpd的三种模式

apache httpd-2.4 新增模块; mod_proxy_fcgi(可提供 fcgi 代理) mod_ratelimit(限制用户带宽) mod_request(请求模块,对请求做过滤) mod_remoteip(匹配客户端的 IP 地址) 对于基于 IP 的访问控制做了修改,不再支持 allow,deny,order 机制,而是统一使用 require进行 还新增以下几条新特性; 1、MPM 支持在运行时装载;不过要开启这种特性,在编译安装要启用这三种功能; --enable-mpms-shared=all --with-mpm=event 2、支持 event 3、支持异步读写 4、在每个模块及每个目录上指定日志级别 5、增强版的表达式分析器 6、每请求配置:<If>, <Elseif> 7、毫秒级别的 keepalive timeout 8、基于 FQDN 的虚拟主机不再需要 NameVirtualHost 指令 9、支持使用自定义变量 安装时HTTPd 可以添加许多模块 相关模块解析: --enable-so:支持动态共享模块(即打开 DSO 支持) --enable-rewrite:支持 url 重写 --enable-ssl:支持 ssl --with-ssl=/usr/local/openssl:指定 ssl 安装位置 --enable-cgi:启用 cgi --enable-cgid:MPM 使用的是 event 或 worker 要启用 cgid --enable-modules=most:明确指明要静态编译到 httpd 二进制文件的模块,<MODULE-LIST>为 空格分隔的模块名列表、all 或者 most,all 表示包含所有模块,most 表示包含大部分常用模 块 --enable-mpms-shared=all:启用 MPM 所有支持的模式,这样 event、worker、prefork 就会以 模块化的方式安装,要用哪个就在 里配置就好了。 --with-mpm=event:指定启用的 mpm 模式,默认使用 enevt 模式,在 apache 的早期版本 2.0 默认 prefork,2.2 版本是 worker,2.4 版本是 event. --with-pcre=/usr/local/pcre:支持 pcre --with-z=/usr/local/zlib:使用 zlib 压缩库 --with-apr=/usr/local/apr:指定 apr 的安装路径 --with-apr-util=/usr/local/apr-util:指定 apr-util 的安装路径 --enable-expires:激活彧通过配置文件控制 HTTP 的“Expires:”和“Cache-Control:”头内容,即 对网站图片、js、css 等内容,提供客户端浏览器缓存的设置。 这个是 apache 调优的一个重 要选项之一。 --enable-deflate:提供对内容的压缩传输编码支持,一般是 html、js、css 等内容的站点。 使 用此参数会打打提高传输速度,提升访问者访问的体验。 在生产环境中,这是 apache 调优 的一个重要选项之一。 Apache 的优化配置: apache 所运行的硬件环境都是对性能影响最大的因素,即使不能对硬件进行升级,也最好 给 apache 一个单独的主机以免受到其他应用的干扰。 各个硬件指标中,对性能影响最大的 是内存,对于静态内容(图片、javascript 文件、css 文件等),它决定了 apache 可以缓存多 少内容,它缓存的内容越多,在硬盘上读取内容的机会就越少,大内存可以极大提高静态站 点的速度;对动态高负载站点来说,每个请求保存的时间更多一些,apache 的 mpm 模块会 为每个请求派生出相应的进程或线程分别处理,而进程或线程的数量与内存的消耗近似成正 比,因此增大内存对提高动态站点的负载和运行速度也极为有利 其次是硬盘的速度,静态站点尤为突出,apache 不断的在读取文件并发送给相应的请求, 硬盘的读写是极其频繁的;动态站点也要不断的加载 web 程序(php 等),一个请求甚至要读 取十几个文件才能处理完成,因此尽可能的提高硬盘速度和质量对提高 apache 的性能是有 积极意义的。 最后是 cpu 和网络,cpu 影响的是 web 程序执行速度,网络影响流量大小。 apache 的工作模式: Apache HTTP 服务器被设计为一个强大的、灵活的能够在多种平台以及不同环境下工作的服 务器。 这种模块化的设计就叫做“多进程处理模块”(Multi-Processing Module,MPM),也叫 做工作模式。 Prefork 模式(一个非线程型的): 其主要工作方式是:当 Apache 服务器启动后,mpm_prefork 模块会预先创建多个子进程(默 认为 5 个),每个子进程只有一个线程,当接收到客户端的请求后,mpm_prefork 模块再将 请求转交给子进程处理,并且每个子进程同时只能用于处理单个请求。 如果当前的请求数将 超过预先创建的子进程数时,mpm_prefork 模块就会创建新的子进程来处理额外的请求。 Apache 总是试图保持一些备用的或者是空闲的子进程用于迎接即将到来的请求。 这样客户 端的请求就不需要在接收后等候子进程的产生。 由于在 mpm_prefork 模块中,每个请求对应一个子进程,因此其占用的系统资源相对其他 两种模块而言较多。 不过 mpm_prefork 模块的优点在于它的每个子进程都会独立处理对应 的单个请求,这样,如果其中一个请求出现问题就不会影响到其他请求。 Prefork 在效率上 要比 Worker 要高,但是内存使用大得多不擅长处理高并发的场景。 Apache 在 prefork 工作模式下影响性能的重要参数说明 # prefork MPM <IfModule mpm_prefork_module> StartServers 5 #apache 启动时候默认开始的子进程数 MinSpareServers 5 #最小的闲置子进程数 MaxSpareServers 10 #最大的闲置子进程数 MaxRequestWorkers 250 #MaxRequestWorkers 设 置 了 允 许 同 时 的 最 大 接 入 请 求 数 量 。 任 何 超 过MaxRequestWorkers 限制的请求将进入等候队列,在 apache2.3.1 以前的版本 MaxRequestWorkers 被称为 MaxClients,旧的名字仍旧被支持。 MaxConnectionsPerChild 500 #设置的是每个子进程可处理的请求数。 每个子进程在处理了“MaxConnectionsPerChild” 个请求后将自动销毁。 0 意味着无限,即子进程永不销毁。 虽然缺省设为 0 可以使每个 子进程处理更多的请求,但如果设成非零值也有两点重要的好处:1、可防止意外的内 存泄漏。 2、在服务器负载下降的时侯会自动减少子进程数。 因此,可根据服务器的负 载来调整这个值。 在 Apache2.3.9 之前称之为 MaxRequestsPerChild。 </IfModule> 注 1:MaxRequestWorkers 是这些指令中最为重要的一个,设定的是 Apache 可以同时处理 的请求,是对 Apache 性能影响最大的参数。 如果请求总数已达到这个值(可通过 ps -ef|grep http|wc -l 来确认),那么后面的请求就要排队,直到某个已处理请求完毕。 这就是系统资源 还剩下很多而 HTTP 访问却很慢的主要原因。 虽然理论上这个值越大,可以处理的请求就越 多,建议将初始值设为(以 Mb 为单位的最大物理内存/2),然后根据负载情况进行动态调整。 比如一台 4G 内存的机器,那么初始值就是 4000/2=2000。 注 2:prefork 控制进程在最初建立“StartServers”个子进程后,为了满足 MinSpareServers 设 置的需要创建一个进程,等待一秒钟,继续创建两 个,再等待一秒钟,继续创建四个……如 此按指数级增加创建的进程数,最多达到每秒 32 个,直到满足 MinSpareServers 设置的值为 止。 这种模式 可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。 MaxSpareServers 设置了最大的空闲进程数,如果空闲进程数大于这个 值,Apache 会自动 kill 掉一些多余进程。 这个值不要设得过大,但如果设的值比 MinSpareServers 小,Apache 会自 动把其调整为 MinSpareServers+1。 如果站点负载较大,可考虑同时加大 MinSpareServers 和 MaxSpareServers。 注 3:ServerLimit 和 MaxClients(MaxRequestWorkers)有什么区别呢? 是因为在 apache1 时代,控制最大进程数只有 MaxClients 这个参数,并且这个参数最大值为 256,并且是写死了的,试图设置为超过 256 是无效的,这是由于 apache1 时代的服务器硬 件限制的。 但是 apache2 时代由于服务器硬件的升级,硬件已经不再是限制,所以使用 ServerLimit 这个参数来控制最大进程数,ServerLimit 值>=MaxClient 值才有效。 ServerLimit 要放在 MaxClients 之前,值要不小于 MaxClients。 注 4:查看 Apache 加载的模块 [root@www ~]#apachectl -t -D DUMP_MODULES 或 [root@www ~]# apachectl -M 或 [root@www ~]# apachectl –l (小写 L,只显示静态模块) 如何查看 Apache 的工作模式呢?可以使用 httpd -V 命令查看,另外使用 httpd -l 也可以查 看到 注 5:如何修改 prefork 参数和启用 prefork 模式 1.[root@www ~]# vi /usr/local/http-2.4.23/conf/extra/ 2.[root@www ~]# vi /usr/local/http-2.4.23/conf/ LoadModule mpm_prefork_module modules/mod_mpm_ Include conf/extra/ 3 重启httpd Worker 模式(多线程多进程): 和 prefork 模式相比,worker 使用了多进程和多线程的混合模式,worker 模式也同样会先预 派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会 被分配到一个线程来服务。 线程比起进程会更轻量,因为线程是通过共享父进程的内存空间, 因此,内存的占用会减少一些,在高并发的场景下会比 prefork 有更多可用的线程,表现会 更优秀一些;另外,如果一个线程出现了问题也会导致同一进程下的线程出现问题,如果是 多个线程出现问题,也只是影响 Apache 的一部分,而不是全部。 由于用到多进程多线程, 需要考虑到线程的安全了,在使用 keep-alive 长连接的时候,某个线程会一直被占用,即使 中间没有请求,需要等待到超时才会被释放(该问题在 prefork 模式下也存在) 总的来说,prefork 方式速度要稍高于 worker,然而它需要的 cpu 和 memory 资源也稍多于 woker。 Apache 在 worker 工作模式下影响性能的重要参数说明 # worker MPM <IfModule mpm_worker_module> StartServers 3 #apache 启动时候默认开始的子进程数 MinSpareThreads 75 #最小空闲数量的工作线程 MaxSpareThreads 250 #最大空闲数量的工作线程 ThreadsPerChild 25 #每个子进程产生的线程数量 MaxRequestWorkers 400 #与 prefork 模式相同 MaxConnectionsPerChild 0 #与 prefork 模式相同 </IfModule> 注 1:Worker 由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的 ThreadsPerChild 线程数,各个线程独立地处理请求。 同样, 为了不在请求到来时再生成线 程,MinSpareThreads 和 MaxSpareThreads 设置了最少和最多的空闲线程数; 而 MaxRequestWorkers 设置了同时连入的 clients 最大总数。 如果现有子进程中的线程总数不 能满足负载,控制进程将派生新的子进程 MinSpareThreads 和 MaxSpareThreads 的最大缺省值分别是 75 和 250。 这两个参数对 Apache 的性能影响并不大,可以按照实际情况相应调节 。 注 2:ThreadsPerChild 是 worker MPM 中与性能相关最密切的指令。 ThreadsPerChild 的最大 缺省值是 64,如果负载较大,64 也是不够的。 这时要显式使用 ThreadLimit 指令,它的最大 缺省值是 。 注 3:Worker 模式下所能同时处理的请求总数是由子进程总数乘以 ThreadsPerChild 值决定 的,应该大于等于 MaxRequestWorkers。 如果负载很大,现有的子进程数不能满足时,控制 进程会派生新的子进程。 默认最大的子进程总数是 16,加大时 也需要显式声明 ServerLimit (系统配置的最大进程数量,最大值是)。 需要注意的是,如果显式声明了 ServerLimit, 那么它乘以 ThreadsPerChild的值必须大于等于MaxRequestWorkers,而且MaxRequestWorkers 必须是 ThreadsPerChild 的整数倍,否则 Apache 将会自动调节到一个相应值。 注 4:进程与线程的区别 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程 有自己独立的地址空间; (2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源 (3)线程是处理器调度的基本单位,但进程不是. (4)二者均可并发执行. 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对 应用的并发性。 进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程 序的运行效率。 Event 模式: 这是 Apache 最新的工作模式,是 worker 模式的变种,它把服务进程从连接中分离出来,一 worker 模式不同的是在于它解决了 keep-alive 长连接的时候占用线程资源被浪费的问题,在 event 工作模式中,会有一些专门的线程用来管理这些 keep-alive 类型的线程,当有真实请 求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。 这增强了在高并 发场景下的请求处理。 event 模式不能很好的支持 https 的访问(HTTP 认证相关的问题)。

四层和七层负载均衡的区别

(一)简单理解四层和七层负载均衡:① 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器。 ② 所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时,依据四层的信息或七层的信息来决定怎么样转发流量。 比如四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。 七层的负载均衡,就是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。 举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。 ③ 负载均衡器通常称为四层交换机或七层交换机。 四层交换机主要分析IP层及TCP/UDP层,实现四层流量负载均衡。 七层交换机除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息。 1、负载均衡分为L4 switch(四层交换),即在OSI第4层工作,就是TCP层啦。 此种Load Balance不理解应用协议(如HTTP/FTP/MySQL等等)。 例子:LVS,F5。 2、另一种叫做L7 switch(七层交换),OSI的最高层,应用层。 此时,该Load Balancer能理解应用协议。 例子: haproxy,MySQL Proxy。 注意:上面的很多Load Balancer既可以做四层交换,也可以做七层交换。 (二)负载均衡设备也常被称为四到七层交换机,那么四层和七层两者到底区别在哪里?第一,技术原理上的区别。 所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。 以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。 TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。 在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。 所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。 以常见的TCP为例,负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。 负载均衡设备在这种情况下,更类似于一个代理服务器。 负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接。 所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。 第二,应用场景的需求。 七层应用负载的好处,是使得整个网络更智能化。 例如访问一个网站的用户流量,可以通过七层的方式,将对图片类的请求转发到特定的图片服务器并可以使用缓存技术;将对文字类的请求可以转发到特定的文字服务器并可以使用压缩技术。 当然这只是七层应用的一个小案例,从技术原理上,这种方式可以对客户端的请求和服务器的响应进行任意意义上的修改,极大的提升了应用系统在网络层的灵活性。 很多在后台,例如Nginx或者Apache上部署的功能可以前移到负载均衡设备上,例如客户请求中的Header重写,服务器响应中的关键字过滤或者内容插入等功能。 另外一个常常被提到功能就是安全性。 网络中最常见的SYN Flood攻击,即黑客控制众多源客户端,使用虚假IP地址对同一目标发送SYN攻击,通常这种攻击会大量发送SYN报文,耗尽服务器上的相关资源,以达到Denial of Service(DoS)的目的。 从技术原理上也可以看出,四层模式下这些SYN攻击都会被转发到后端的服务器上;而七层模式下这些SYN攻击自然在负载均衡设备上就截止,不会影响后台服务器的正常运营。 另外负载均衡设备可以在七层层面设定多种策略,过滤特定报文,例如SQL Injection等应用层面的特定攻击手段,从应用层面进一步提高系统整体安全。 现在的7层负载均衡,主要还是着重于应用HTTP协议,所以其应用范围主要是众多的网站或者内部信息平台等基于B/S开发的系统。 4层负载均衡则对应其他TCP应用,例如基于C/S开发的ERP等系统。 第三,七层应用需要考虑的问题。 1:是否真的必要,七层应用的确可以提高流量智能化,同时必不可免的带来设备配置复杂,负载均衡压力增高以及故障排查上的复杂性等问题。 在设计系统时需要考虑四层七层同时应用的混杂情况。 2:是否真的可以提高安全性。 例如SYN Flood攻击,七层模式的确将这些流量从服务器屏蔽,但负载均衡设备本身要有强大的抗DDoS能力,否则即使服务器正常而作为中枢调度的负载均衡设备故障也会导致整个应用的崩溃。 3:是否有足够的灵活度。 七层应用的优势是可以让整个应用的流量智能化,但是负载均衡设备需要提供完善的七层功能,满足客户根据不同情况的基于应用的调度。 最简单的一个考核就是能否取代后台Nginx或者Apache等服务器上的调度功能。 能够提供一个七层应用开发接口的负载均衡设备,可以让客户根据需求任意设定功能,才真正有可能提供强大的灵活性和智能性。 (三)负载均衡四七层介绍:负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。 本文所要介绍的负载均衡技术主要是指在均衡服务器群中所有服务器和应用程序之间流量负载的应用,目前负载均衡技术大多数是用于提高诸如在Web服务器、FTP服务器和其它关键任务服务器上的Internet服务器程序的可用性和可伸缩性。 负载均衡技术分类目前有许多不同的负载均衡技术用以满足不同的应用需求,下面从负载均衡所采用的设备对象、应用的网络层次(指OSI参考模型)及应用的地理结构等来分类。 软/硬件负载均衡软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。 软件解决方案缺点也较多,因为每台服务器上安装额外的软件运行会消耗系统不定量的资源,越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件本身会成为服务器工作成败的一个关键;软件可扩展性并不是很好,受到操作系统的限制;由于操作系统本身的Bug,往往会引起安全问题。 硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备我们通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。 负载均衡器有多种多样的形式,除了作为独立意义上的负载均衡器外,有些负载均衡器集成在交换设备中,置于服务器与Internet链接之间,有些则以两块网络适配器将这一功能集成到PC中,一块连接到Internet上,一块连接到后端服务器群的内部网络上。 一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵。 本地/全局负载均衡负载均衡从其应用的地理结构上分为本地负载均衡(Local Load Balance)和全局负载均衡(Global Load Balance,也叫地域负载均衡),本地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。 本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,充分利用现有设备,避免服务器单点故障造成数据流量的损失。 其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。 即使是再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而不需改变现有网络结构、停止现有的服务。 全局负载均衡主要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度,也可用于子公司分散站点分布广的大公司通过Intranet(企业内部互联网)来达到资源统一合理分配的目的。 网络层次上的负载均衡针对网络上负载过重的不同瓶颈所在,从网络的不同层次入手,我们可以采用相应的负载均衡技术来解决现有问题。 随着带宽增加,数据流量不断增大,网络核心部分的数据接口将面临瓶颈问题,原有的单一线路将很难满足需求,而且线路的升级又过于昂贵甚至难以实现,这时就可以考虑采用链路聚合(Trunking)技术。 链路聚合技术(第二层负载均衡)将多条物理链路当作一条单一的聚合逻辑链路使用,网络数据流量由聚合逻辑链路中所有物理链路共同承担,由此在逻辑上增大了链路的容量,使其能满足带宽增加的需求。 现代负载均衡技术通常操作于网络的第四层或第七层。 第四层负载均衡将一个Internet上合法注册的IP地址映射为多个内部服务器的IP地址,对每次 TCP连接请求动态使用其中一个内部IP地址,达到负载均衡的目的。 在第四层交换机中,此种均衡技术得到广泛的应用,一个目标地址是服务器群VIP(虚拟 IP,Virtual IP address)连接请求的数据包流经交换机,交换机根据源端和目的IP地址、TCP或UDP端口号和一定的负载均衡策略,在服务器IP和VIP间进行映射,选取服务器群中最好的服务器来处理连接请求。 第七层负载均衡控制应用层服务的内容,提供了一种对访问流量的高层控制方式,适合对HTTP服务器群的应用。 第七层负载均衡技术通过检查流经的HTTP报头,根据报头内的信息来执行负载均衡任务。 第七层负载均衡优点表现在如下几个方面:通过对HTTP报头的检查,可以检测出HTTP400、500和600系列的错误信息,因而能透明地将连接请求重新定向到另一台服务器,避免应用层故障。 可根据流经的数据类型(如判断数据包是图像文件、压缩文件或多媒体文件格式等),把数据流量引向相应内容的服务器来处理,增加系统性能。 能根据连接请求的类型,如是普通文本、图象等静态文档请求,还是asp、cgi等的动态文档请求,把相应的请求引向相应的服务器来处理,提高系统的性能及安全性。 第七层负载均衡受到其所支持的协议限制(一般只有HTTP),这样就限制了它应用的广泛性,并且检查HTTP报头会占用大量的系统资源,势必会影响到系统的性能,在大量连接请求的情况下,负载均衡设备自身容易成为网络整体性能的瓶颈。 负载均衡策略在实际应用中,我们可能不想仅仅是把客户端的服务请求平均地分配给内部服务器,而不管服务器是否宕机。 而是想使Pentium III服务器比Pentium II能接受更多的服务请求,一台处理服务请求较少的服务器能分配到更多的服务请求,出现故障的服务器将不再接受服务请求直至故障恢复等等。 选择合适的负载均衡策略,使多个设备能很好的共同完成任务,消除或避免现有网络负载分布不均、数据流量拥挤反应时间长的瓶颈。 在各负载均衡方式中,针对不同的应用需求,在OSI参考模型的第二、三、四、七层的负载均衡都有相应的负载均衡策略。 负载均衡策略的优劣及其实现的难易程度有两个关键因素:一、负载均衡算法,二、对网络系统状况的检测方式和能力。 考虑到服务请求的不同类型、服务器的不同处理能力以及随机选择造成的负载分配不均匀等问题,为了更加合理的把负载分配给内部的多个服务器,就需要应用相应的能够正确反映各个服务器处理能力及网络状态的负载均衡算法:轮循均衡(Round Robin):每一次来自网络的请求轮流分配给内部中的服务器,从1至N然后重新开始。 此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。 权重轮循均衡(Weighted Round Robin):根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。 例如:服务器A的权值被设计成1,B的权值是 3,C的权值是6,则服务器A、B、C将分别接受到10%、30%、60%的服务请求。 此种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。 随机均衡(Random):把来自网络的请求随机分配给内部中的多个服务器。 权重随机均衡(Weighted Random):此种均衡算法类似于权重轮循算法,不过在处理请求分担时是个随机选择的过程。 响应速度均衡(Response Time):负载均衡设备对内部各服务器发出一个探测请求(例如Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。 此种均衡算法能较好的反映服务器的当前运行状态,但这最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。 最少连接数均衡(Least Connection):客户端的每一次请求服务在服务器停留的时间可能会有较大的差异,随着工作时间加长,如果采用简单的轮循或随机均衡算法,每一台服务器上的连接进程可能会产生极大的不同,并没有达到真正的负载均衡。 最少连接数均衡算法对内部中需负载的每一台服务器都有一个数据记录,记录当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。 此种均衡算法适合长时处理的请求服务,如FTP。 处理能力均衡:此种均衡算法将把服务请求分配给内部中处理负荷(根据服务器CPU型号、CPU数量、内存大小及当前连接数等换算而成)最轻的服务器,由于考虑到了内部服务器的处理能力及当前网络运行状况,所以此种均衡算法相对来说更加精确,尤其适合运用到第七层(应用层)负载均衡的情况下。 DNS响应均衡(Flash DNS):在Internet上,无论是HTTP、FTP或是其它的服务请求,客户端一般都是通过域名解析来找到服务器确切的IP地址的。 在此均衡算法下,分处在不同地理位置的负载均衡设备收到同一个客户端的域名解析请求,并在同一时间内把此域名解析成各自相对应服务器的IP地址(即与此负载均衡设备在同一位地理位置的服务器的IP地址)并返回给客户端,则客户端将以最先收到的域名解析IP地址来继续请求服务,而忽略其它的IP地址响应。 在种均衡策略适合应用在全局负载均衡的情况下,对本地负载均衡是没有意义的。 尽管有多种的负载均衡算法可以较好的把数据流量分配给服务器去负载,但如果负载均衡策略没有对网络系统状况的检测方式和能力,一旦在某台服务器或某段负载均衡设备与服务器网络间出现故障的情况下,负载均衡设备依然把一部分数据流量引向那台服务器,这势必造成大量的服务请求被丢失,达不到不间断可用性的要求。 所以良好的负载均衡策略应有对网络故障、服务器系统故障、应用服务故障的检测方式和能力:Ping侦测:通过ping的方式检测服务器及网络系统状况,此种方式简单快速,但只能大致检测出网络及服务器上的操作系统是否正常,对服务器上的应用服务检测就无能为力了。 TCP Open侦测:每个服务都会开放某个通过TCP连接,检测服务器上某个TCP端口(如Telnet的23口,HTTP的80口等)是否开放来判断服务是否正常。 HTTP URL侦测:比如向HTTP服务器发出一个对文件的访问请求,如果收到错误信息,则认为服务器出现故障。 负载均衡策略的优劣除受上面所讲的两个因素影响外,在有些应用情况下,我们需要将来自同一客户端的所有请求都分配给同一台服务器去负担,例如服务器将客户端注册、购物等服务请求信息保存的本地数据库的情况下,把客户端的子请求分配给同一台服务器来处理就显的至关重要了。 有两种方式可以解决此问题,一是根据IP地址把来自同一客户端的多次请求分配给同一台服务器处理,客户端IP地址与服务器的对应信息是保存在负载均衡设备上的;二是在客户端浏览器 cookie内做独一无二的标识来把多次请求分配给同一台服务器处理,适合通过代理服务器上网的客户端。 还有一种路径外返回模式(Out of Path Return),当客户端连接请求发送给负载均衡设备的时候,中心负载均衡设备将请求引向某个服务器,服务器的回应请求不再返回给中心负载均衡设备,即绕过流量分配器,直接返回给客户端,因此中心负载均衡设备只负责接受并转发请求,其网络负担就减少了很多,并且给客户端提供了更快的响应时间。 此种模式一般用于HTTP服务器群,在各服务器上要安装一块虚拟网络适配器,并将其IP地址设为服务器群的VIP,这样才能在服务器直接回应客户端请求时顺利的达成三次握手。 负载均衡实施要素负载均衡方案应是在网站建设初期就应考虑的问题,不过有时随着访问流量的爆炸性增长,超出决策者的意料,这也就成为不得不面对的问题。 当我们在引入某种负载均衡方案乃至具体实施时,像其他的许多方案一样,首先是确定当前及将来的应用需求,然后在代价与收效之间做出权衡。 针对当前及将来的应用需求,分析网络瓶颈的不同所在,我们就需要确立是采用哪一类的负载均衡技术,采用什么样的均衡策略,在可用性、兼容性、安全性等等方面要满足多大的需求,如此等等。 不管负载均衡方案是采用花费较少的软件方式,还是购买代价高昂在性能功能上更强的第四层交换机、负载均衡器等硬件方式来实现,亦或其他种类不同的均衡技术,下面这几项都是我们在引入均衡方案时可能要考虑的问题:性能:性能是我们在引入均衡方案时需要重点考虑的问题,但也是一个最难把握的问题。 衡量性能时可将每秒钟通过网络的数据包数目做为一个参数,另一个参数是均衡方案中服务器群所能处理的最大并发连接数目,但是,假设一个均衡系统能处理百万计的并发连接数,可是却只能以每秒2个包的速率转发,这显然是没有任何作用的。 性能的优劣与负载均衡设备的处理能力、采用的均衡策略息息相关,并且有两点需要注意:一、均衡方案对服务器群整体的性能,这是响应客户端连接请求速度的关键;二、负载均衡设备自身的性能,避免有大量连接请求时自身性能不足而成为服务瓶颈。 有时我们也可以考虑采用混合型负载均衡策略来提升服务器群的总体性能,如DNS负载均衡与NAT负载均衡相结合。 另外,针对有大量静态文档请求的站点,也可以考虑采用高速缓存技术,相对来说更节省费用,更能提高响应性能;对有大量ssl/xml内容传输的站点,更应考虑采用ssl/xml加速技术。 可扩展性:IT技术日新月异,一年以前最新的产品,现在或许已是网络中性能最低的产品;业务量的急速上升,一年前的网络,现在需要新一轮的扩展。 合适的均衡解决方案应能满足这些需求,能均衡不同操作系统和硬件平台之间的负载,能均衡HTTP、邮件、新闻、代理、数据库、防火墙和 Cache等不同服务器的负载,并且能以对客户端完全透明的方式动态增加或删除某些资源。 灵活性:均衡解决方案应能灵活地提供不同的应用需求,满足应用需求的不断变化。 在不同的服务器群有不同的应用需求时,应有多样的均衡策略提供更广泛的选择。 可靠性:在对服务质量要求较高的站点,负载均衡解决方案应能为服务器群提供完全的容错性和高可用性。 但在负载均衡设备自身出现故障时,应该有良好的冗余解决方案,提高可靠性。 使用冗余时,处于同一个冗余单元的多个负载均衡设备必须具有有效的方式以便互相进行监控,保护系统尽可能地避免遭受到重大故障的损失。 易管理性:不管是通过软件还是硬件方式的均衡解决方案,我们都希望它有灵活、直观和安全的管理方式,这样便于安装、配置、维护和监控,提高工作效率,避免差错。 在硬件负载均衡设备上,目前主要有三种管理方式可供选择:一、命令行接口(CLI:Command Line Interface),可通过超级终端连接负载均衡设备串行接口来管理,也能telnet远程登录管理,在初始化配置时,往往要用到前者;二、图形用户接口(GUI:Graphical User Interfaces),有基于普通web页的管理,也有通过Java Applet 进行安全管理,一般都需要管理端安装有某个版本的浏览器;三、SNMP(Simple Network Management Protocol,简单网络管理协议)支持,通过第三方网络管理软件对符合SNMP标准的设备进行管理。

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

为高流量网站量身定制的 Apache 配置最佳实践 (高流量网站负载分担) 第2张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
欢迎你第一次访问网站!