首頁 後端開發 php教程 使用网络地址转换实现多服务器负载均衡_PHP

使用网络地址转换实现多服务器负载均衡_PHP

Jun 01, 2016 pm 12:40 PM
使用 地址 實現 文件 伺服器 網路 負載 轉換

负载均衡

摘要:本文探讨了分布式网络服务器使用的负载均衡技术及负载分配的策略,并基于网络地址转换在FreeBSD上实现了负载均衡网关,应用于我们的Internet网络服务器上,将负载分给多个服务器分担,以解决Internet服务器面临的大量并发访问造成的CPU或I/O的高负载问题。为了达到最佳的负载均衡效果,负载控制器需要根据各个服务器的当前CPU和I/O状态来分配负载,这就需要动态监视服务器的负载,并应用优化的负载分配策略,达到平均分配负载的目的。

关键字: 负载均衡,网络地址转换,FreeBSD


1. 引言

Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大量并发访问服务的能力,服务器的处理和I/O能力成为了提供服务的瓶颈。由于单台服务器的性能总是有限的,必须采用多服务器和负载均衡技术才能满足大量并发访问的需要。

最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的[1]。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。

反向代理服务器可以将请求转发给内部Web服务器,如果代理服务器能够将请求均匀转发给多台内部服务器,就能达到负载均衡的目的[2]。反向代理方式下能应用优化的负载均衡策略,每次访问最空闲的内部服务器来提供服务。但是随着并发连接数量的增加,代理服务器本身的负载也变得非常大,最后反向代理服务器本身会成为服务的瓶颈。

支持负载均衡的地址转换网关中可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的[3]。很多硬件厂商将这种技术集成在他们的交换机中,作为他们第四层交换的一种功能来实现,一般采用随机选择、根据服务器的连接数量或者响应时间进行选择的负载均衡策略来分配负载。然而硬件实现的负载控制器灵活性不强,不能支持更优化的负载均衡策略和更复杂的应用协议。

除了这三种负载均衡方式之外,有的协议内部支持与负载均衡相关的功能,例如HTTP协议中的重定向能力等,但它依赖于特定协议,因此使用范围有限。根据现有的这些负载均衡技术,我们选择了使用软件方式实现网络地址转换的负载均衡的方式,以弥补硬件负载均衡器的不灵活,并应用优化的均衡策略来实现后端服务器负载分担的最优状态。


2. 负载均衡策略

为了将负载均匀的分配给内部的多个服务器上,就需要应用一定的负载均衡策略。传统的负载均衡策略并没有考虑到服务请求的不同类型、后台服务器的不同能力以及随机选择造成的负载分配不均匀等问题。为了使得负载分配十分均匀,就要应用能够正确反映各个服务器CPU及I/O状态的负载均衡策略[4]。

客户发起的服务请求类型是多种多样的,按照对处理器、网络和I/O的资源要求,可以简单的将它们分为两个不同类别,以便应用不同的处理策略:



静态文档请求:例如普通的文本、图象等静态多媒体数据,它们对处理器负载影响不大,造成的磁盘I/O负载与文档的大小成正比,主要对网络I/O造成压力。


动态文档请求:更为常见的请求常常需要服务器预先进行处理,例如搜寻数据库、压缩解压缩多媒体文件等,这些请求需要相当大的处理器和磁盘I/O资源。


对于静态文档,每个服务进程占用大致相同的系统资源,因此就可以使用进程数来表示系统负载。而动态文档服务需要进行额外的处理,其占用的系统资源就超过处理静态请求,因此需要使用一个权重来表示。这样一个最简单的服务器负载表示公式就为:

其中L为服务器的负载,Ns为静态文档服务进程数,Nd为动态文档服务进程数,而a为每个动态文档服务相对于静态文档服务的权重,可以在10到100之间进行选择。

在这个公式中没有考虑服务器硬件的限制,当达到硬件限制的时候,由于资源紧张,服务器的负载就会明显增加。例如由于服务器内存大小的限制,一些进程就要被交换到硬盘上,使得系统负载迅速增加。考虑了系统硬件限制,则服务器的负载可以表示为:

新增加的参数 Ll表示这个服务器普通负荷的限度,它要根据每个服务器本身的硬件能力来设置。而b表示超出正常负载时用来限制分配给服务器任务的权重,应该设置为大于Ll的数值,以表示硬件限制作用。通常在一个服务器集群中,硬件设置越差的服务器这个权重越要设置的大,以避免在所有的服务器都超负载运行时,硬件最差的服务器反而负载最高。因此b是和本服务器硬件限制Ll成反比的,则b可以设置为:

Llmax为服务器集群中最高硬件配置的服务器的Ll值。当确定了每个服务器的负载之后,中心控制负载分配的服务器就能将负载正确的分发给最空闲的服务器,从而不会象其他的负载分配策略那样会导致负载分配不均匀的情况。


3. 实现方法及实验结果

我们的服务器系统由使用快速以太网连接起来的多台FreeBSD系统组成。每台后端服务器上运行一个守护进程来动态获得自己的负载状态,而使用FreeBSD实现的中心控制网关就通过这些守护进程刷新各个服务器的负载,以进行正确的负载分配。

3.1支持负载均衡的网关

在FreeBSD系统下,提供了divert接口以支持网络地址转换能力。IP数据包通过系统内核的ipfw过滤功能被发送到divert接口中,以便外部守护进程natd能接收原始数据包,处理之后再发回系统内核进行正常的IP分发[5]。

因此根据FreeBSD的地址转换结构,可以创建自己的网络地址转换守护进程,以支持负载均衡功能,这样就能将FreeBSD系统作为一个支持负载均衡的网关。由于它是软件实现的方式,很容易支持非标准的协议及应用优化的负载均衡策略,具备很大的灵活性。

3.2实验及分析

为测试这种实现的可用性,我们针对最常见的HTTP协议进行我们的测试实验。为了区分不同的请求种类,设计了三个不同类型的测试,以测试不同方面的性能。



CGI程序产生的动态文档:用于测试在服务器的处理能力的负载均衡状态。


小型静态文档:使用尺寸较小的静态文档,用于测试频繁连接下负载均衡的状态;


大型静态文档:使用较大的文档,测试磁盘及网络I/O的负载均衡状态;


测试结果以单台服务器每秒钟完成请求的性能为基准,显示使用多台服务器进行负载均衡时每秒种完成的请求数与基准请求次数的比率。



图1:负载均衡性能



从上图中的第一条曲线a是处理动态文档请求的,此时随着服务器数量的增加,其性能是成倍增加的;而第二条曲线b为处理小尺寸静态文档请求的,在使用三台服务器时性能改善就不明显了;而处理大尺寸静态文档请求的第三条曲线c则几乎没有发生性能变化。为了找到负载均衡系统达不到理想状态的原因,我们考察了服务器资源的利用率:

表1.服务器资源的利用率


处理类型
负载均衡网关
服务器1
服务器2
服务器3

a
53%
97%
95%
98%

b
76%
43%
39%
41%

c
94%
32%
31%
35%




从这个表中可以看出,当处理动态文档a时三台服务器都处于全速运行状态,负载被均匀分配,这是一种理想的状态。当处理静态文档类型b和c时,负载虽然被均匀分配给三台服务器,但每台服务器都没有处于全速运行状态。尤其在处理大尺寸文档时,负载均衡设备中的natd进程则占据了大部分处理资源。由于所有的网络流量都要经过它进行转换,因此在网络流量和并发连接数量相当大时,natd进程的负载就增加上去了。实验中使用不同数量的后端服务器时,流经负载均衡网关的实际网络带宽为:

表2:提供大尺寸文档时服务器集群的带宽


服务器数量
1台
2台
3台

网络速度(Kb/s)
10042.14
11015.10
11442.67




可以看出带宽限制在10MB/s左右,显然这是这个测试使用的负载均衡进程的带宽限制,事实上该程序使用了链表来维护网络地址转换的状态,这就大大限制了它的网络性能,通过提高硬件性能和改善算法,完全可以进一步提高其性能。


4.讨论

从上面的实验中可以看出,基于网络地址转换的负载均衡器可以有效的解决服务器端的CPU和磁盘I/O负载,然而负载均衡器本身的性能受网络I/O的限制,在一定硬件条件下具有一定的带宽限制,但可以通过改善算法和提高运行负载均衡程序的硬件性能,来提高这个带宽限制。同时也可以看出,不同的服务类型对不同的服务器资源进行占用,我们使用的负载衡量策略是使用同一个负载进行评估,这对于大多数条件是适合的,然而最好的办法是针对不同的资源,如CPU、磁盘I/O或网络I/O等,分别监视服务器负载,由中心控制器选择最合适的服务器分发客户请求。我们以后的工作将从这两个方面入手,完善这个负载均衡控制器。


参考文献:


[1] E.Kata,M.Butler, and R. McGrath. A scalable HTTP server: the ncsa prototype. Computer Networks and ISDN systems. 1994. Vol 27, P155-164

[2] Ralf S.Engelschall. Load Balancing Your Web Site. Web Techniques Magazine (http://www.WebTechniques.com), May 1998. vol.3, iss.5

[3] CICSO. LocalDirector Documents. http://www.cisco.com, 1997

[4] H.Zhu. T.Yang, Q.Zheng, D.Watson, O.H.Ibarra, andT.Smith, Adaptive load sharing for clustered digital library servers. Technical Report, CS, UCSB, 1998.

[5] FreeBSD core team. natd and divert manual pages. http://www.freebsd.org. 1995



Implement a load balancing gateway by NAT


Wang, Bo

NongYe Road 70, ZhengZhou, 450002, P.R.China

wb@email.online.ha.cn


Abstract: This paper investigates load balancing techniques and strategies, and implements a load balancing gateway based NAT for our Internet servers. The Internet servers involve the high load of CPU and I/O by simultaneous access requests, the symmetrical clustered servers can distribute the server load to solve the problem. To balance the load in the best way, the gateway distributes the load according to the status of server's CPU and I/O. The gateway must monitor every server's load and apply the best scheme to delivery every request, so it can provide the high performance for Internet services.

Keywords: load balancing, NAT, FreeBSD
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

全角英文字母轉換為半角形式的實用技巧 全角英文字母轉換為半角形式的實用技巧 Mar 26, 2024 am 09:54 AM

全角英文字母轉換為半角形式的實用技巧在現代生活中,我們經常會接觸到英文字母,在使用電腦、手機等設備時也經常需要輸入英文字母。然而,有時候我們會遇到全角英文字母的情況,而我們需要使用的是半角形式。那麼,如何將全角英文字母轉換為半角形式呢?以下就為大家介紹一些實用的技巧。首先,全角英文字母和數字是指在輸入法中佔據一個全角位置的字符,而半角英文字母和數字則是佔據一

網路連不上wifi怎麼回事 網路連不上wifi怎麼回事 Apr 03, 2024 pm 12:11 PM

1.檢查wifi密碼:確保自己輸入的wifi密碼是正確的,並注意區分大小寫。 2.確認wifi是否正常運作:檢查wifi路由器是否正常運作,可將其他裝置連接至相同路由器,以確定問題是否出在裝置上。 3.重新啟動設備和路由器:有時候,設備或路由器發生故障或網路問題,重新啟動設備和路由器可能會解決問題。 4.檢查設備設定:確保設備無線功能為開啟狀態,且未將wifi功能停用。

華為手機如何實現雙微信登入? 華為手機如何實現雙微信登入? Mar 24, 2024 am 11:27 AM

華為手機如何實現雙微信登入?隨著社群媒體的興起,微信已成為人們日常生活中不可或缺的溝通工具之一。然而,許多人可能會遇到一個問題:在同一部手機上同時登入多個微信帳號。對於華為手機用戶來說,實現雙微信登入並不困難,本文將介紹華為手機如何實現雙微信登入的方法。首先,華為手機自帶的EMUI系統提供了一個很方便的功能-應用程式雙開。透過應用程式雙開功能,用戶可以在手機上同

網易信箱大師怎麼用 網易信箱大師怎麼用 Mar 27, 2024 pm 05:32 PM

網易郵箱,作為中國網友廣泛使用的一種電子郵箱,一直以來以其穩定、高效的服務贏得了用戶的信賴。而網易信箱大師,則是專為手機使用者打造的信箱軟體,它大大簡化了郵件的收發流程,讓我們的郵件處理變得更加便利。那麼網易信箱大師該如何使用,具體又有哪些功能呢,下文中本站小編將為大家帶來詳細的內容介紹,希望能幫助到大家!首先,您可以在手機應用程式商店搜尋並下載網易信箱大師應用程式。在應用寶或百度手機助手中搜尋“網易郵箱大師”,然後按照提示進行安裝即可。下載安裝完成後,我們打開網易郵箱帳號並進行登錄,登入介面如下圖所示

百度網盤app怎麼用 百度網盤app怎麼用 Mar 27, 2024 pm 06:46 PM

在如今雲端儲存已成為我們日常生活和工作中不可或缺的一部分。百度網盤作為國內領先的雲端儲存服務之一,憑藉其強大的儲存功能、高效的傳輸速度以及便捷的操作體驗,贏得了廣大用戶的青睞。而且無論你是想要備份重要文件、分享資料,還是在線上觀看影片、聽取音樂,百度網盤都能滿足你的需求。但很多用戶可能對百度網盤app的具體使用方法還不了解,那麼這篇教學就將為大家詳細介紹百度網盤app如何使用,還有疑惑的用戶們就快來跟著本文詳細了解一下吧!百度雲網盤怎麼用:一、安裝首先,下載並安裝百度雲軟體時,請選擇自訂安裝選

BTCC教學:如何在BTCC交易所綁定使用MetaMask錢包? BTCC教學:如何在BTCC交易所綁定使用MetaMask錢包? Apr 26, 2024 am 09:40 AM

MetaMask(中文也叫小狐狸錢包)是一款免費的、廣受好評的加密錢包軟體。目前,BTCC已支援綁定MetaMask錢包,綁定後可使用MetaMask錢包進行快速登錄,儲值、買幣等,且首次綁定還可獲得20USDT體驗金。在BTCCMetaMask錢包教學中,我們將詳細介紹如何註冊和使用MetaMask,以及如何在BTCC綁定並使用小狐狸錢包。 MetaMask錢包是什麼? MetaMask小狐狸錢包擁有超過3,000萬用戶,是當今最受歡迎的加密貨幣錢包之一。它可免費使用,可作為擴充功能安裝在網絡

如何在華為手機上實現微信分身功能 如何在華為手機上實現微信分身功能 Mar 24, 2024 pm 06:03 PM

如何在華為手機上實現微信分身功能隨著社群軟體的普及和人們對隱私安全的日益重視,微信分身功能逐漸成為人們關注的焦點。微信分身功能可以幫助使用者在同一台手機上同時登入多個微信帳號,方便管理和使用。在華為手機上實現微信分身功能並不困難,只需要按照以下步驟操作即可。第一步:確保手機系統版本和微信版本符合要求首先,確保你的華為手機系統版本已更新至最新版本,以及微信App

小米汽車app怎麼用 小米汽車app怎麼用 Apr 01, 2024 pm 09:19 PM

小米汽車軟體提供遠端車控功能,讓使用者可以透過手機或電腦遠端控制車輛,例如開關車輛的門窗、啟動引擎、控制車輛的空調和音響等,下文就是這個軟體的使用及內容,一起了解下吧。小米汽車app功能及使用方法大全1、小米汽車app在3月25日上線蘋果AppStore,現在安卓手機的應用商店中也可以下載了;購車:了解小米汽車核心亮點和技術參數,可預約試駕、配置訂購您的小米汽車,支援線上處理提車待辦事項。 3.社群:了解小米汽車品牌資訊,交流用車體驗,分享精彩車生活;4、車控:手機就是遙控器,遠端控制,即時安防,輕

See all articles