摘要:架設(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是一個高可用性方案。
關(guān)于3者比較,可以看這篇博客http://www.rootop.org/pages/2773.html
工作在網(wǎng)絡(luò)的7層之上,可以針對http應(yīng)用做一些分流的策略。
nginx在啟動后,在unix系統(tǒng)中會以daemon的方式在后臺運行,后臺進(jìn)程包含一個master進(jìn)程和多個worker進(jìn)程。
master進(jìn)程主要用來管理worker進(jìn)程,包含:接收來自外界的信號,向各worker進(jìn)程發(fā)送信號,監(jiān)控worker進(jìn)程的運行狀態(tài),當(dāng)worker進(jìn)程退出后(異常情況下),會自動重新啟動新的worker進(jìn)程。
而基本的網(wǎng)絡(luò)事件,則是放在worker進(jìn)程中來處理了。
多個worker進(jìn)程之間是對等的,他們同等競爭來自客戶端的請求,各進(jìn)程互相之間是獨立的。
關(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主要是對ip處理下,讓下次訪問時候,還是訪問當(dāng)前服務(wù)器,這樣就不會導(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會使用默認(rèn)的round robin負(fù)載均衡模塊,那么,你每次訪問的服務(wù)器可能會不同,導(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目錄下放一個 fuck.php, WEB2不放,那么。當(dāng)我訪問http://172.31.19.122時候,就會有時候404,有時候返回正常頁面,這就表示成功了。
這個在目前不能做,因為無法做多用戶并發(fā)訪問,就算模擬器模擬效果也不能達(dá)到多用戶并發(fā)的強度。
Nginx的幾個優(yōu)點:
Nginx工作在網(wǎng)絡(luò)的7層,所以它可以針對http應(yīng)用本身來做分流策略,比如針對域名、目錄結(jié)構(gòu)等,相比之下LVS并不具備這樣的功能,所以Nginx單憑這點可利用的場合就遠(yuǎn)多于LVS了;但Nginx有用的這些功能使其可調(diào)整度要高于LVS,所以經(jīng)常要去觸碰觸碰,觸碰多了,人為出問題的幾率也就會大。
Nginx現(xiàn)在作為Web反向加速緩存越來越成熟了,速度比傳統(tǒng)的Squid服務(wù)器更快,可以考慮用其作為反向代理加速器。
Nginx對網(wǎng)絡(luò)穩(wěn)定性的依賴非常小,理論上能ping通就就能進(jìn)行負(fù)載功能,這個也是它的優(yōu)勢之一。
接下來會寫關(guān)于KeepAlive+HAProxy實踐教程。
本文出自 夏日小草,轉(zhuǎn)載請注明出處:http://homeway.me/2014/12/05/nginx-reverse-proxy-to-load-balance/-by小草
2014-12-05 17:12:26
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/39100.html
摘要:反向代理負(fù)載均衡虛擬主機配置通過本章你將學(xué)會利用配置多臺虛擬主機,清楚代理服務(wù)器的作用,區(qū)分正向代理和反向代理的區(qū)別,搭建使用反向搭理和負(fù)載均衡,了解常用配置的說明。最重要的是反向代理,負(fù)載均衡。 Nginx 反向代理 負(fù)載均衡 虛擬主機配置 通過本章你將學(xué)會利用Nginx配置多臺虛擬主機,清楚代理服務(wù)器的作用,區(qū)分正向代理和反向代理的區(qū)別,搭建使用Nginx反向搭理和負(fù)載均衡,了解N...
摘要:注意本篇文章為負(fù)載均衡的理論篇后續(xù)找個機會推出實戰(zhàn)篇。理論篇主要講述如何配置負(fù)載均衡配置負(fù)載均衡不難。常用的狀態(tài)有,表示當(dāng)前的暫時不參與負(fù)載均衡。注,當(dāng)負(fù)載調(diào)度算法為時,后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài)不能是和。 注意,本篇文章為負(fù)載均衡的理論篇,后續(xù)找個機會推出實戰(zhàn)篇。理論篇主要講述如何配置負(fù)載均衡,配置負(fù)載均衡不難。但實戰(zhàn)中要要注意幾個點,比如如何做到多服務(wù)器之間的數(shù)據(jù)共享(ses...
摘要:負(fù)載均衡嚴(yán)格來說,僅僅是作為反向代理的使用的,但是因為這個反向代理功能表現(xiàn)的效果是負(fù)載均衡機器的效果,因此負(fù)載均衡是特殊的反向代理。 反向代理 反向代理指的是以代理服務(wù)器接收用戶的的訪問請求,代理用戶向內(nèi)部服務(wù)器重新發(fā)起請求,最后把內(nèi)部服務(wù)器的響應(yīng)信息返回給用戶。這樣,代理服務(wù)器對外就表現(xiàn)為一臺服務(wù)器,而訪問內(nèi)部服務(wù)器的客戶端用的就是代理服務(wù)器,而不是真實網(wǎng)站訪問用戶。 為什么使用反向...
摘要:是的默認(rèn)負(fù)載均衡策略。一致性哈希負(fù)載均衡。所以負(fù)載均衡是分布式系統(tǒng)架構(gòu)設(shè)計中必須考慮的因素之一。考慮主要是如何讓下游接收到的請求是均勻分布的第層客戶端層反向代理層的負(fù)載均衡。通過輪詢第層反向代理層層的負(fù)載均衡。 一、 什么是負(fù)載均衡? 什么是負(fù)載均衡? 記得第一次接觸 Nginx 是在實驗室,那時候在服務(wù)器部署網(wǎng)站需要用 Nginx 。Nginx 是一個服務(wù)組件,用來反向代理、負(fù)載平衡...
閱讀 1250·2023-04-26 01:38
閱讀 1462·2021-11-15 11:39
閱讀 3251·2021-09-22 15:43
閱讀 2638·2019-08-30 15:55
閱讀 2047·2019-08-30 14:17
閱讀 2851·2019-08-29 14:16
閱讀 3062·2019-08-26 18:36
閱讀 2607·2019-08-26 12:19