摘要:架設服務器均衡負載方式有多種,是目前使用最廣泛的三種方案關于均衡負載架設服務器均衡負載方式有多種,是目前使用最廣泛的三種方案。服務器集群環境接下來講下想要搭的均衡負載環境。
http://homeway.me
架設服務器均衡負載方式有多種,Nginx、LVS、HAProxy+Keepalived是目前使用最廣泛的三種方案。
其中Keepalived+HAProxy是一個高可用性方案。
關于3者比較,可以看這篇博客http://www.rootop.org/pages/2773.html
工作在網絡的7層之上,可以針對http應用做一些分流的策略。
nginx在啟動后,在unix系統中會以daemon的方式在后臺運行,后臺進程包含一個master進程和多個worker進程。
master進程主要用來管理worker進程,包含:接收來自外界的信號,向各worker進程發送信號,監控worker進程的運行狀態,當worker進程退出后(異常情況下),會自動重新啟動新的worker進程。
而基本的網絡事件,則是放在worker進程中來處理了。
多個worker進程之間是對等的,他們同等競爭來自客戶端的請求,各進程互相之間是獨立的。
關于nginx,主要由3大模塊,內核模塊,事件模塊,http核心模塊。
nginx模塊一般被分成三大類:handler、filter和upstream。
接下來講下想要搭的均衡負載環境。
系統環境 : Linux Centos 7 aws 2.6.32-504.1.3.el6.x86_64 Nginx Version:1.6.0 均衡負載服務器: 172.31.19.122:80(lnmp一鍵安裝) WEB1: 172.31.15.59:80 WEB2: 172.31.15.94:80 WEB3: 172.31.15.24:80
服務器用lnmp一鍵安裝,自帶的conf配置已經配置好一切了。
下面是完整的配置文件。
/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;#處理接收的數據類型 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處理均衡負載 upstream static.homeway { server 172.31.15.24:80; } upstream homeway { # ip hash主要是對ip處理下,讓下次訪問時候,還是訪問當前服務器,這樣就不會導致session丟失 ip_hash; # weight權重,配置訪問概率 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; } # 靜態文件可以用CDN處理,本例子指向WEB3 location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ { proxy_pass http://static.homeway; } # 通過均衡負載服務器指向WEB1、WEB2 location / { proxy_pass http://homeway; #使用后端的web服務器 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負載均衡算法。如果沒加這條指令,nginx會使用默認的round robin負載均衡模塊,那么,你每次訪問的服務器可能會不同,導致session丟失,一直要重新登錄。
關于upstream的源碼分析,可以去看 tengine的介紹 http://tengine.taobao.org/book/chapter_05.html
重啟服務器下。
/root/lnmp restart
搞定了,確定WEB1,WEB2,WEB3可以正常訪問就行了。
這樣,假設,我在WEB1的web目錄下放一個 fuck.php, WEB2不放,那么。當我訪問http://172.31.19.122時候,就會有時候404,有時候返回正常頁面,這就表示成功了。
這個在目前不能做,因為無法做多用戶并發訪問,就算模擬器模擬效果也不能達到多用戶并發的強度。
Nginx的幾個優點:
Nginx工作在網絡的7層,所以它可以針對http應用本身來做分流策略,比如針對域名、目錄結構等,相比之下LVS并不具備這樣的功能,所以Nginx單憑這點可利用的場合就遠多于LVS了;但Nginx有用的這些功能使其可調整度要高于LVS,所以經常要去觸碰觸碰,觸碰多了,人為出問題的幾率也就會大。
Nginx現在作為Web反向加速緩存越來越成熟了,速度比傳統的Squid服務器更快,可以考慮用其作為反向代理加速器。
Nginx對網絡穩定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢之一。
接下來會寫關于KeepAlive+HAProxy實踐教程。
本文出自 夏日小草,轉載請注明出處:http://homeway.me/2014/12/05/nginx-reverse-proxy-to-load-balance/-by小草
2014-12-05 17:12:26
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/39100.html
摘要:反向代理負載均衡虛擬主機配置通過本章你將學會利用配置多臺虛擬主機,清楚代理服務器的作用,區分正向代理和反向代理的區別,搭建使用反向搭理和負載均衡,了解常用配置的說明。最重要的是反向代理,負載均衡。 Nginx 反向代理 負載均衡 虛擬主機配置 通過本章你將學會利用Nginx配置多臺虛擬主機,清楚代理服務器的作用,區分正向代理和反向代理的區別,搭建使用Nginx反向搭理和負載均衡,了解N...
摘要:注意本篇文章為負載均衡的理論篇后續找個機會推出實戰篇。理論篇主要講述如何配置負載均衡配置負載均衡不難。常用的狀態有,表示當前的暫時不參與負載均衡。注,當負載調度算法為時,后端服務器在負載均衡調度中的狀態不能是和。 注意,本篇文章為負載均衡的理論篇,后續找個機會推出實戰篇。理論篇主要講述如何配置負載均衡,配置負載均衡不難。但實戰中要要注意幾個點,比如如何做到多服務器之間的數據共享(ses...
摘要:負載均衡嚴格來說,僅僅是作為反向代理的使用的,但是因為這個反向代理功能表現的效果是負載均衡機器的效果,因此負載均衡是特殊的反向代理。 反向代理 反向代理指的是以代理服務器接收用戶的的訪問請求,代理用戶向內部服務器重新發起請求,最后把內部服務器的響應信息返回給用戶。這樣,代理服務器對外就表現為一臺服務器,而訪問內部服務器的客戶端用的就是代理服務器,而不是真實網站訪問用戶。 為什么使用反向...
摘要:是的默認負載均衡策略。一致性哈希負載均衡。所以負載均衡是分布式系統架構設計中必須考慮的因素之一。考慮主要是如何讓下游接收到的請求是均勻分布的第層客戶端層反向代理層的負載均衡。通過輪詢第層反向代理層層的負載均衡。 一、 什么是負載均衡? 什么是負載均衡? 記得第一次接觸 Nginx 是在實驗室,那時候在服務器部署網站需要用 Nginx 。Nginx 是一個服務組件,用來反向代理、負載平衡...
閱讀 1268·2023-04-26 01:38
閱讀 1469·2021-11-15 11:39
閱讀 3259·2021-09-22 15:43
閱讀 2653·2019-08-30 15:55
閱讀 2057·2019-08-30 14:17
閱讀 2859·2019-08-29 14:16
閱讀 3071·2019-08-26 18:36
閱讀 2616·2019-08-26 12:19