集群和負(fù)載均衡的區(qū)別 nginx

集群和負(fù)載均衡的區(qū)別 nginx

Nginx是一個免費的,開源的,高性能的服務(wù)器和反向**服務(wù)器軟件,同時它也可以為IMAP和POP3服務(wù)器**,以其高性能,穩(wěn)定性,豐富的功能,結(jié)構(gòu)簡單,低資源消耗的特性換來廣大運維者所喜愛。Nginx與傳統(tǒng)的服務(wù)器不同,不依賴線程來處理請求。

相反,它使用一個更可擴(kuò)展事件驅(qū)動架構(gòu)(異步)。

這種結(jié)構(gòu)資源消耗較小,但更重要的是,可以承受較大的請求負(fù)荷。即使你不希望處理成千上萬的請求,你仍然可以受益于Nginx的高性能和小的內(nèi)存占用,以及其豐富的功能。 Nginx的反向**:反向**指以**服務(wù)器來接受Internet上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部**上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給Internet上請求連接到客戶端,此時**服務(wù)器對外就表現(xiàn)為一個服務(wù)器,而此種工作模式類似于LVS-NET模型。反向**也可以理解為web服務(wù)器加速,它是一種通過在繁忙的web服務(wù)器和外部**之間增加的 一個高速web緩沖服務(wù)器,用來降低實際的web服務(wù)器的負(fù)載的一種技術(shù)。

反向**是針對web服務(wù)器提高加速功能,所有外部**要訪問服務(wù)器時的所有請求都要通過它,這樣反向**服務(wù)器負(fù)責(zé)接收客戶端的請求,然后到源服務(wù)器上獲取內(nèi)容,把內(nèi)容返回給用戶,并把內(nèi)容保存在本地,以便日后再收到同樣的信息請求時,它會將本地緩存里的內(nèi)容直接發(fā)給用戶,已減少后端web服務(wù)器的壓力,提高響應(yīng)速度。因此Nginx還具有緩存功能。 反向**的工作流程:1)用戶通過域名發(fā)出訪問請求,該域名被解析為反向**服務(wù)器的IP地址;2)反向**服務(wù)器接收用戶的請求;3)反向**服務(wù)器在本地緩存查找是否存在當(dāng)前用戶所請求的內(nèi)容,找到則直接把內(nèi)容返回給用戶;4)如果本地沒有用戶請求的內(nèi)容,反向**服務(wù)器會以自己的身份去后端服務(wù)器請求同樣的信息內(nèi)容,并把信息內(nèi)容發(fā)給用戶,如果信息內(nèi)容是可以被緩存的,則會將該內(nèi)容緩存在**服務(wù)器的本地緩存中。

反向**的好處:1)解決了網(wǎng)站服務(wù)器對外可見的問題,提高了網(wǎng)站服務(wù)器的安全性;2)節(jié)約了有限的IP地址資源,后端服務(wù)器均可使用私有IP地址與**服務(wù)器進(jìn)行通信;3)加速了網(wǎng)站的訪問速度,減輕了真是web服務(wù)器的負(fù)荷。(一)、調(diào)度算法Nginx的upstream指令用于指定proxy_pass和fastcgi_pass所使用的后端服務(wù)器,即nginx的反向**功能,因此可以將兩者結(jié)合起來使用以達(dá)到負(fù)載均衡的目的,而Nginx也支持多種調(diào)度算法:1、輪詢(默認(rèn))每個請求按時間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,則會跳過該服務(wù)器分配至下一個監(jiān)控的服務(wù)器。并且它無需記錄當(dāng)前所有連接的狀態(tài),所以它是一種無狀態(tài)調(diào)度。

2、weight指定在輪詢的基礎(chǔ)上加上權(quán)重,weight和訪問比率成正比,即用于表明后端服務(wù)器的性能好壞,若后端服務(wù)器性能較好則可將大部分請求分配給它,已實現(xiàn)其力所能及。例如:我后端服務(wù)器172.23.136.148配置:E5520*2 CPU,8G內(nèi)存后端服務(wù)器172.23.136.148配置:Xeon(TM)2.80GHz * 2,4G內(nèi)存我希望在有30個請求到達(dá)前端時,其中20個請求交給172.23.136.148處理,剩余10個請求交給172.23.136.149處理,就可做如下配置upstream web_poll {server 172.23.136.148 weight=10;server 172.23.136.149 weight=5;}3、ip_hash 每個請求按訪問ip的hash結(jié)果分配,當(dāng)新的請求到達(dá)時,先將其客戶端IP通過哈希算法進(jìn)行哈希出一個值,在隨后的請求客戶端IP的哈希值只要相同,就會被分配至同一個后端服務(wù)器,該調(diào)度算法可以解決session的問題,但有時會導(dǎo)致分配不均即無法保證負(fù)載均衡。例如:upstream web_pool {ip_hash;server 172.23.136.148:80;server 172.23.136.149:80;}4、fair(第三方)按后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配。

upstream web_pool {server 172.23.136.148;server 172.23.136.149;fair;}5、url_hash(第三方)按訪問url的hash結(jié)果來分配請求,使每個url定向到同一個后端服務(wù)器,后端服務(wù)器為緩存時比較有效。例:在upstream中加入hash語句,server語句中不能寫入weight等其他的參數(shù),hash_method是使用的hash算法upstream web_pool {server squid1:3128;server squid2:3128;hash $request_uri;hash_method crc32;} 每個設(shè)備的狀態(tài)設(shè)置為:1.down 表示當(dāng)前的server不參與負(fù)載,用于ip_hash中2.weight 默認(rèn)為1.weight越大,負(fù)載的權(quán)重就越大。3.max_fails 允許請求失敗的次數(shù)默認(rèn)為1.設(shè)為0則表示關(guān)閉該項功能,當(dāng)超過**次數(shù)時,返回proxy_next_upstream 模塊定義的錯誤4.fail_timeout 在max_fails定義的失敗次數(shù)后,暫停的時間。5.backup 可以將其理解為備機(jī),其它所有的非backup機(jī)器down或者忙的時候,才會將請求分配給backup機(jī)器。

所以這臺機(jī)器壓力會最輕。 nginx支持同時設(shè)置多組的負(fù)載均衡,用來給不用的server來使用。 (二)、指令的使用1、upstream聲明一組可以被proxy_pass和fastcgi_pass引用的服務(wù)器;這些服務(wù)器可以使用不同的端口,并且也可以使用Unix Socket;也可以為服務(wù)器指定不同的權(quán)重。如:upstream web_pool { server coolinuz.9966.org weight=5; server 172.23.136.148:8080 max_fails=3 fail_timeout=30s; server unix:/tmp/backend3;}2、server語法:server name [parameters]其中的name可以是FQDN,主機(jī)地址,端口或unix套接字;如果FQDN解析的結(jié)果為多個地址,則每個地址都會被用到。

3、proxy_pass語法:proxy_pass URL;該指令用于指定**服務(wù)器的地址和URL將被映射為的URL或地址和端口。即用來指定后端服務(wù)器的地址或URL[端口]。4、proxy_set_header語法:proxy_set_header header value;該指令允許重新定義和添加一些將被轉(zhuǎn)移到被**服務(wù)器的請求頭部信息。例如:proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;注意:$proxy_add_x_forwarded_for包含客戶端請求頭中的\”X-Forwarded-For\”,與$remote_addr用逗號分開,如果沒有\(zhòng)”X-Forwarded-For\” 請求頭,則$proxy_add_x_forwarded_for等于$remote_addr 順便補上Nginx的內(nèi)置變量:$args, 請求中的參數(shù);$is_args, 如果已經(jīng)設(shè)置$args,則該變量的值為“?”,否則為“”。

$content_length, HTTP請求信息頭里的\”Content-Length\”;$content_type, 請求信息頭里的\”Content-Type\”;$document_root, 針對當(dāng)前請求所屬的root指令設(shè)置的根目錄路徑;$document_uri, 與$uri相同;$host, 請求信息中的\”Host\”,如果請求中沒有Host行,則等于設(shè)置的服務(wù)器名;$limit_rate, 對連接速率的限制;$request_method, 請求的方法,比如\”GET\”、\”POST\”等;$remote_addr, 客戶端地址;$remote_port, 客戶端端口號;$remote_user, 客戶端用戶名,認(rèn)證用;$request_filename, 當(dāng)前請求的文件路徑名$request_body_file, 客戶端請求主體的臨時文件名。$request_uri, 請求的URI,帶參數(shù);$query_string, 與$args相同;$scheme, 所用的協(xié)議,比如http或者是https,比如rewrite ^(.+)$ $scheme://example.com$1 redirect;$server_protocol, 請求的協(xié)議版本,\”HTTP/1.0\”或\”HTTP/1.1\”;$server_addr, 服務(wù)器地址,如果沒有用listen指明服務(wù)器地址,使用這個變量將發(fā)起一次系統(tǒng)調(diào)用以取得地址(造成資源浪費);$server_name, 請求到達(dá)的服務(wù)器名;$server_port, 請求到達(dá)的服務(wù)器端口號;$uri, 請求的URI,可能和最初的值有不同,比如經(jīng)過重定向之類的。5、proxy_read_timeout語法:proxy_read_timeout time;這個指令設(shè)置Nginx與后端服務(wù)器建立連接后。

等待后端服務(wù)器的響應(yīng)時間6、proxy_send_timeout語法:roxy_send_timeout time;該指令指定請求轉(zhuǎn)移到后端服務(wù)器的超時時間。整個傳輸?shù)囊髸r間不超過超時時間,但只有兩次寫操作之間。如果在此時間之后的后端服務(wù)器將不采取新的數(shù)據(jù),然后nginx將關(guān)閉連接。

7、proxy_connect_timeout語法:proxy_connect_timeout time;該指令用來設(shè)置分配到后端服務(wù)器的連接超時時間。8、proxy_buffers語法: proxy_buffers the_number is_size;該指令設(shè)置緩沖區(qū)的數(shù)目和大小,缺省情況下,一個緩沖區(qū)的大小和頁面大小相同。9、proxy_buffer_size語法:proxy_buffer_size buffer_size;**緩沖區(qū),該指令用于保存用用戶的頭部信息。10、proxy_busy_buffers_size語法:proxy_busy_buffers_size size;用于當(dāng)系統(tǒng)負(fù)載較大,緩沖區(qū)不夠用時,可以申請更大的proxy_buffers11、proxy_temp_file_write_size語法:proxy_temp_file_write_size size;用于指定緩存臨時文件的大小(三)、功能完善安裝配置第三方模塊,實現(xiàn)upstream中對后端web server的健康狀態(tài)檢測:模塊****:https://github.com/cep21/healthcheck_nginx_upstreams;模塊名稱:ngx_http_healthcheck_module安裝配置方法:1、首先解壓healcheck模塊到某路徑下,這里假設(shè)為/tmp/healthcheck_nginx_upstreams#tar -xvf cep21-healthcheck_nginx_upstreams-16d6ae7.tar.gz -C /tmp/healthcheck_nginx_upstreams2、對nginx打補丁首先解壓nginx,并進(jìn)入nginx源碼目錄:# tar xf nginx-1.3.4.tar.gz# cd nginx-1.0.11# patch -p1 < /tmp/healthcheck_nginx_upstreams/nginx.patch而后編譯nginx,在執(zhí)行configure時添加類似下面的選項:–add-module=/tmp/healthcheck_nginx_upstreams所以,這里就使用如下命令:# ./configure \\–prefix=/usr/local/nginx \\–**in-path=/usr/**in/nginx \\–conf-path=/etc/nginx/nginx.conf \\–lock-path=/var/lock/nginx.lock \\–user=nginx \\–group=nginx \\–with-http_ssl_module \\–with-http_flv_module \\–with-http_stub_status_module \\–with-http_gzip_static_module \\–http-proxy-temp-path=/var/tmp/nginx/proxy/ \\–http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \\–with-pcre \\–add-module=/tmp/healthcheck_nginx_upstreams# make && make install ngx_http_healthcheck_module模塊的使用方法:1、此模塊支持的指令有:healthcheck_enabled##啟用此模塊healthcheck_delay##對同一臺后端服務(wù)器兩次檢測之間的時間間隔,單位毫秒,默認(rèn)為1000;healthcheck_timeout##進(jìn)行一次健康檢測的超時時間,單位為毫秒,默認(rèn)值2000;healthcheck_failcount##對一臺后端服務(wù)器檢測成功或失敗多少次之后方才確定其為成功或失敗,并實現(xiàn)啟用或禁用此服務(wù)器;healthcheck_send##為了檢測后端服務(wù)器的健康狀態(tài)所發(fā)送的檢測請求;如:healthcheck_send \”GET /health HTTP/1.0\” \’Host: coolinuz.9966.org\’;healthcheck_expected##期望從后端服務(wù)器收到的響應(yīng)內(nèi)容;如果未設(shè)置,則表示從后端服務(wù)器收到200狀態(tài)碼即為正確;healthcheck_buffer##健康狀態(tài)檢查所使用的buffer空間大小; healthcheck_status通過類似stub_status的方式輸出檢測信息,使用方法如下:location /stat { healthcheck_status;}(四)、配置與實現(xiàn)配置代碼如下:http { upstream web_pool { server 172.23.136.148:80 weight=10; server 172.23.136.149:80 weight=5; healthcheck_enabled; healthcheck_delay 1000; healthcheck_timeout 1000; healthcheck_failcount 2; healthcheck_send \”GET /.health HTTP/1.0\”; } server { listen 80; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://web_pool; proxy_connect_timeout 3; } location /stat { healthcheck_status; } }} 在這里設(shè)置“proxy_set_header”參數(shù),是因為Nginx在做反向**的時候,要代替客戶端去訪問服務(wù)器,所以,當(dāng)請求包經(jīng)過反向**后,在**服務(wù)器這里這個IP數(shù)據(jù)包的IP包頭做了修改,最終后端web服務(wù)器得到的數(shù)據(jù)包的頭部的源IP地址是**服務(wù)器的IP地址,這樣一來,后端服務(wù)器的程序給予IP的統(tǒng)計功能就沒有任何意義,或者后端web服務(wù)器上有多個基于域名的虛擬主機(jī)時,就要通過添加Header頭信息Host,用于指定請求的域名,這樣后端web服務(wù)器才能識別該反向**訪問請求由哪個虛擬主機(jī)來處理。

(五)、小結(jié)通過以上我們可以看出Nginx的配置其實是比較其他的web服務(wù)器軟件是比較簡單的,但是其實現(xiàn)的功能確實相當(dāng)強大豐富的。通過Nginx的反向**已經(jīng)支持靈活的正則表達(dá)式匹配,可以實現(xiàn)網(wǎng)站的動、靜分離,讓動態(tài)的php等程序網(wǎng)頁去訪問php web服務(wù)器,讓緩存頁、圖片、javascript、css、flash去訪問Squid等緩存服務(wù)器或文件服務(wù)器。加之Nginx對靜態(tài)內(nèi)容的高性能,高并發(fā)量,Nginx作為前端**負(fù)載均衡成為越來越多架構(gòu)師的首先方案。

服務(wù)器集群和服務(wù)器負(fù)載均衡有什么區(qū)別?

服務(wù)器集群:服務(wù)器集群就是指將很多服務(wù)器集中起來一起進(jìn)行同一種服務(wù),在客戶端看來就像是只有一個服務(wù)器。集群可以利用多個計算機(jī)進(jìn)行并行計算從而獲得很高的計算速度,也可以用多個計算機(jī)做備份,從而使得任何一個機(jī)器壞了整個系統(tǒng)還是能正常運行。

服務(wù)器負(fù)載均衡:負(fù)載均衡(LoadBalancing)建立在現(xiàn)有**結(jié)構(gòu)之上,它提供了一種廉價有效透明的方法擴(kuò)展**設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強**數(shù)據(jù)處理能力、提高**的靈活性和可用性。

分布式服務(wù)器:所謂分布式資源共享服務(wù)器就是指數(shù)據(jù)和程序可以不位于一個服務(wù)器上,而是分散到多個服務(wù)器,以**上分散分布的地理信息數(shù)據(jù)及受其影響的數(shù)據(jù)庫操作為研究對象的一種理論計算模型服務(wù)器形式。分布式有利于任務(wù)在整個計算機(jī)系統(tǒng)上進(jìn)行分配與優(yōu)化,克服了傳統(tǒng)集中式系統(tǒng)會導(dǎo)致中心主機(jī)資源緊張與響應(yīng)瓶頸的缺陷,解決了**GIS中存在的數(shù)據(jù)異構(gòu)、數(shù)據(jù)共享、運算復(fù)雜等問題,是地理信息系統(tǒng)技術(shù)的一大進(jìn)步。這個三種架構(gòu)都是常見的服務(wù)器架構(gòu),集群的主要是IT公司在做,可以保障重要數(shù)據(jù)安全;負(fù)載均衡主要是為了分擔(dān)訪問量,避免臨時的**堵塞,主要用于電子商務(wù)類型的網(wǎng)站;分布式服務(wù)器主要是解決跨區(qū)域,多個單個節(jié)點達(dá)到高速訪問的目前,一般是類似CDN的用途的話,會采用分布式服務(wù)器。

集群、負(fù)載均衡與分布式有什么區(qū)別?

集群、負(fù)載均衡與分布式的區(qū)別:
1、Linux集群主要分成三大類( 高可用集群, 負(fù)載均衡集群,科學(xué)計算集群)(下面只介紹負(fù)載均衡集群)
負(fù)載均衡集群(Load Balance Cluster)
負(fù)載均衡系統(tǒng)百科:集群中所有的節(jié)點都處于活動狀態(tài),它們分?jǐn)傁到y(tǒng)的工作負(fù)載。一般Web服務(wù)器集群、數(shù)據(jù)庫集群和應(yīng)用服務(wù)器集群都屬于這種類型。

負(fù)載均衡集群一般用于相應(yīng)**請求的網(wǎng)頁服務(wù)器,數(shù)據(jù)庫服務(wù)器。

這種集群可以在接到請求時,檢查接受請求較少,不繁忙的服務(wù)器,并把請求轉(zhuǎn)到這些服務(wù)器上。從檢查其他服務(wù)器狀態(tài)這一點上看,負(fù)載均衡和容錯集群很接近,不同之處是數(shù)量上更多。
2、負(fù)載均衡系統(tǒng): 負(fù)載均衡又有DNS負(fù)載均衡(比較常用)、IP負(fù)載均衡、反向**負(fù)載均衡等,也就是在集群中有服務(wù)器A、B、C,它們都是互不影響,互不相干的,任何一臺的機(jī)器宕了,都不會影響其他機(jī)器的運行,當(dāng)用戶來一個請求,有負(fù)載均衡器的算法決定由哪臺機(jī)器來處理,假如你的算法是采用round算法,有用戶a、b、c,那么分別由服務(wù)器A、B、C來處理;
3、分布式是指將不同的業(yè)務(wù)分布在不同的地方。
而集群指的是將幾臺服務(wù)器集中在一起,實現(xiàn)同一業(yè)務(wù)。

?分布式中的每一個節(jié)點,都可以做集群。?而集群并不一定就是分布式的。
舉例:就比如新浪網(wǎng),訪問的人多了,他可以做一個群集,前面放一個響應(yīng)服務(wù)器,后面幾臺服務(wù)器完成同一業(yè)務(wù),如果有業(yè)務(wù)訪問的時候,響應(yīng)服務(wù)器看哪臺服務(wù)器的負(fù)載不是很重,就將給哪一臺去完成。

而分布式,從窄意上理解,也跟集群差不多, 但是它的組織比較松散,不像集群,有一個組織性,一臺服務(wù)器垮了,其它的服務(wù)器可以頂上來。
分布式的每一個節(jié)點,都完成不同的業(yè)務(wù),一個節(jié)點垮了,哪這個業(yè)務(wù)就不可訪問了。

集群與分布式以及負(fù)載均衡之間的區(qū)別和聯(lián)系

首先,我們來聊聊什么是集群。 集群是指將我們的服務(wù)器由傳統(tǒng)的單臺服務(wù)器,部署為多臺。

一方面可以使我們的服務(wù)器并行運行從而提高服務(wù)器的計算速度。

另一方面可以對我們的主服務(wù)器提供備份操作,提高系統(tǒng)的容錯性。當(dāng)主服務(wù)出現(xiàn)宕機(jī)或者請求流量過高的時候,可以切換到其他服務(wù)器進(jìn)行響應(yīng),保障客戶端的穩(wěn)定運行。 然后,我們來聊聊什么是分布式。 分布式是指將一個完整的業(yè)務(wù)線拆分成多個獨立的操作單元,各個操作單元之間可以獨立運行,提供系統(tǒng)的高可用以及高拓展性。

比如,一個門戶網(wǎng)站有登陸,圖片,視頻。每一個都可以拆分成獨立的操作單元,并且每個操作單元可以部署在多臺服務(wù)器上,也就是形成我們的集群。

綜上所述,其實集群是多臺服務(wù)器做同樣的事情,而分布式則是做不同的事情。下面有一個通俗易懂的例子。一個飯館里面原來只有一個廚子,后來生意越來越好,一個人忙不過來了,于是又請了一個廚子,這兩個廚子之間的關(guān)系就是集群。

在后來,為了把菜品做的很精致和細(xì)化。又請了一個專門切菜和配菜的配菜師,廚子和配菜師的關(guān)系就屬于分布式。**,又請了一個配菜師,這兩個配菜師也是屬于集群的關(guān)系。

總而言之,分布式和集群主要作用是就是為了解決系統(tǒng)的高可用以及高并發(fā)。 **,在聊聊負(fù)載均衡。 負(fù)載均衡是一種方法,常用的是nginx反向**,其實負(fù)載均衡是可以理解為搭建集群的一部分,屬于集群服務(wù)器的前置系統(tǒng)。比如,一個門戶網(wǎng)站,請求流量過高的時候,為了保障服務(wù)器的正常穩(wěn)定運行,由nginx來均攤請求到后臺服務(wù)器。

盡量保障每臺服務(wù)器承受同等的負(fù)載。

如何通俗理解——>集群、負(fù)載均衡、分布式

在“高并發(fā),海量數(shù)據(jù),分布式,NoSql,云計算……”概念滿天飛的年代,相信不少朋友都聽說過甚至常與人提起“集群,負(fù)載均衡”等,但不是所有人都有機(jī)會真正接觸到這些技術(shù),也不是所有人都真正理解了這些“聽起來很牛的”技術(shù)名詞。下面簡單解釋一下吧。

(從一個網(wǎng)站上面看到的,例子很有趣,分享給大家) 集群(Cluster) 所謂集群是指一組獨立的計算機(jī)系統(tǒng)構(gòu)成的一個松耦合的多處理器系統(tǒng),它們之間通過**實現(xiàn)進(jìn)程間的通信。

應(yīng)用程序可以通過**共享內(nèi)存進(jìn)行消息傳送,實現(xiàn)分布式計算機(jī)。通俗一點來說,就是讓若干臺計算機(jī)聯(lián)合起來工作(服務(wù)),可以是并行的,也可以是做備份。 負(fù)載均衡(Load Balance) **的負(fù)載均衡是一種動態(tài)均衡技術(shù),常見的實現(xiàn)方式是通過一些工具實時地分析數(shù)據(jù)包,掌握**中的數(shù)據(jù)流量狀況,把任務(wù)合理均衡地分配出去。這種技術(shù)基于現(xiàn)有**結(jié)構(gòu),提供了一種擴(kuò)展服務(wù)器帶寬和增加服務(wù)器吞吐量的廉價有效的方法,加強了**數(shù)據(jù)處理能力,提高了**的靈活性和可用性。

日常生活中到處都能看到“負(fù)載均衡”,一個超市的收營員高峰期只能服務(wù)10位顧客,當(dāng)做活動時有20位顧客需要服務(wù)的話可能就會排長隊,這樣購物體驗將會很差(就像客戶抱怨系統(tǒng)/網(wǎng)站訪問太慢)。最簡單的辦法就是再招個營業(yè)員,重新開通一個出口。負(fù)載均衡的核心就是“分?jǐn)倝毫Α薄?/p>

大規(guī)模集群,通常具備以下一些特點: (1)高可靠性(HA) 利用集群管理軟件,當(dāng)主服務(wù)器故障時,備份服務(wù)器能夠自動接管主服務(wù)器的工作,并及時切換過去,以實現(xiàn)對用戶的不間斷服務(wù)。 (2)高性能計算(HP) 即充分利用集群中的每一臺計算機(jī)的資源,實現(xiàn)復(fù)雜運算的并行處理,通常用于科學(xué)計算領(lǐng)域,比如基因分析、化學(xué)分析等。 (3)負(fù)載平衡(LB) 即把負(fù)載壓力根據(jù)某種算法合理分配到集群中的每一臺計算機(jī)上,以減輕主服務(wù)器的壓力,降低對主服務(wù)器的硬件和軟件要求。

當(dāng)然,以上的這些特點,在某些適應(yīng)場合下是需要同時具備的。常用的集群又分以下幾種: load balance cluster(負(fù)載均衡集群) 一共有四兄弟開裁縫鋪,生意特別多,一個人做不下來,老是延誤工期,于是四個兄弟商量:老大接訂單, 三個兄弟來干活。 客戶多起來之后,老大根據(jù)一定的原則(policy) 根據(jù)三兄弟手上的工作量來分派新任務(wù)。

High availability cluster(高可用集群) 兩兄弟開早餐鋪,生意不大,但是每天早上7點到9點之間客戶很多并且不能中斷。為了保證2個小時內(nèi)這個早餐鋪能夠保證持續(xù)提供服務(wù),兩兄弟商量幾個方法: 方法一:平時老大做生意,老二這個時間段在家等候,一旦老大無法做生意了,老二就出來頂上,這個叫做 Active/Standby.(雙機(jī)熱備) 方法二:平時老大做生意,老二這個時候就在旁邊幫工,一旦老大無法做生意,老二就馬上頂上,這個叫做Active/Passive.(雙機(jī)雙工) 方法三:平時老大賣包子,老二也在旁邊賣豆?jié){,老大有問題,老二就又賣包子,又賣豆?jié){,老二不行了,老大就又賣包子,又賣豆?jié){.這個叫做Active/Active (dual Active)(雙機(jī)互備) (包子= application package, 互相照應(yīng)叫做heartbeat, 頂替對方工作叫做 failover/takeover. 如果兩個兄弟突然都瞎了聾了,不知道現(xiàn)在對方到底是否正在干活,都認(rèn)為自己要頂對方的工作,這個叫做brain-split, 然后需要第三者,比如他們的老爹來解決問題,這個叫做tier-breaker, 或者讓他們兩個的媳婦過來拉走其中一個,這個叫做fency。) high computing clustering(高性能計算集群) 10個兄弟一起做手工家具生意,一個客戶來找他們的老爹要求做一套非常復(fù)雜的仿古家具,一個人做也可以做,不過要做很久很久,為了1個星期就交出這一套家具,10個兄弟決定一起做。 老爹把這套家具的不同部分分開交給兒子們作,然后每個兒子都在做木制家具的加工,**拼在一起叫貨。

老爹是scheduler任務(wù)調(diào)度器,兒子們是compute node. 他們做的工作叫做作業(yè)。 (其實,還有一種,分布式存儲相關(guān)的集群,應(yīng)用于超大規(guī)模網(wǎng)站,云計算平臺等等。涉及點存儲方面的,這里就不介紹了) 嚴(yán)格來講,這些已經(jīng)超過了一般開發(fā)人員的知識范疇了,想真正理解和掌握這些并不太容易,有時候需要真正的實踐而不是閉門造車。從運維人員和系統(tǒng)架構(gòu)師的角度來看,不僅需要具備豐富的操作系統(tǒng)配置和管理的經(jīng)驗,更要具備**協(xié)議、存儲等相關(guān)的知識(懂算法和底層的就更完美了)。

從開發(fā)人員和軟件架構(gòu)師的角度來看,需要考慮的重點又不同了。當(dāng)然,遠(yuǎn)遠(yuǎn)不止我所提到的這些?,F(xiàn)在的Web應(yīng)用一般都比較依賴于基礎(chǔ)架構(gòu),而越來越脫離了”純軟件架構(gòu)“的本質(zhì)。集群不是**的,但有時候確實相當(dāng)有用。

由于項目和工作關(guān)系,我本人目前主要使用的是微軟的技術(shù)體系(當(dāng)然,目前大都是基于windows平臺的)。有機(jī)會的話,我可以將自己在這方面的研究和實踐分享出來,更希望有興趣的朋友在一塊分享和交流。 總結(jié): 分布式是指將不同的業(yè)務(wù)分布在不同的地方,集群指的是將幾臺服務(wù)器集中在一起,實現(xiàn)同一業(yè)務(wù)。

在現(xiàn)有**結(jié)構(gòu)之上,負(fù)載均衡提供了一種廉價有效的方法擴(kuò)展服務(wù)器帶寬和增加吞吐量,加強**數(shù)據(jù)處理能力,提高**的靈活性和可用性。

在服務(wù)器架構(gòu)中,集群,負(fù)載均衡,分布式有什么區(qū)別嗎

集群就是很多的服務(wù)器來實現(xiàn)一種功能,向mysql,很多的服務(wù)器都安裝mysql,負(fù)載均衡就是用來調(diào)節(jié)的,比方說有很多的用戶都在訪問讀取數(shù)據(jù),可是讀取a服務(wù)器的mysql多,而讀取別的服務(wù)器的mysql就少,負(fù)載均衡把訪問a的用戶轉(zhuǎn)給b一部分,防止a由于訪問量過大造成宕機(jī)什么的。分布式就是有很多把服務(wù)器的相同功能分別部署在很多太計算機(jī)上,然后每個地方放上幾臺,這幾臺負(fù)責(zé)提供本地的服務(wù),并且和總的服務(wù)器連接,保持?jǐn)?shù)據(jù)傳遞。