摘要:架設(shè)服務(wù)器均衡負(fù)載方式有多種,是目前使用最廣泛的三種方案關(guān)于均衡負(fù)載架設(shè)服務(wù)器均衡負(fù)載方式有多種,是目前使用最廣泛的三種方案。服務(wù)器集群環(huán)境接下來講下想要搭的均衡負(fù)載環(huán)境。
http://homeway.me
架設(shè)服務(wù)器均衡負(fù)載方式有多種,Nginx、LVS、HAProxy+Keepalived是目前使用最廣泛的三種方案。
其中Keepalived+HAProxy是一個(gè)高可用性方案。
關(guān)于3者比較,可以看這篇博客http://www.rootop.org/pages/2773.html
工作在網(wǎng)絡(luò)的7層之上,可以針對(duì)http應(yīng)用做一些分流的策略。
nginx在啟動(dòng)后,在unix系統(tǒng)中會(huì)以daemon的方式在后臺(tái)運(yùn)行,后臺(tái)進(jìn)程包含一個(gè)master進(jìn)程和多個(gè)worker進(jìn)程。
master進(jìn)程主要用來管理worker進(jìn)程,包含:接收來自外界的信號(hào),向各worker進(jìn)程發(fā)送信號(hào),監(jiān)控worker進(jìn)程的運(yùn)行狀態(tài),當(dāng)worker進(jìn)程退出后(異常情況下),會(huì)自動(dòng)重新啟動(dòng)新的worker進(jìn)程。
而基本的網(wǎng)絡(luò)事件,則是放在worker進(jìn)程中來處理了。
多個(gè)worker進(jìn)程之間是對(duì)等的,他們同等競(jìng)爭(zhēng)來自客戶端的請(qǐng)求,各進(jìn)程互相之間是獨(dú)立的。
關(guān)于nginx,主要由3大模塊,內(nèi)核模塊,事件模塊,http核心模塊。
nginx模塊一般被分成三大類:handler、filter和upstream。
接下來講下想要搭的均衡負(fù)載環(huán)境。
系統(tǒng)環(huán)境 : Linux Centos 7 aws 2.6.32-504.1.3.el6.x86_64 Nginx Version:1.6.0 均衡負(fù)載服務(wù)器: 172.31.19.122:80(lnmp一鍵安裝) WEB1: 172.31.15.59:80 WEB2: 172.31.15.94:80 WEB3: 172.31.15.24:80
服務(wù)器用lnmp一鍵安裝,自帶的conf配置已經(jīng)配置好一切了。
下面是完整的配置文件。
/usr/local/nginx/conf/nginx.conf
user www www; worker_processes auto; error_log /home/wwwlogs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; multi_accept on; } http { include mime.types; default_type application/octet-stream;#處理接收的數(shù)據(jù)類型 server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 50m; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 256k; # 添加gzip壓縮 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; gzip_proxied expired no-cache no-store private auth; gzip_disable "MSIE [1-6]."; server_tokens off; # 通過upstream處理均衡負(fù)載 upstream static.homeway { server 172.31.15.24:80; } upstream homeway { # ip hash主要是對(duì)ip處理下,讓下次訪問時(shí)候,還是訪問當(dāng)前服務(wù)器,這樣就不會(huì)導(dǎo)致session丟失 ip_hash; # weight權(quán)重,配置訪問概率 server 172.31.15.59:80 weight=10; server 172.31.15.94:80 weight=5; } server { listen 80 default; server_name 172.31.19.122; index index.html index.htm index.php; #error_page 404 /404.html; location ~ .*.(js|css)?$ { expires 12h; } # 靜態(tài)文件可以用CDN處理,本例子指向WEB3 location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ { proxy_pass http://static.homeway; } # 通過均衡負(fù)載服務(wù)器指向WEB1、WEB2 location / { proxy_pass http://homeway; #使用后端的web服務(wù)器 proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } access_log /home/wwwlogs/access.log access; } include vhost/*.conf; }
核心指令”ip_hash”只能在upstream {}中使用。這條指令用于通知nginx使用ip hash負(fù)載均衡算法。如果沒加這條指令,nginx會(huì)使用默認(rèn)的round robin負(fù)載均衡模塊,那么,你每次訪問的服務(wù)器可能會(huì)不同,導(dǎo)致session丟失,一直要重新登錄。
關(guān)于upstream的源碼分析,可以去看 tengine的介紹 http://tengine.taobao.org/book/chapter_05.html
重啟服務(wù)器下。
/root/lnmp restart
搞定了,確定WEB1,WEB2,WEB3可以正常訪問就行了。
這樣,假設(shè),我在WEB1的web目錄下放一個(gè) fuck.php, WEB2不放,那么。當(dāng)我訪問http://172.31.19.122時(shí)候,就會(huì)有時(shí)候404,有時(shí)候返回正常頁面,這就表示成功了。
這個(gè)在目前不能做,因?yàn)闊o法做多用戶并發(fā)訪問,就算模擬器模擬效果也不能達(dá)到多用戶并發(fā)的強(qiáng)度。
Nginx的幾個(gè)優(yōu)點(diǎn):
Nginx工作在網(wǎng)絡(luò)的7層,所以它可以針對(duì)http應(yīng)用本身來做分流策略,比如針對(duì)域名、目錄結(jié)構(gòu)等,相比之下LVS并不具備這樣的功能,所以Nginx單憑這點(diǎn)可利用的場(chǎng)合就遠(yuǎn)多于LVS了;但Nginx有用的這些功能使其可調(diào)整度要高于LVS,所以經(jīng)常要去觸碰觸碰,觸碰多了,人為出問題的幾率也就會(huì)大。
Nginx現(xiàn)在作為Web反向加速緩存越來越成熟了,速度比傳統(tǒng)的Squid服務(wù)器更快,可以考慮用其作為反向代理加速器。
Nginx對(duì)網(wǎng)絡(luò)穩(wěn)定性的依賴非常小,理論上能ping通就就能進(jìn)行負(fù)載功能,這個(gè)也是它的優(yōu)勢(shì)之一。
接下來會(huì)寫關(guān)于KeepAlive+HAProxy實(shí)踐教程。
本文出自 夏日小草,轉(zhuǎn)載請(qǐng)注明出處:http://homeway.me/2014/12/05/nginx-reverse-proxy-to-load-balance/-by小草
2014-12-05 17:12:26
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/39100.html
摘要:反向代理負(fù)載均衡虛擬主機(jī)配置通過本章你將學(xué)會(huì)利用配置多臺(tái)虛擬主機(jī),清楚代理服務(wù)器的作用,區(qū)分正向代理和反向代理的區(qū)別,搭建使用反向搭理和負(fù)載均衡,了解常用配置的說明。最重要的是反向代理,負(fù)載均衡。 Nginx 反向代理 負(fù)載均衡 虛擬主機(jī)配置 通過本章你將學(xué)會(huì)利用Nginx配置多臺(tái)虛擬主機(jī),清楚代理服務(wù)器的作用,區(qū)分正向代理和反向代理的區(qū)別,搭建使用Nginx反向搭理和負(fù)載均衡,了解N...
摘要:注意本篇文章為負(fù)載均衡的理論篇后續(xù)找個(gè)機(jī)會(huì)推出實(shí)戰(zhàn)篇。理論篇主要講述如何配置負(fù)載均衡配置負(fù)載均衡不難。常用的狀態(tài)有,表示當(dāng)前的暫時(shí)不參與負(fù)載均衡。注,當(dāng)負(fù)載調(diào)度算法為時(shí),后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài)不能是和。 注意,本篇文章為負(fù)載均衡的理論篇,后續(xù)找個(gè)機(jī)會(huì)推出實(shí)戰(zhàn)篇。理論篇主要講述如何配置負(fù)載均衡,配置負(fù)載均衡不難。但實(shí)戰(zhàn)中要要注意幾個(gè)點(diǎn),比如如何做到多服務(wù)器之間的數(shù)據(jù)共享(ses...
摘要:負(fù)載均衡嚴(yán)格來說,僅僅是作為反向代理的使用的,但是因?yàn)檫@個(gè)反向代理功能表現(xiàn)的效果是負(fù)載均衡機(jī)器的效果,因此負(fù)載均衡是特殊的反向代理。 反向代理 反向代理指的是以代理服務(wù)器接收用戶的的訪問請(qǐng)求,代理用戶向內(nèi)部服務(wù)器重新發(fā)起請(qǐng)求,最后把內(nèi)部服務(wù)器的響應(yīng)信息返回給用戶。這樣,代理服務(wù)器對(duì)外就表現(xiàn)為一臺(tái)服務(wù)器,而訪問內(nèi)部服務(wù)器的客戶端用的就是代理服務(wù)器,而不是真實(shí)網(wǎng)站訪問用戶。 為什么使用反向...
摘要:是的默認(rèn)負(fù)載均衡策略。一致性哈希負(fù)載均衡。所以負(fù)載均衡是分布式系統(tǒng)架構(gòu)設(shè)計(jì)中必須考慮的因素之一。考慮主要是如何讓下游接收到的請(qǐng)求是均勻分布的第層客戶端層反向代理層的負(fù)載均衡。通過輪詢第層反向代理層層的負(fù)載均衡。 一、 什么是負(fù)載均衡? 什么是負(fù)載均衡? 記得第一次接觸 Nginx 是在實(shí)驗(yàn)室,那時(shí)候在服務(wù)器部署網(wǎng)站需要用 Nginx 。Nginx 是一個(gè)服務(wù)組件,用來反向代理、負(fù)載平衡...
閱讀 1420·2023-04-26 01:38
閱讀 1534·2021-11-15 11:39
閱讀 3344·2021-09-22 15:43
閱讀 2722·2019-08-30 15:55
閱讀 2109·2019-08-30 14:17
閱讀 2916·2019-08-29 14:16
閱讀 3134·2019-08-26 18:36
閱讀 2674·2019-08-26 12:19